Wednesday 6 August 2014

Cubieboard2 with Logitech Squeezebox Media Server 入箱

成功做左部給 SBR 的 music server, 又証實左聲音有正面改善, 下一步就係做一個箱將佢放入去.

之前是 Cubieboard2 + 2.5" WD notebook 5400rpm hard disk + 150Mbps Wi-Fi USB dongle, 用一隻5V LPS供電. 手上多出一隻54VA O-shape 7N toroidal transformer. 有四組輸出. 打算用它:
5V -> Cubieboard
5V -> WD hard disk
5V -> Wi-Fi dongle

將本來一個 5V 供電打成3組, 音色應該可以些.
這次也用了之前用過的 NCP565 1.2V LDO (7485271), 不過是 D2PAK 和 3.3V (7852432)

只要用LED把 GND lift 起2V左右. 我用的 LED 比 Zener 好的是它可以有低至1.8V-2.2V 的 forward voltage (depends on current and LED model. For detail please refer to datasheet). 我可以不用找 2V 的 Zener.

開了的情況

供電是最簡單的 setup. 獨立3組 secondary winding 給Wi-Fi, hard disk & CB2

Power button 也引到箱尾方便 force power on / off.


USB 引線到箱尾. 另外, 箱內有 USB DDC 共用. 果 part 未整好.




相關Blog文:
摩改 Squeezebox Duet Receiver (上)
摩改 Squeezebox Duet Receiver (中)
摩改 Squeezebox Duet Receiver (下)
不用 Squeezebox Duet Controller 的方法 - Net::UDAP - SqueezeBox Receiver configuration tool

Monday 4 August 2014

Squeezebox Receiver / Touch 直駁 LMS (Logitech Media Server)

個多月前在Review33上見到Welborne兄話用 SB Touch 直駁 NAS 再用搖控選歌比經 wi-fi router 接駁好聲云云. 我看到後, 信會好, 但我心中即時有個問號: "好幾多?"

因為我信係會好, 只係好多少的問題, 既然我本身有隻 Cubieboard2 係度, 佢有 SATA port, 又夠簡單, 用嚟做 LMS 加隻 wifi dongle 俾 iPad 接入應該可以做到:

iPad (iPeng) <-> CB2 (LMS) <-> SBR (player)
就咁諗都可行, 於是就開工....

雖然諗就好似好簡單, 但原來執行上嚟有好多問道:
1. CB2 我係行緊 Voyage MPD (w/RT kernel), 但無LMS. 我要先學習如何在 Voyage Linux 上安裝 LMS
2. CB2 加 Wi-Fi USB dongle 不知如何攪. 已知係, 我的 Wi-Fi USB dongle 是 Realtek chip, 我以前 build RT kernel 時已經加入左 Realtek Wi-Fi chip 的 module, 所以 driver 應該是無問題的. 只是 Wi-Fi 的設定是個未知素.


在開始安裝前, 先接上一隻 hard disk, 並在 /etc/fstab 中加入 mount point 的動作, 例如:
mkdir -p /mnt/sata
echo "/dev/sda1 /mnt/sata ntfs defaults,noatime,ro,nls=utf8 0 0" >> /etc/fstab
試一試:
mount /media/sata
ls /media/sata
你也可以安裝 NFS / CIFS services, 把 mount point 設定成 read/write, 這樣以後加減歌可以經 network.


1. 安裝 LMS
不斷的 google, 試, 攪左兩三個星期, 我終於做到了, 原來因為 CB2 同 Rapsberry Pi 硬件上係好近似, 所以其實只要用番 LMS for Pi 的 setup 便可:

Reference: http://allthingspi.webspace.virginmedia.com/lms.php

