I recently got a Western Digital "Passport Wireless" hard drive (http://www.wdc.com/de/products/products.aspx?id=1330)
I bought this because a) i could get it quite cheap and b) WD decided to implement an SSH server and kindly even published the root password (welc0me) - so i thought it could be fun to play around with this thing.
This device is a typical "Wifi hard drive" (i. e. a low power NAS with a built in wifi card and a battery for portable usage), but it has some well designed features:
- It has two wifi cards, so it can act as an access point and is able to pass through a connection to another wifi network
- There is a DLNA server built in (Twonky)
- It has an SD-card slot which you can use to automatically backup cards to the hard drive
It is built on an ARM V7 with 512MB of RAM - so i thought that maybe it would be possible to build a portable squeezeserver with this thing. It's a bit bulky (because of the built in battery and the usage of a 2TB drive with 15mm height), but with app. 300 gr. it is quite easy to carry around.
To make a long story short - I was able to squeeze a squeezeserver in this thing. And it works surprisingly well. The browser interface is rather slow (but usable), but with iPeng it works better than i expected.
I think the performance is comparable to the first raspberry pi (but the hard drive interface is much faster than that of the pi).
Scanning my 40K tracks took less than two hours.
Setting up the squeezeserver was not too complicated (Disclaimer: I am not an expert and this is not a foolproof installation instruction. If you want to do this yourself you should have some decent linux knowledge. It is possible to brick the device and i think i read somewhere that enabling ssh voids the manufacturers warranty):
The Passport Wireless uses a debian based distribution called "Linaro" (http://www.linaro.org/). I think this is a distribution specifically made for embedded devices.
Unfortunately it only has 100MB of flash storage and a lot of tools and libraries are missing. I am no linux expert so instead of bootstrapping a better suited environment, i decided to create a simple chrooted environment on the hard drive:
1) Connect to the wifi of the device and enable SSH in the settings (http://192.168.60.1 by default)
2) Login via ssh (and then you really should change the root password!)
3) Attach the drive via USB to a Linux or Windows computer and reformat it with either ext3 or NTFS (It comes with ExFat and AFAIK ExFat does not support symlinks).
4) Choose a distribution on the download pages of http://linaro.org
There are community builds available in three flavours: "Nano" (which i think is similar to the one installed on the device), "Server" and "Gnome".
It looks like you need to register to get the latest version, so for simplicity i downloaded the "server" variant of their 15.04 release:
http://releases.linaro.org/15.04/ubu...421-702.tar.gz
5) Connect via SSH, login as root.
Choose where to install the distribution. I used a directory on the hard drive (but of course you could also use an SD-card)
untar the downloaded archive in this directory. You can delete the subdirectories dev proc and sys if you like (we will do a chroot install, so we won't need them)Code:/DataVolume/linaro_chroot
Create the directories again as mount points for the bind mounts:
Create a directory as a mount point for the hard drive in the chrooted installation:Code:mkdir /DataVolume/linaro_chroot/dev mkdir /DataVolume/linaro_chroot/proc mkdir /DataVolume/linaro_chroot/sys
Do the bind mounts:Code:mkdir /DataVolume/linaro_chroot/DataVolume
Chroot into the installation directory:Code:mount --bind /dev/ /DataVolume/linaro_chroot/dev/ mount --bind /proc/ /DataVolume/linaro_chroot/proc/ mount --bind /sys/ /DataVolume/linaro_chroot/sys/ mount --bind /DataVolume/ /DataVolume/linaro_chroot/DataVolume/ mount --bind /dev/shm /DataVolume/linaro_chroot/dev/shm mount --bind /tmp /DataVolume/linaro_chroot/tmp mount --bind /media /DataVolume/linaro_chroot/media
(If you want you know can use bash with "bash -l")Code:chroot /DataVolume/linaro_chroot/
We now have dpkg available and after downloading the squeezeserver package it installed flawlessly with:
6) The port 9000 is already in use by the preinstalled twonky server. You could deactivate twonky in the configuration of the device or you change the port of the squeezeserver installation. I used 9010:Code:dpkg -i /DataVolume/install/logitechmediaserver_7.9.0~1461045178_arm.deb
I am not sure if i remember this correctly, but i think the "httpport" option is automatically stored in the prefs of the squeezeserver - otherwise simply check the configurationCode:service logitechmediaserver stop squeezeboxserver --httpport 9010 --httpaddr 192.168.60.1 --cliaddr 192.168.60.1
Start the squeezeserver in the chrooted environment (service logitechmediaserver stop) and check if everything works.
7) To autostart the squeezeserver exit to the original linux (or reboot).
The installation seems to use an incredibly simple service management: Every script in /etc/init.d is executed, the order is determined by the filename.
So i wrote a basic wrapper script to start the squeezeserver automatically and copied it to /etc/init.d/S92logitechmediaserver (in the original installation, not the chrooted environment).
This does the bind mounts, chroots to our own environment and starts the squeezeserver in there:
And thats all. I did one more thing. WD implemented a service which scans the drive for images to create preview files for their app. Annoyingly this does not only put load on the CPU, but also you can't exclude directories - so you will get every folder.jpg presented as a photo in their app.Code:#! /bin/sh CHROOT_PATH="/DataVolume/linaro_chroot" case "$1" in start) echo "Starting chroot for squeezeserver" if [ ! -e "$CHROOT_PATH/dev" ]; then mkdir "$CHROOT_PATH/dev"; fi if [ ! -e "$CHROOT_PATH/proc" ]; then mkdir "$CHROOT_PATH/proc"; fi if [ ! -e "$CHROOT_PATH/sys" ]; then mkdir "$CHROOT_PATH/sys"; fi if [ ! -e "$CHROOT_PATH/dev/shm" ]; then mkdir "$CHROOT_PATH/dev/shm"; fi if [ ! -e "$CHROOT_PATH/tmp" ]; then mkdir "$CHROOT_PATH/tmp"; fi if [ ! -e "$CHROOT_PATH/media" ]; then mkdir "$CHROOT_PATH/media"; fi if [ ! -e "$CHROOT_PATH/DataVolume" ]; then mkdir "$CHROOT_PATH/DataVolume"; fi mount --bind /dev/ "$CHROOT_PATH/dev/" mount --bind /dev/shm "$CHROOT_PATH/dev/shm" mount --bind /proc/ "$CHROOT_PATH/proc/" mount --bind /sys/ "$CHROOT_PATH/sys/" mount --bind /tmp "$CHROOT_PATH/tmp" mount --bind /media "$CHROOT_PATH/media" mount --bind /DataVolume/ "$CHROOT_PATH/DataVolume/" chroot $CHROOT_PATH service logitechmediaserver start ;; stop) echo "Stopping chroot for squeezeserver" chroot $CHROOT_PATH service logitechmediaserver stop umount $CHROOT_PATH/DataVolume/ umount $CHROOT_PATH/media umount $CHROOT_PATH/tmp umount $CHROOT_PATH/sys/ umount $CHROOT_PATH/proc/ umount $CHROOT_PATH/dev/shm sleep 2 #to avoid "resource busy" when unmounting /dev umount $CHROOT_PATH/dev/ ;; *) echo "Usage: /etc/init.d/S92logitechmediaserver {start|stop}" exit 1 ;; esac exit 0
I decided to remove these services (remove ) by removing the following scripts in /etc/init.d:
(remember to backup them before deleting in case you want to have the photo indexing again)Code:S85wdmcserverd S92wdnotifierd
and then removed the hidden files created by these scripts in my music directories:
The twonky server has the ability to restrict media files to certain directories, you can define these in the configuration settings (http://192.168.60.1:9000/)Code:find /DataVolume/Audio/ -name ".wdmc" -exec rm -r {} \;
For now i don't know how reliable this installation is - i will know that after the next vacation trip :->
Results 1 to 10 of 10
-
2016-04-24, 07:14 #1
- Join Date
- Oct 2012
- Posts
- 89
Portable squeezebox with a Western Digital "Passport Wireless"
Last edited by sternenjaeger; 2016-04-24 at 07:21.
-
2016-04-24, 08:40 #2
- Join Date
- Dec 2013
- Posts
- 99
Portable squeezebox with aWestern Digital "Passport Wireless"
sternenjaeger <sternenjaeger.7eooon (AT) no-mx (DOT) forums.slimdevices.com>
writes:
> I recently got a Western Digital "Passport Wireless" hard drive
> (http://www.wdc.com/de/products/products.aspx?id=1330)
[snip: Fascinating stuff (264 lines)]
I really like it - sounds really nice. Have you looked at
http://forum.doozan.com/index.php for inspiration? Maybe you could do
more with it than you think?
Looking forward to some updates,
Rainer
> >
------------------------------------------------------------------------
> sternenjaeger's Profile:
http://forums.slimdevices.com/member.php?userid=57562 > View this
thread: http://forums.slimdevices.com/showthread.php?t=105512 > >
-
2016-04-25, 07:31 #3
- Join Date
- Oct 2012
- Posts
- 89
No, unfortunately these days i don't have the time anymore to spend nights on cross-compiling kernels, fixing stubborn bootloaders etc. (Although i admit that you can learn a lot about systems engineering by doing that)
A chroot install is much easier: You sandbox the environment you need inside a host system. The host still provides the kernel and all the driver and hardware related stuff (/dev, /proc and /sys). The squeezeserver "sees" a fully-fledged Debian operating system and this Debian "sees" the kernel of the underlying host.
And this is what i love about the squeezeserver - because of it's open architecture you can cram it into practically everything. And while the commercial product is long gone the remaining clever guys over in the developers subforum keep on improving the software.
(Side Note: I just noticed that i should have called my post "Portable Squeezeserver", not "Portable Squeezebox" because ...well.. it doesn't make much sense to install a software player on something that doesn't have audio outputs...)
-
2016-05-10, 22:19 #4
- Join Date
- Dec 2010
- Posts
- 936
I set this up on a WD Passport drive yesterday evening following your instructions, which were very clear. I'm glad I had a passing acquaintance with the Linux command line!
Seems to be working pretty smoothly. The first scan took 48 minutes for about 25,000 tracks.
RobertHome: Raspberry Pi 4/pCP7.0/LMS8.0.1/Material with files on QNAP TS-251A
Touch > DacMagic 100 > Naim Audio Nait 3 > Mission 752 (plus Rega Planar 3 > Rega Fono Mini; Naim CD3)
2 x Squeezebox Radios, 1 X Squeezebox 3 (retired), spare Pi2/piCorePlayer
Office: LMS8.0.0 running on Raspberry Pi3; Raspberry Pi 3 player with touchscreen/piCorePlayer/IQaudIO DAC and Amp
Portable: Raspberry Pi 3B/pCP6.1.0/LMS8.0.0/Material, files on Seagate portable drive, powered via power brick
-
2018-04-02, 00:57 #5
- Join Date
- Nov 2015
- Location
- Near Buffalo, NY
- Posts
- 189
I have a question about player performance issues vs file formats:
Have you experienced any issues playing FLAC vs WAV vs MP3? Assuming your using these formats...
And what about battery life using the different formats?Player: 1 x Transporter w/Trans-knob, 2 x Touch (Active, 3 x Spares), 4 x Boom (Active, 9 x Spares)
Server: 1 x Win Server (ESXi 6.x) w/LMS, 1 x HP 24" Touch Screen PC w/LMS & SqueezePlay
Control: 4 x w/iPeng, 1 x Samsung Note 4, 3ea x Fire 7", 8” tablets, 1 x 10" all w/SqueezeCtrl & Player (Angry Goat)
Audio: Mark Levinson 23.5 Amp, 380s Pre, 390s CD, B&W 801 II, Acoustic Energy AE-2 signature, SOTA Sapphire table
Computer geek/tech hoarder(!), and DAMN I love the LMS/Squeeze infrastructure!
-
2018-04-02, 01:03 #6
- Join Date
- Dec 2010
- Posts
- 936
Can't easily answer your questions - I use flac and mp3 format files, and I have very few wav format files, plus I don't often run the server on battery for more than short periods. Usually I run it connected to a USB power supply. I guess one could use a USB lead in a car to run it for long periods.
Performance as an LMS server is pretty good.
RobertHome: Raspberry Pi 4/pCP7.0/LMS8.0.1/Material with files on QNAP TS-251A
Touch > DacMagic 100 > Naim Audio Nait 3 > Mission 752 (plus Rega Planar 3 > Rega Fono Mini; Naim CD3)
2 x Squeezebox Radios, 1 X Squeezebox 3 (retired), spare Pi2/piCorePlayer
Office: LMS8.0.0 running on Raspberry Pi3; Raspberry Pi 3 player with touchscreen/piCorePlayer/IQaudIO DAC and Amp
Portable: Raspberry Pi 3B/pCP6.1.0/LMS8.0.0/Material, files on Seagate portable drive, powered via power brick
-
2018-04-02, 01:09 #7
- Join Date
- Nov 2015
- Location
- Near Buffalo, NY
- Posts
- 189
OK, those are my 2 primary formats.
If the performance is pretty good using iPeng then that's what matters to me. I assume using something like SqueezeCtrl (AngryGoat software) on an Android will be similar.
Battery life was really a secondary factor but figured I'd ask.
This is so cool. They now have a new 'Pro' version (at least newer from the picture in your first post). Same memorywas hoping for more...
Player: 1 x Transporter w/Trans-knob, 2 x Touch (Active, 3 x Spares), 4 x Boom (Active, 9 x Spares)
Server: 1 x Win Server (ESXi 6.x) w/LMS, 1 x HP 24" Touch Screen PC w/LMS & SqueezePlay
Control: 4 x w/iPeng, 1 x Samsung Note 4, 3ea x Fire 7", 8” tablets, 1 x 10" all w/SqueezeCtrl & Player (Angry Goat)
Audio: Mark Levinson 23.5 Amp, 380s Pre, 390s CD, B&W 801 II, Acoustic Energy AE-2 signature, SOTA Sapphire table
Computer geek/tech hoarder(!), and DAMN I love the LMS/Squeeze infrastructure!
-
2018-04-02, 06:35 #8
- Join Date
- Jul 2005
- Location
- Ann Arbor, MI, USA / Pune, India
- Posts
- 492
If this ever goes from vaporware to a real physical product it could be a solution for a library backup and portable LMS at the same time:
http://ces.link/
-
2018-04-03, 00:53 #9
- Join Date
- Nov 2015
- Location
- Near Buffalo, NY
- Posts
- 189
Player: 1 x Transporter w/Trans-knob, 2 x Touch (Active, 3 x Spares), 4 x Boom (Active, 9 x Spares)
Server: 1 x Win Server (ESXi 6.x) w/LMS, 1 x HP 24" Touch Screen PC w/LMS & SqueezePlay
Control: 4 x w/iPeng, 1 x Samsung Note 4, 3ea x Fire 7", 8” tablets, 1 x 10" all w/SqueezeCtrl & Player (Angry Goat)
Audio: Mark Levinson 23.5 Amp, 380s Pre, 390s CD, B&W 801 II, Acoustic Energy AE-2 signature, SOTA Sapphire table
Computer geek/tech hoarder(!), and DAMN I love the LMS/Squeeze infrastructure!
-
2019-02-14, 15:31 #10
- Join Date
- Feb 2019
- Posts
- 7
Excellent Information
Just wanted to say this post brought me to the forum and I am hoping to get this going. I will post this in another thread. Thanks for sharing your work!