2014-10-02

20141002

ASUS USB-N10 Nano 在Debian上的驅動方式


https://wiki.debian.org/rtl819x
晶片是realtek的rtl8192cu,但按wiki上步驟操作還是無法使用。
dwa130_revC_drivers_linux_006.zip也不能下載。


又爬了很多資料,試了很多種方法,總算成功了。

firmware-realtek包的rtl8192cu.ko這個module是可以用的。

但要自己加入一個module.conf
/etc/modprobe.d/rtl8192.conf

#enable hotplug via modprobe
#udev asks modprobe for special modalias, so load appropriate module and then add new device id
#{vendor ID} and {product ID} must be in upper case
# for ASUS USB-N10 NANO v0B05p17BA

alias usb:v0B05p17BAd*dc*dsc*dp*ic*isc*ip* rtl8192cu
install rtl8192cu /sbin/modprobe --ignore-install rtl8192cu ; echo "0b05 17ba" > /sys/bus/usb/drivers/rtl8192cu/new_id

# Workaround for dropping connections because of power save
options rtl8192cu rtw_power_mgnt=0 rtw_enusbss=0

實測後,wheezy、jessie都是這樣做。
從購買到能用為止,超過7天,要是真的不支援大概也不能退貨了。

2014-08-12

20140812

RT-N18U的pppoe-relay又找出了一種方法 。
是從Asus原廠的F/W撈出來的,步驟如下:

mount -o loop,offset=1647084 RT-N18U_3.0.0.4_374_4983-g18ff1de.trx /mnt
scp /mnt/usr/sbin/pppoe-relay root@192.168.1.1:/jffs


以上我是在Linux上操作所以能用scp,Windows使用者就直接用putty登入N18U的SSH:

cd /jffs
wget https://googledrive.com/host/0BwylkZYAMmIWcmZwcnBVcHRfRmM/pppoe-relay
之後就和RT-N16的pppoe-relay一樣,Tomato開機時讓他執行這行scripts
sleep 10 && /jffs/pppoe-relay -S vlan2 -C br0


offset的值是參考trx header
http://wiki.openwrt.org/doc/techref/header


2018-02-20更新:
因Google把直連的功能拔掉
請需要的人自行下載並想辦法用putty上傳
(記得是只要把檔案拖進視窗內)
https://drive.google.com/open?id=0BwylkZYAMmIWTDlNWGdIRUxuMEk

2014-08-08

20140808

loop mount是我很喜歡的功能,RT-N18U的chroot要這樣用也行。
改成磁碟映像檔的話,隨身碟也就沒有一定要用ext4的限制。
用fat32也可以的話,那隨便找一個贈品的2G~4G隨身碟就很堪用了。


Tomato的啟動script要修改成這樣的內容:
sleep 5
mkdir /tmp/loop
mount /dev/sda1 /tmp/mnt
mount /tmp/mnt/wheezy_armel.img /tmp/loop
/tmp/mnt/mount_this.sh


把檔案給有興趣但平常不使用Linux的朋友,也當成自己的異地備份。

"下載"

解開壓縮檔後,將chroot_to_bash.sh、mount_this.sh、umount_this.sh、wheezy_armel.img這四個檔案置於隨身碟的根目錄下。
USB裝上RT-N18U後,重啟就完成了。
 
放上來的版本只有打開了pppoe-relay。
SSH開啟後能以root/root登入,locale是zh_TW.UTF-8。
但port 22要在內建的dropbear和chroot debian的SSH之中選一個。
我是改掉dropbear的port,甚至還可以去WebUI想用再打開來節省資源。
裏面沒植入什麼怪東西,前面也有debootstrap的方法可以自己客製化。


還在用RT-N16時,pppoe-relay都放在/JFSS裏。
每次想刷新版軔體時,還要先清掉才能刷,以後大概都這樣用了吧。

2014-08-05

20140805

RT-N18U開機後掛載隨身碟

sleep 5
mount /dev/sda1 /mnt
/mnt/mount_this.sh
chroot後執行/etc/rc.local
需要啟動的服務丟到rc.local中
/tmp/mnt/mount_this.sh
#!/bin/sh

if [ -d /mnt/wheezy_armel ]; then
mount --bind /proc /mnt/wheezy_armel/proc
mount --bind /dev/pts /mnt/wheezy_armel/dev/pts

chroot /mnt/wheezy_armel /etc/rc.local

fi
/etc/rc.local (/tmp/mnt/etc/rc.local)
#!/bin/sh -e
#
# rc.local
#
service ssh start