以上的是 copy-and-paste 自上面的網頁:
"1. Update some stuff and install some libraries. If you are prompted to reboot your Pi after this step, type reboot and hit enter.
sudo apt-get update && sudo apt-get dist-upgrade
sudo apt-get install libjpeg8 libpng12-0 libgif4 libexif12 libswscale2 libavcodec53
2. Download Logitech Media Server and install.
wget http://downloads.slimdevices.com/LogitechMediaServer_v7.7.2/logitechmediaserver_7.7.2_all.deb
sudo dpkg -i logitechmediaserver_7.7.2_all.deb
3. Stop the Logitech Media Server service.
sudo service logitechmediaserver stop
4. Download and extract some files used for this how-to guide to save you having to build everything yourself.
wget http://allthingspi.webspace.virginmedia.com/files/lms-rpi-raspbian.tar.gz
tar -zxvf lms-rpi-raspbian.tar.gz
5. Patch the bootstrap perl module.
sudo patch /usr/share/perl5/Slim/bootstrap.pm lms-rpi-bootstrap.patch
6. Move some files into place, create symbolic links, refresh dynamic linker bindings.
sudo mv arm-linux-gnueabihf-thread-multi-64int /usr/share/squeezeboxserver/CPAN/arch/5.14/
sudo mv libmediascan.so.0.0.0 libfaad.so.2.0.0 /usr/local/lib
sudo mv /usr/share/squeezeboxserver/Bin/arm-linux/faad /usr/share/squeezeboxserver/Bin/arm-linux/faad.old
sudo mv faad /usr/share/squeezeboxserver/Bin/arm-linux
sudo ln -s /usr/local/lib/libmediascan.so.0.0.0 /usr/local/lib/libmediascan.so
sudo ln -s /usr/local/lib/libmediascan.so.0.0.0 /usr/local/lib/libmediascan.so.0
sudo ln -s /usr/local/lib/libfaad.so.2.0.0 /usr/local/lib/libfaad.so
sudo ln -s /usr/local/lib/libfaad.so.2.0.0 /usr/local/lib/libfaad.so.2
sudo ldconfig
7. Fix some permissions.
sudo chown -R squeezeboxserver:nogroup /usr/share/squeezeboxserver/
8. Start the Logitech Media Server service.
sudo service logitechmediaserver start
Point your browser at "http://<pi ipaddress here>:9000" and configure the Logitech Media Server. After this you should be able to connect with a player, or if you want to use the same Pi to play the music as well as serve it, continue on........."

我不會安裝 squeezelite 因為不打算USB出DAC/DDC.

2. 設定 Wi-Fi
又攪左好耐(2星期), 最後發現原來 Voyage Linux 本身已經做好晒. 只要將 Wi-Fi dongle 插入, 再把想做的 setting 在 /etc/network/interfaces 中 uncomment 了, 再執行 service networking restart 便可.

做 Wi-Fi 的設定有好多好多種, 我會建議以下兩種二選一

2.1 Ad-hoc mode
Wifi ad-hoc mode 意思係建立一個小型 Wi-Fi network 作共享模式. 好處係簡單 setup, 壞處係 iPad 加入了 ad-hoc network 後便不能上網, 因為 ad-hoc 的機 (CB2 和 iPad) 都沒有接上 router network, 所以不能出 Internet.

如打算做 ad-hoc mode, 你的 interfaces file (/etc/network/interfaces) 的設定可以如下:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
  address 192.168.1.8
  netmask 255.255.255.0
  broadcast 192.168.1.255
#
# As ad-hoc
#
auto wlan0
iface wlan0 inet static
  address 10.1.10.1
  netmask 255.255.255.0
  broadcast 10.1.10.255
  up iwconfig wlan0 essid voyage-adhoc mode Ad-hoc

eth0 便是 (有線) LAN 的 interface. 這個用的 IP address 和 subnet 要和 SBR 一致. 如果你的 SBR 設定了 static IP, 咁你不用開 DHCP server. 但如果你的 SBR 是使用 dynamic IP, 咁你要在 CB2 上開啟 DHCP server. (DHCP server setup 會在下面提到)

wlan0 因為是 adhoc network, 它和其他 join 左這 adhoc network 的機 (如 iPad) 都一係要用 fix IP, 一係要有一個 DHCP server 派 IP. 請留意.

做了以上的設定, reboot / restart networking service 便可在 iPad 上見到有個 "voyage-adhoc" 的 ad-hoc network, 接上後再開 iPeng 便會見到 SBR.

2.2 Wi-Fi client mode
Wi-Fi client mode 意思係把 Wi-Fi dongle connect 到你家中已有的 Wi-Fi network. 這個的好處係你的 iPad 可以上網, 但因為把 Wi-Fi dongle 接到家中 Wi-Fi network, 在同一個 network 中多了 traffic, 對 CB2 的 Wi-Fi interface 的工作一定較多, 會有影響但未必聽得出.

