之前看到過一篇文章《TL-WR703N刷PulseAudio固件實(shí)現(xiàn)偽AirPlay》,但那畢竟是“偽”的,于是就想著實(shí)現(xiàn)真正的AirPlay播放,借助于強(qiáng)大的Google和自己不懈的努力測試,終于算是完成了,這里分享給大家。
要實(shí)現(xiàn)的目標(biāo):wr703n有線口用來連接電腦進(jìn)行安裝調(diào)試,完成之后不再使用,wr703n通過無線連接家里已有的無線網(wǎng)絡(luò),iPad也在同一無線網(wǎng)絡(luò)內(nèi),可以AirPlay到wr703n實(shí)現(xiàn)音頻輸出。
下面開始安裝,用網(wǎng)線把電腦和wr703n連接起來,把電腦的IP設(shè)置為192.168.1.2,開始操作。
1、如果是原廠固件,直接用openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin升級
2、如果已經(jīng)是Openwrt,那么在Openwrt下恢復(fù)固件:
#cd /tmp
#mtd -r write openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.binfirmware
刷完重啟之后,通過telnet192.168.1.1來登錄,更改密碼passwd,退出,以后就可以用ssh來登錄了。
接下來我們做些準(zhǔn)備工作,首先修改opkg的更新源為本地服務(wù)器。
#vi /etc/opkg.conf
把第一行和最后一行注釋掉,再添加一行
因?yàn)閣r703n只有4M空間,無法安裝所需要的軟件,所以我們要把系統(tǒng)掛載到U盤上,依次執(zhí)行下列命令,這里會把U盤格式化成ext4文件系統(tǒng)。
#mke2fs -j /dev/sda
#mount /dev/sda /mnt
#mkdir /tmp/root
#mount -o bind / /tmp/root
#cp /tmp/root/* /mnt -a
#umount /tmp/root
完成后,修改/etc/config/fstab文件的相應(yīng)字段,其他字段不動,讓系統(tǒng)啟動自動掛載。
config mount
option target /
option device /dev/sda
option fstype ext4
option options rw,sync
option enabled 1
option enabled_fsck 0
執(zhí)行如下命令讓其開機(jī)生效
#/etc/init.d/fstab enable
reboot重啟,df -h看根分區(qū)容量是不是變大了,這樣就成功把系統(tǒng)掛載到u盤上了。
現(xiàn)在我們要把wr703n連接到家里的無線網(wǎng),這里貼出/etc/config/network和wireless文件的例子,請根據(jù)實(shí)際情況自行修改。
#vi /etc/config/network
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config interface 'lan'
option ifname 'eth0'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask'255.255.255.0'
config interface 'wlan'
option proto 'dhcp'
option hostname'ShairPort'
#vi /etc/config/wireless
config wifi-device radio0
option type mac80211
option channel auto
option macaddr 38:83:45:36:41:42
option hwmode 11ng
option htmode HT20
list ht_capab SHORT-GI-20
list ht_capab SHORT-GI-40
list ht_capab RX-STBC1
list ht_capab DSSS_CCK-40
config wifi-iface
option device radio0
option network wlan
option mode sta #無線的模式,不要選錯
option ssid Tomato #家里無線網(wǎng)絡(luò)的SSID名稱,根據(jù)實(shí)際情況修改
option encryption psk2 #加密方式,根據(jù)對端來選擇,建議使用WPA2/AES
option key 12345678 #無線連接密碼,根據(jù)實(shí)際情況修改
修改完成之后就可以重啟網(wǎng)絡(luò)了/etc/init.d/network restart,然后執(zhí)行ifconfig,看看wlan0口是否已經(jīng)獲取到IP地址了。
下面我們安裝一下USB聲卡和聲音控制的組件
#cd /tmp
#opkg update
#opkg install kmod-usb-audio
#ls /dev #顯示audio、dsp表示聲卡安裝成功
#opkg install alsa-utils
#alsamixer #圖形界面調(diào)節(jié)音量, 用上下箭頭調(diào)節(jié),調(diào)節(jié)音量至合適大?。ńㄗh30)
需要注意的是如果音量最大會出現(xiàn)單聲道和爆音的情況,而且Openwrt每次重啟之后聲卡默認(rèn)音量都是最大聲,所以我們需要設(shè)置開機(jī)自動減小音量。
#vi /etc/rc.local在exit 0之前添加一行
amixer set PCM 30% #讓聲卡音量為30%,防止單聲道和爆音
這里的PCM要根據(jù)實(shí)際情況修改,運(yùn)行amixer可以列出當(dāng)前有哪些聲卡
然后開始正式安裝ShairPort模擬Airplay
#opkg install shairport
#opkg install shairport-perl
安裝完成之后,我們需要修改/usr/bin/shairport.pl文件的第52行為如下內(nèi)容,或者可以自己定義名字:
my $apname = "ShairPort";
修改/etc/init.d/shairport文件
#!/bin/sh /etc/rc.common
START=49
start() {
perl /usr/bin/shairport.pl -D
}
stop() {
killall perl
}
把其中的START=49 改為69,也就是保證在dbus和avahi-daemon啟動之后再啟動shairport
iPad上的音樂采樣率是44.1KHz,創(chuàng)建一個ALSA配置文件,將采樣率從48KHz降低到44.1KHz,使聲音不會“顫抖”:
#touch /etc/asound.conf
#vi /etc/asound.conf
寫入以下內(nèi)容:
defaults.pcm.dmix.rate 44100 # Force 44.1 KHz
defaults.pcm.dmix.format S16_LE # Force 16 bits
最后我們設(shè)置開機(jī)啟動
#/etc/init.d/dbus enable
#/etc/init.d/avahi-daemon enable
#/etc/init.d/shairport enable
reboot重啟,等到wr703n的燈不再閃爍的時候,打開iPad,看看Airplay目標(biāo)里有沒有多一個”ShairPort”,打開音樂,享受音樂吧!