pppoe-relay -S vlan2 -C br0
exit 0

2014-08-03

20140803

之前就發現這情形了,不過一直沒去找解法。
想要開機預設不啟動X,讓使用者自己執行startx。

如果是搜尋到更早之前的文章,或許會叫你去改/etc/inittab。
開機進入runlevel 3,而不是runlevel 5,但這作法已經不能用好幾年了。

Wheezy:
修改/etc/default/grub
#GRUB_CMDLINE_LINUX_DEFAULT="quiet splash init=/bin/systemd"
GRUB_CMDLINE_LINUX_DEFAULT="text init=/bin/systemd" 
加入text參數後,update-grub。
但不曉得在哪次更新後,這方法在Jessie上不能用了。

Jessie:
修改/etc/default/grub
#GRUB_CMDLINE_LINUX_DEFAULT="quiet splash init=/bin/systemd"
GRUB_CMDLINE_LINUX_DEFAULT="3 init=/bin/systemd" 

但剛剛試了一下,Wheezy還是只能用text參數。
給"ro 3 init=/b…"這樣的參數,一樣會進X,而且runlevl =3。
而"ro text init=/b…"這樣的參數,不會進X,runlevl =5。

唉,不能有個一致、不變一點的做法嗎?

2014-07-29

20140729

RT-N18U的處理器改用Cortex A9(ARMv7)的BCM47081,而不是原本的MIPS。
就沒辦法使用mipsel的pppoe-relay,做了一些研究。
可以用chroot的方式在N18U上跑debian,直接用debian裏面的pppoe-relay。


Desktop上的操作:
準備隻空的隨身碟,fs我是用ext4,mount到/mnt或其他你喜歡的地方。
debootstrap --arch=armel --foreign wheezy /mnt http://free.nchc.org.tw/debian

等流程跑完,debootstrap的前置準備就完成了。

將隨身碟mount到N18U的/mnt之後的操作:
mount /proc /mnt/proc -t proc
chroot /mnt /debootstrap/debootstrap --second-stage

切換到chroot環境下:
chroot /mnt /bin/bash

順便修改一下sources.list
deb http://free.nchc.org.tw/debian/ wheezy main
deb http://security.debian.org/ wheezy/updates main


apt-get update;apt-get install pppoe
pppoe-relay -S vlan2 -C br0 
測試撥號連線,能做到這邊應該就會成功了。

2014-07-28

20141728

上週購買了ASUS的無線分享器RT-N18U
並當了革命先烈,勇氣十足的刷了Tomato Shibby K26ARM下去。
http://tomato.groov.pl/download/K26ARM/
購買時已經是121版,為了方便,我借用家人的筆電來進行刷機。
但忘了他設定成5分鐘沒進行操作就進入休眠,按下更新軔體之後人離開了一下。
回來看到螢幕是黑的才想起來這件事情,悲劇啦!

所以若是在正常的流程下,N18U刷起Tomato會不會有這些怪問題,不太清楚。

救援的過程:
設定電腦的IP為
IP address  192.168.1.X
Subnet mask  255.255.255.0
Gateway  192.168.1.1

按下reset鍵不放並開啟電源,見Power燈號持續閃動後即可放開。
即進入所謂救援模式,可以用TFTP、ASUS的工具程式上傳軔體。
此時似乎還會有一個CFE miniweb server介面會開啟,我是沒有用這個。


奇怪的現象1:
刷入Tomato Shibby K26ARM之後,連不上WEB UI做管理的動作。
一度以為機器已經磚了…
死馬當活馬醫,試著刷回原廠軔體,結果是正常的。
不信邪再刷Shibby,依舊連不上WEB UI,但發現ping N18U是有回應的。
試著telnet進去,預設使用者密碼為root/admin,這httpd好像沒有啟動阿。
執行httpd -p 80後,能進WEB UI了。

清除NVRAM裏面全部資料!
清除NVRAM裏面全部資料!
清除NVRAM裏面全部資料!

很重要所以要講三次。

清除NVRAM後重啟機器,httpd也正常自動啟動了。


奇怪的現象2:
Bandwidth Monitor和 IP trafic的部份不會有紀錄。
但Shibby的change log上說有修好。

奇怪的現象3:
想啟用jffs,格式化後顯示錯誤,但重啟後能用。


結論:
K26ARM目前能用了。
RT-N18U訊號比RT-N16強一點點。

2014-07-20

20140720