如打算做 Wi-Fi client mode, 你的 interfaces file (/etc/network/interfaces) 的設定可以如下:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
  address 10.1.20.1
  netmask 255.255.255.0
  broadcast 10.1.20.255
auto wlan0
iface wlan0 inet static
  address 192.168.1.98
  netmask 255.255.255.0
  broadcast 192.168.1.255
  wpa-driver wext
  wpa-ssid {see_below}
  wpa-ap-scan 1
  wpa-proto RSN
  wpa-pairwise CCMP
  wpa-group CCMP
  wpa-key-mgmt WPA-PSK
  wpa-psk {see_below}
我的家是用 WPA2 的, 如果你的不是 WPA2, 請自行選擇合適的 WPA setting (在 /etc/network/interfaces 中把合適的 WPA setting  uncomment 便可.

"wpa-ssid" 填上你的 SSID
"wpa-psk" 要填上一個已經 encrypt 的 Wi-Fi 密碼, 你要打這個 linux command 去取得適合你家 network 的密碼:

wpa_passphrase MYSSID passphrase

例如你家的 network SSID 是 "my_wifi", Wi-Fi 密碼 (passphrase) 是 "password1234". 這樣便輸入

wpa_passphrase my_wifi password1234

再把它回來的字串貼在 "wpa-psk" 後面.

3. DHCP Server
原來開一個獨立 network 給 LMS <-> SBR 是需要有 DHCP server. 好在 Voyage Linux 本身已經有了一個小型 DHCP server service, 不過沒有啟動, 只要做以下的設定便可:

vi /etc/dnsmasq.more.conf
入到去會見到已經有一些不同的 interface 定了不同的 IP subnet 作為一旦開放 DHCP service 時的參考.
#dhcp-range=wlan0,10.1.10.10,10.1.10.250,24h
#dhcp-range=eth1,10.1.20.10,10.1.20.250,24h
#dhcp-range=eth2,10.1.30.10,10.1.30.250,24h
#dhcp-range=eth3,10.1.40.10,10.1.40.250,24h
dhcp-leasefile=/var/tmp/dnsmasq.leases

只要把你想要開 DHCP server 的 interface uncomment 左便可. 當然要留意 IP subnet 是否跟你在 /etc/network/interfaces 中的定義一至. 否則也會不能接上.

例如你想把 eth0 設定成有DHCP service, subnet 用 192.168.1.x, wlan0 也要有 DHCP servcice, subnet 用 10.1.20.x, 咁可以:
dhcp-range=eth0,192.168.1.10,192.168.1.250,24h
dhcp-range=wlan0,10.1.20.10,10.1.20.250,24h
dhcp-leasefile=/var/tmp/dnsmasq.leases

Reboot, or re-start dnsmasq 便可.

Reference: http://svn.voyage.hk/repos/voyage/branches/voyage-live/0.9.2/config/includes.chroot/README

相關Blog文:
Cubieboard2 with Logitech Squeezebox Media Server 入箱
摩改 Squeezebox Duet Receiver (上)
摩改 Squeezebox Duet Receiver (中)
摩改 Squeezebox Duet Receiver (下)
不用 Squeezebox Duet Controller 的方法 - Net::UDAP - SqueezeBox Receiver configuration tool

Sunday 3 August 2014

不用 Squeezebox Duet Controller 的方法 - Net::UDAP - SqueezeBox Receiver configuration tool

要設定 Squeezebox Duet Receiver (SBR), 本來是需要用它的 Controller (下圖右方的):

現在有了 iPad + iPeng, 基本上我們也不會用 Squeezebox Duet Controller (SBC). 可是, 若要 reset SBR, 因為 SBR 是沒有輸入和畫面的, 令 SBC 成為必須...

不過, 其實網上早已有人做了一個 Perl 程式可以做到SBC相同的設定工作:

http://forums.slimdevices.com/showthread.php?57861-Net-UDAP-SqueezeBox-Receiver-configuration-tool

這個對不太熟識 Perl 程式是不太易用. 於是, 有有另一熱心網友做了一個 MS-Windows executable 把需要的 Perl library 都包裝成一個獨立的 executable. 只要你下載它便可在 MS Windows 上運行. 我在我的 Windows 7 (64 bit) 也能正常使用:

http://forums.slimdevices.com/showthread.php?57861-Net-UDAP-SqueezeBox-Receiver-configuration-tool&p=453478#post453478

更好的是, 作者把使用說明也詳細列出:
https://projects.robinbowes.com/Net-UDAP/trac/wiki/SampleUsage

舉例, 你想 reset 你的 SBR, 只要插住供電, 長按5秒直至它慢閃紅燈便可打開上面的程式.

如果你的NAS 是 192.168.1.150, 你想 SBR 用DHCP 取得IP address, 只要打以下的command 便可.
discover
conf 1
set interface=1 lan_ip_mode=1 squeezecenter_address=192.168.1.150
save_data
reset

相關Blog文:
摩改 Squeezebox Duet Receiver (上)
摩改 Squeezebox Duet Receiver (中)
摩改 Squeezebox Duet Receiver (下)
Squeezebox Receiver / Touch 直駁 LMS (Logitech Media Server)
Cubieboard2 with Logitech Squeezebox Media Server 入箱


原文:

Sample Usage

This page gives examples of how to use Net-UDAP.
Generally, you should be able to take one of these commands, change some values to match your own environment (SqueezeCenter address, wireless network details, etc.) and use them to configure your SqueezeBox.
The examples make the following assumptions:
  • your SqueezeBox has been factory reset before beginning
  • you have only one SBR to configure, ie. you will use conf 1 to select it.
  • my SqueezeCenter instance is on 192.168.1.150
  • I am in the UK, so I use wireless region id 14
  • my wireless network name (SSID) is mySSID

Configuration Fragments

Connect to SqueezeNetwork

set server_address=0.0.0.1

Wired Network

set interface=1

Wireless Network

set interface=0

Static IP

set lan_ip_mode=0

DHCP

set lan_ip_mode=1

WEP 64-bit

set wireless_SSID=MySSID wireless_mode=0 wireless_region_id=14 wireless_wep_on=1 wireless_keylen=0 wireless_wep_key_0=1a2b3c4d5e

WEP 128-bit

set wireless_SSID=MySSID wireless_mode=0 wireless_region_id=14 wireless_wep_on=1 wireless_keylen=1 wireless_wep_key_0=112233445566778899aabbccdd

WPA 1

set wireless_SSID=MySSID wireless_mode=0 wireless_region_id=14 wireless_wpa_on=1 wireless_wpa_mode=1 wireless_wpa_psk="Top Secret!"

WPA 2, TKIP+AES

set wireless_SSID=MySSID wireless_mode=0 wireless_region_id=14 wireless_wpa_on=1 wireless_wpa_mode=2 wireless_wpa_cipher=3 wireless_wpa_psk="Top Secret!"

Complete Examples

Wired, DHCP

discover
conf 1
set interface=1 lan_ip_mode=1 squeezecenter_address=192.168.1.150
save_data
reset

Wired, static IP

discover
conf 1
set interface=1 lan_ip_mode=0 lan_gateway=192.168.3.1 lan_network_address=192.168.3.10 lan_subnet_mask=255.255.255.0 primary_dns=192.168.3.1 squeezecenter_address=192.168.1.150
save_data
reset

Wireless, 64-bit WEP, DHCP

discover
conf 1
set interface=0 wireless_mode=0 wireless_region_id=14 wireless_SSID=MySSID wireless_wep_on=1 wireless_keylen=0 wireless_wep_key_0=1a2b3c4d5e lan_ip_mode=1 squeezecenter_address=192.168.1.150
save_data
reset

Wireless, 64-bit WEP, static IP

discover
conf 1
set interface=0 wireless_mode=0 wireless_region_id=14 wireless_SSID=MySSID wireless_wep_on=1 wireless_keylen=0 wireless_wep_key_0=1a2b3c4d5e lan_ip_mode=0 lan_gateway=192.168.3.1 lan_network_address=192.168.3.10 lan_subnet_mask=255.255.255.0 primary_dns=192.168.3.1 squeezecenter_address=192.168.1.150
save_data
reset

Wireless, 128-bit WEP, DHCP

discover
conf 1
set interface=0 set wireless_mode=0 wireless_region_id=14 wireless_SSID=MySSID wireless_wep_on=1 wireless_keylen=1 wireless_wep_key_0=112233445566778899aabbccdd
 lan_ip_mode=1 squeezecenter_address=192.168.1.150
save_data
reset

Wireless, WPA1, DHCP

discover
conf 1
set interface=0 wireless_mode=0 wireless_region_id=14 wireless_SSID=MySSID wireless_wpa_on=1 wireless_keylen=1 wireless_wpa_psk="Top Secret!" lan_ip_mode=1 squeezecenter_address=192.168.1.150
save_data
reset

Wireless, WPA2, TKIP+AES, DHCP

discover
conf 1
set interface=0 wireless_mode=0 wireless_region_id=14 wireless_SSID=MySSID wireless_wpa_on=1 wireless_wpa_mode=2 wireless_wpa_cipher=3 wireless_wpa_psk="Top Secret!" lan_ip_mode=1 squeezecenter_address=192.168.1.150
save_data
reset

Bridged, WPA 1, TKIP+AES

Setup: Server (with Squeezecenter) <-wire-> Receiver <-wireless-> Wifi network (with router, and other computers)
Additional setup parameters:
  • lan-address of receiver: 192.168.1.136 (static)
  • gateway (adsl router for instance): 192.168.1.1
  • Primary DNS (same as on adsl router): 23.23.23.1
  • Secondary DNS (same as on adsl router): 23.23.23.2
discover
conf 1
set lan_ip_mode=0 lan_network_address=192.168.1.136 primary_dns=23.23.23.1 secondary_dns=23.23.23.2 server_address=192.168.1.150 squeezecenter_address=192.168.1.150 lan_gateway=192.168.1.1 wireless_SSID=mySSID wireless_mode=0 wireless_region_id=14 wireless_wpa_cipher=3 wireless_wpa_on=1 wireless_wpa_mode=1 wireless_wpa_psk="Top Secret!" wireless_channel=6 interface=0 bridging=1
save_data
reset

Saturday 2 August 2014

摩改 Squeezebox Duet Receiver (下)

到了 SBR 摩改下集, 希望這個是終極摩改, 事實上, 做了這摩改後你會發現這個是最重要的摩改.

這個摩改只有一個目的, 要為 SBR 的 S/PDIF signal 加上 tube buffer. 這是完全根據 Lampizator 的教學做成的 (all credit goes to Lukasz Fikus Lampizator), 如果你不想 DIY 或 想省時減少風險的話, 請直接在 Lampizator 的 online shop 買他的 Squeezebox transport 或 6111 Miniature Stereo Lampizator kit DIY kit:
http://lampizator.eu/shop/viewcategory.php?groupid=19

Digi Lampizator Manual

做法好簡單, 只要把前文中提到的 Xilinx pin 3 (或 R102 近 Xilinx 的一邊)取出, 接上 triode 的 grid. 再將 Cathode follower 的 cathode 接上一粒coupling capacitor (0.1uF - 1uF) 再如常接上 BNC 輸出至DAC.

這個 tube buffer 的重點在於加入膽的味道(噪音). 所以 triode 的B+供電如用上膽整流會更好. 我用了 6x5 做了膽整流 (也可以用直熱式如274B). 至於Cathode Follower 的膽沒有特別要求. 用 12AU7, 12AT7 或 12AX7 基本上只要 pinout相容便可, 聲音會有幾明顯的分別, 最好根據膽的電氣性質更改電阻的數值.


以下是給 triode 的供電. 我做了 CLCLCRC 的 filter. 因為手上的牛不能做全波整流, 只可以做半膽半石整流.


完成品


(使用了一個月後) 再換鐘...
朋友話不如換另一個鐘看看效果會不會更好, 我地買左 Neutrino Audio Reference Clock.





 安裝後...


聲音是比MR-SuperClock好了不少, 結象強左. 但以這個價錢我覺得算是貴. 只是追求 high end 的玩家才有需要換上這個.

相關Blog文:
摩改 Squeezebox Duet Receiver (上)
摩改 Squeezebox Duet Receiver (中)
不用 Squeezebox Duet Controller 的方法 - Net::UDAP - SqueezeBox Receiver configuration tool
Squeezebox Receiver / Touch 直駁 LMS (Logitech Media Server)
Cubieboard2 with Logitech Squeezebox Media Server 入箱