mt-daapd → forked-daapd
最近才曉得這個也很久沒更新的forked-daapd,forked也被fork了。
fork的新版本據說支援了AirPlay、iOS Device Remote、Album Art。
Debian還在testing分支裏,裝在server上的wheezy還是0.19的stable。
但看到wheezy-backports有到最新的21.0,就裝來玩玩看。


AirPlay:
由於沒有出門添購AirPort Express,AirPlay我只能用Shairport來試。
感覺音質沒有特別好,總之是有聲音的。

Remote:
自己編輯.remote檔,把Device Name和pin code寫在裏面。
放到daapd的音樂庫位置就能連上線。
之後就會紀錄在songs3.db裏,該remote檔可以刪除。
Server上沒有音效卡,snb-dummy不能用,只能用AirPlay的方式播放。
把snb-dummy加到/etc/modules後。
在還沒連接AirPlay時,Remote點選播放只會一直鬼打牆式的退出。
看了log只講說找不到dummy.pcm。
把daapd user加到audio群組重開也沒有用。
參照了這邊內容新增一個/etc/asound.conf,問題解決。

https://github.com/jasonmc/forked-daapd/issues/17
以上是於沒有音效卡的home server


在有音效卡的desktop上我也測試成功了,把daapd user加到audio群組就好。


Album Art:
有些專輯封面能顯示出來,有些則沒有 。
沒顯示出封面的音樂共通點,都是在我買了iPhone這一年之間用iTunes 11轉出來的…
所以用了mp3Tag這套軟體來研究。

好幾種ID3Tag的內容
只有iTunes轉出來的是ID3V2.2,其他都是ID3V2.3。
結果用mp3Tag寫入過一次Tag的音樂就全都能顯示了orz。
  

 

2014-06-03

20140603

libvirt對vmdk格式的磁碟映像檔效能很差,而VirtualBox沒有支持raw格式。需要在虛擬機器上使用USB裝置時,libvirt始終抓不到,還是要換成VirtualBox來操作。


最後決定轉成vdi試試
$ VBoxManage convertdd win7.img win7.vdi --format VDI

轉換成vdi後的效能,libvirt及VirtualBox體感上都可以接受。

2014-03-13

20140313

debian用ssh登入後,motd會顯示出uname。
我都是desktop用debian stable,home server用ubuntu LTS。
最近把home server從ubuntu改成debian才知道。

/etc/init.d/motd
do_start () {
# Update motd
uname -snrvm > /var/run/motd.dynamic
}



http://forums.debian.net/viewtopic.php?f=5&t=85822

2014-03-07

20140307


Linux和Windows多重開機,甚至是在一台PC中裝了好幾個Distro的、系統使用SSD、有另外專門存放資料的HDD。Nautilus這些檔案總管的邊欄能直接顯示出其他分割區,並實現自動掛載的機制。沒有寫進fstab的分割區,要掛載時會問密碼。以前是直接自己手動去修改/usr/share/polkit-1/actions/下的udisks/udisk2的設定檔

將紅色部份修改:

filesystem-mount-system-internal">

<defaults>
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>yes</allow_active>
</defaults>


如果udisk更新更改到設定檔,那又要輸入密碼才能掛載,後來才知道有比較正式的作法,紀錄如下:

在/etc/polkit-1/localauthority/50-local.d/之下,建立50-filesystem-mount-system-internal.pkla,檔名可隨意。
[Mount a system-internal device]
Identity=*
Action=org.freedesktop.udisks.filesystem-mount-system-internal
ResultActive=yes
有些Distro用udisks2來自動掛載的,則類似這樣
[Mount a system-internal device]
Identity=*
Action=org.freedesktop.udisks2.filesystem-mount-system
ResultActive=yes
會把USB裝置掛載到/media/{Lable}或是/media/{UUID}的是udisks
掛載到/media/{user}/{Lable}或是/media/{user}/{UUID}的是udisks2
此pkla新增後立即生效,不用重新登入。


但這樣一來出現一個問題。有時不小心點擊到Nautilus的邊欄,就自動掛載了。於是將不想被掛載的分割區隱藏起來,真的需要時自己再開啟終端機手動掛載。

在/etc/udev/rules.d/下新增99-hide-partitions.rules
udisks時的內容:
KERNEL=="sda1", ENV{UDISKS_PRESENTATION_HIDE}="1" KERNEL=="sda2", ENV{UDISKS_PRESENTATION_HIDE}="1"
udisks2時的內容:
KERNEL=="sda1", ENV{UDISKS_IGNORE}="1"
KERNEL=="sda2", ENV{UDISKS_IGNORE}="1"
rules新增後執行
udevadm trigger
不需要重新登入,立即生效。