SqueezePlug

From SqueezePlug Wiki

Jump to: navigation, search

!!!!!!!!!!!!!!!!!Work in progress!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


SqueezePlug, a perfect platform for Media Server!

SqueezePlug is a software for running various kinds of Media Servers on very cheap devices like Plug-Computers or a Raspberry Pi. SqueezePlug always comes as an bootable image depending on the device as SD-Card or USB-Memory-Stick image. SqueezePlug is always based on Linux (Debian Squeeze) but you don't need Linux know how to run it. It's designed for installing once and than you should forget it. SqueezePlug is an Headless Always On System, designed for running 24/7. Because of the extremely low power consumption, only 3-5 Watt, there is no need to shut it down. SqueezePlug offers the possibilities to run various kinds of Media Server, most of them are DLNA-ready, which means they are compatible to the most and modern Media Players. SqueezePlug can even be a Music Player not only a Music Server. If you run a Logitech Media Server (SqueezeBox Server) you can also run a Software Music Player on SqueezePlug so that you carry both in one device, Server and Player. If you use SqueezePlug, you have full access to the Debian OS, so you can install Debian packages as you like.

Supported devices


Media Servers running in SqueezePlug



Contents

Main advantages of SqueezePlug

  • enough performance for your Media Server
  • extremely low power consumption, only 3-5 Watt so you can leave it "always on"
  • it's cheap, the devices costs between 35$ (Rapsberry Pi) and 100$ (SheevaPlug).
  • plug and forget system
  • very easy to install if you use one of my images and follow this Wiki
  • very flexible due to multiple ways of connecting your music library (USB-Drives, NAS, Network-Shares ...)
  • very easy to use, maintain and update
  • it's absolutely noiseless and has no moving parts, apart from external USB HDDs
  • it's very small
  • all software used in this project is absolutely free
  • the system is open, you can modify it as you like
  • ... and a lot more


SqueezePlug --Simple Systems Needs Simple Solutions


Please visit my blog here SqueezePlug Blog and you will find everything you need!


You don't have to be a Linux expert. Following this guide will provide you with your own Media Server, with no prior Linux know-how necessary.


It's very important that you type all commands exactly as described in the Wiki. Please remember that all commands in Linux are case-sensitive.


If you find some faults or improvements, please let me know so that I can change the Wiki.



Prerequisites

  • One of these devices:
  • for SheevaPlug or Raspberry Pi: SD-Card (minimum 4GB as fast as possible)
  • for Dockstar and GoFlex Net: USB-Stick (minimum 4GB as fast as possible)
  • USB drive, NAS or other file-share for storing the music
  • Putty or a similar terminal-program
  • USB Image Tool
  • SD-Card formatter
  • Working Internet connection for the SqueezePlug
  • optional but recommended: DHCP server from which the SqueezePlug gets its IP-address after starting for the first time



Choose installation method

This Wiki is constructed in modules. The steps you must follow depend on which installation method you choose and your personal environment, so be careful to follow the links which match your exact environment.


There are seven installation methods to choose from
  1. SqueezePlug_Sheeva_Image SqueezePlug-Server for SheevaPlug as SD-Card Image
    a. For Multi-Boot SheevaPlugs from NewIT
    b. For all other SheevaPlugs
  2. SqueezePlug_Sheeva_Installer SqueezePlug-Server for SheevaPlug for ESIA-Installer
  3. SqueezePlug_Raspberry_Pi_Image SqueezePlug-Server for Raspberry Pi
  4. SqueezePlug_DockStar_Image SqueezePlug-Server for Seagate DockStar as USB-Stick Image
  5. SqueezePlug_GoFlexNet_Image SqueezePlug-Server for Seagate GoFlex Net as USB-Stick Image
  6. SqueezePlug_VM SqueezePlug-Server as a virtual machine
  7. SqueezePlug_Sheeva_Manual SqueezePlug-Server manual installation


SqueezePlug_Tonido_Image is no longer supported!

Install Matrix

This matrix describes which steps you have to follow, depending on the installation method you choose.

No. Installation Step SP_SI (MB) SP_SI SP_SInst SP_RI SP_DI SP_GI SP_VM SP_SM
4 SqueezePlug_Sheeva_Image x x
5 SqueezePlug_Sheeva_Installer x
6 SqueezePlug_Raspberry_Pi_Image x
7 SqueezePlug_Dockstar_Image x
8 SqueezePlug_GoFlexNet_Image x
9 SqueezePlug_VM x
10 SqueezePlug_Sheeva_Manual x
11 Prepare the SD-Card / USB-Stick x x x x x
12 Establishing an IP-connection x x x x x
13 Establishing a Serial-connection (x) x x x
14 Fix SD-Card Bug (x)
15 Check U-Boot Version x x
16 Update U-Boot x x
17 Configure U-Boot for SqueezePlug_Sheeva_Image x
18 Configure SqueezePlug x x x x x x x x


Legend:

Key Device
SP_SI (MB) SqueezePlug SheevaPlug Image Multiboot
SP_SI SqueezePlug SheevaPlug Image
SP_SInst SqueezePlug SheevaPlug Installer
SP_RI SqueezePlug Raspberry Pi Image
SP_DI SqueezePlug Dockstar Image
SP_GI SqueezePlug GoFlex Net Image
SP_VM SqueezePlug VMWare
SP_SM SqueezePlug SheevaPlug Manual



SqueezePlug_Sheeva_Image

Description: SqueezePlug for SheevaPlug as an SD-Card Image
Short name: SP_SI(MB),SP_SI

Who should use this version? Use this method for NewIT Multi-Boot Plug or for all other SheevaPlugs if you don't like to go the SqueezePlug Sheeva Installer method.

Summary: If you own a Plug from NewIT (Multi Boot or UBIFS) you don’t have to change anything with the Plug itself. The SqueezePlug_Sheeva_Image image comes as a 4GB image, because most of you use such cards, and it has enough space for everything you need. Choose this version if you want to keep the installation process as easy as possible. This method is the best for people with either very limited, or perhaps no Linux know-how. This method is also very quick, you only need a few steps to run it and don't have to read the complete Wiki.

The process differs depending on which Plug you own. If you own a NewIT Multi-Boot Plug you should definitely choose this method. If you own an other SheevaPlug like the normal developer version you can choose between this method and the SqueezePlug_Sheeva_Installer method. The result will be the same, you will get an SqueezePlug-Server.

What do you need?

  • SheevaPlug
  • Serial USB-Cable for the SheevaPlug
  • SD-Card (minimum 4GB as fast as possible)
  • SqueezePlug_Sheeva_Image Package
  • USB drive, NAS or other file-share for storing the music
  • Putty or a similar terminal-program
  • USB Image Tool
  • SD-Card formatter
  • Working Internet connection for the SqueezePlug
  • optional but recommended: DHCP server from which the SqueezePlug gets its IP-address after starting for the first time
  • If you have to update U-Boot you will need a TFTP-Server


Installation process for Multi-Boot SheevaPlugs from NewIT :


1. Prepare the SD-Card: Prepare the SD-Card / USB-Stick


2. Establishing an IP-connection: Establishing an IP-connection
If the IP-connection does not work establishing a Serial-connection: Establishing a Serial-connection


3. If booting fails try to fix an SD-Card bug: Fix SD-Card Bug


4. Configure SqueezePlug: Configure SqueezePlug



Installation process for all other SheevaPlugs :


1. Prepare the SD-Card: Prepare the SD-Card / USB-Stick


2. Establish a Serial-connection: Establishing a Serial-connection


3. Check U-Boot Version: Check U-Boot Version


4. Update U-Boot: Update U-Boot


5. Configure U-Boot for SqueezePlug_Sheeva_Image: Configure U-Boot for SqueezePlug_Sheeva_Image


6. Configure SqueezePlug: Configure SqueezePlug

root@squeezeplug:~# setup



SqueezePlug_Sheeva_Installer

Description: SqueezePlug-Server for SheevaPlug for ESIA-Installer
Short name: SP_SInst

Who should use this version? Use if your SheevaPlug do not allow booting Debian from SD-Card

Summary: With the SqueezePlug-Server for SheevaPlug Version you will install SqueezePlug-Serer to any SheevaPlug by an easy, no cryptic way from your Windows PC without any Linux know how necessary. Choose this method to install SqueezeBox-Server on any SheevaPlug except the multi-boot option from NewIT. For this kind of SheevaPlug choose the SqueezePlug_Sheeva_Image version, because it's the easiest way for these plugs. Alternatively you can choose the SqueezePlug-Sheeva_Manual method to go all way by your own.

What do you need?


Installation process:


1. Download the SqueezePlug_Sheeva_Installer Package


2. Format the USB-Stick as FAT32


3. Extract the files to the USB-Stick on the subdirectory /squeezeplug_sheva_installer


4. Download the ESIA Software


5. Install the ESIA Software The installation is pretty much forward just click on "next" and on "install" and accept the licenses agreement.


6. After the installation copy a fresh u-boot version to the ESIA Program folder C:\Program Files\ESIA\uboot


7. Plug in the USB Stick to your PC you run ESIA on


8. Plug in the SD-Card to the SheevaPlug


9. Connect the USB-Serial Cable between your PC and the SheevaPlug


10. Power on the SheevaPlug


11. Start the ESIA Installer Image:ESIA_1.png


12. See whether the SheevaPlug is recognized by ESIA under devices. You should see you MAC-Address under devices.


13. If not, disconnect the SheevaPlug from power


14. Power on the SheevaPlug again


15. See whether the SheevaPlug is recognized by ESIA now


16. If not, establish a Serial-connection: Establishing a Serial-connection


17. See in which state the plug is. If an OS is started login with "root" and PW: "nosoup4u" an the type:

shutdown -r now

18. After rebooting of the plug hit return several times to interrupt the boot process.


19. After the boot process is interrupted, close putty.


20. Start ESIA again and see whether the SheevaPlug is recognized by ESIA now


21. If yes you can start the installation process. If not, try once more.


22. Point your application path to you USB stick


23. ESIA should recognize the stick and verify it. Image:ESIA_2.png


24. Click on SqueezePlug_Sheeva_Installer Image:ESIA_3.png


25. Click on "select"
Image:ESIA_4.png


26. Check your u-boot version. If you're running a version of u-boot older than 3.4.19 you have to update u-boot before proceeding with the next steps


27. Click on "Refresh bootloader". This operation will last a little while. After it your Plug has a fresh bootloader.


28. Click on "Install on MMC" Some files are copied from your PC to the USB-Stick and you will get the following message when this is finished: Image:ESIA_5.png


29. Remove the USB-Stick from the PC and plug it in the SheevaPlug. Be careful that you don't remove the USV-Cable between you PV and you SheevaPlug Image:ESIA_6.png


30. Choose "Boot from MMC Card"


31. Click "Install"
Image:ESIA_7.png
The installation Process starts and last some time.
Image:ESIA_8.png
After the process is finished, you should have a working SqueezePlug.
To be sure everything worked well we will check this:


32. Finish the ESIA-Installer.


33. Open a putty connection (serial USB): Establishing a Serial-connection


34. Type "reset" and press <return>


35. Watch the boot process and see whether Debian boots an shows the squeezeplug prompt.


36. Configure SqueezePlug: Configure SqueezePlug

root@squeezeplug:~# setup



SqueezePlug_Raspberry_Pi_Image

Description: SqueezePlug-Server Image for Raspberry PI
Short name: SP_RI

Who should use this version? Use if you like to install SqueezePlug on Raspberry Pi

Summary: This is a SD-Card-Image with SqueezePlug for the Raspberry Pi. Choose this version if you own a Raspberry Pi and you like to run SqueezePlug on it. SqueezePlug_Raspberry_Pi_Image comes as a 4GB image, because most of you use such cards, and it has enough space for everything you need. This method is perfect for people with either very limited, or perhaps no Linux know-how. This method is also very quick, you only need a few steps to run it and don't have to read the complete Wiki. The image is based on the official Debian Squeeze Image from the Raspberry Pi Foundation. It's customized for SqueezePlug, e.g. all graphical software packages are removed. "startx" will not work there is no X-Server installed. The image is already configured to allow SSH-connections. The default user is "root" and the password is "nosoup4u" as always on SqueezePlug.

SqueezePlug_Raspberry_Pi includes scripts for customization and installation of your Media Servers. The SqueezePlug_Raspberry_Pi image comes as a 4GB image, so if you use a 4GB SD-Card you don't need to resize the partitions, and it has enough space for everything you need.

What do you need?

  • Raspberry Pi (Raspberry Pi Foundation)
  • USB Power-Supply 5v micro USB. Raspberry Pi Power Supply
  • HDMI-Cable (depends on your monitor) (not necessary, but recommended if you use SqueezePlug headless)
  • USB mouse (not necessary, but recommended if you use SqueezePlug headless)
  • USB Keyboard (not necessary, but recommended if you use SqueezePlug headless)
  • SD-Card 4GB (or more)
  • self-powered USB drive, NAS or other file-share for storing the music
  • Putty or a similar terminal-program Putty
  • working Internet connection
  • optional but recommended: DHCP server from which the SqueezePlug gets its IP-address after starting for the first time


Installation process:


1. Prepare the SD-Card: Prepare the SD-Card / USB-Stick


2. Boot Raspberry Pi and watch the boot-process on the directly attached monitor.


3. Logon to SqueezePlug:

squeezeplug login: root
Password: nosoup4u

4. find out the IP-Address:

root@squeezeplug:~# ifconfig

5. Establish an IP-connection: Establishing an IP-connection


6. Logon to SqueezePlug:

login as: root
root@192.168.1.100's password: nosoup4u

7. Configure SqueezePlug: Configure SqueezePlug

root@squeezeplug:~# setup



SqueezePlug_Dockstar_Image

Description: SqueezePlug-Server Image for Seagate Dockstar
Short name: SP_DI

Who should use this version? Use if you like to install SqueezePlug on a Seagate Dockstar.

Summary: Use this version for the Seagate DockStar devices. The Seagate Dockstar devices has been the cheapest device to run a SqueezePlug till we got Raspberry Pi. Seagate Dockstar devices are not available any more. They are replaced by Seagate with GoFlex Net. Dockstar has less features as a Sheevaplug but it offers the same hardware architecture. Installing is very easy, I offer an image on usb-stick and have only to follow my instructions.

Most of the steps to get the devices running Debian Squeeze are from Jeff Doozan: http://forum.doozan.com/index.php. Without his work, SqueezePlug on the Seagate devices would not be possible! So I want to thank Jeff for his great work!

What do you need?

  • Seagate DockStar STDSD10G-RK (will not be continued)
  • Pogoplug POGO-E02 (without guarantee)
  • USB-Stick 4GB (or more)
  • self-powered USB drive, NAS or other file-share for storing the music
  • Putty or a similar terminal-program Putty
  • working Internet connection
  • optional but recommended: DHCP server from which the SqueezePlug gets its IP-address after starting for the first time


Installation process:


1. Prepare the USB-Stick: Prepare the SD-Card / USB-Stick


Change the Bootloader to boot from USB:
There are two different methods to get the devices working. With the first method you will register your device at Seagate and you can use the Pogoplug software, if you boot your device from the NAND and not from the USB-stick. With the second method you will not first register to the Pogoplug service. But if you like you can do it whenever you like. There are a lot of people who like the second method more than the first, but decide it by your self. Both methods are o.k.

First method, with registration


2. Plug in the device to your network.


3. Be sure you have a Internet connection for the device.


4. Register your device at seagate: DockStar Registration.


5. Enable SSH in the security settings of the PogoPlug Site.
The exact process of registering and activating SSH differs from time to time. So I decided to delete the screenshots of this process. Simply search for the "Security Settings" and there you will find something like "Enable SSH access for this Pogoplug enabled device". Enable this option, that's all.


6. Get the IP-Address of the device from your router. (DHCP-Settings)


7. Establish an IP-connection to this IP by SSH via putty: Establishing an IP-connection


8. Login with root and the password you gave the device during the registration process.


9. Continue with step 24.



Second method, without registration


2. Look up the MAC-Address of your device. You will find it on the backside of the device.


3. The MAC-Address looks something like this: 0010751AC010.


4. Look at the last two octets: C0 and 10.


5. Open a calculator (e.g. windows calc).


6. Switch to the scientific mode.


7. Switch to Hex.


8. Type in the value C0.


9. Switch to Dez.


10. Write down the value 192.


11. Switch to Hex.


12. Type in the value 10.


13. Switch to Dez.


14. Write down the value 16.


15. The first two octets are fix 169.254.


16. So the IP-Address of your device is: 169.254.192.10.


17. Disconnect your PC from the network.


18. Connect the PC directly to the device.


19. Give your PC an IP-Address out of the range 169.254.0.0 /16 (255.255.0.0). E.g.: 169.254.0.100.


20. Ping the IP of the device:

ping 169.254.192.10

21. If you get an answer connect to the device by SSH.


22. Establish an IP-connection to this IP by SSH via putty: Establishing an IP-connection


23. Login with root and the password stxadmin.



For both methodes go on with the next steps:

24. Flash the new bootloader so that the DockStar will boot from a USB-Stick if you have one connected. During this process you will be asked whether to disable the PogoPlug-Service. Choose what you like!

-bash-3.2# cd /tmp
-bash-3.2# wget http://jeff.doozan.com/debian/uboot/install_uboot_mtd0.sh
-bash-3.2# chmod +x install_uboot_mtd0.sh
-bash-3.2# export PATH=$PATH:/usr/sbin:/sbin
-bash-3.2# ./install_uboot_mtd0.sh

25. After flashing is finished, power off the device.

-bash-3.2# halt

26. Wait 60 seconds.


27. Put in the USB-Stick in one of the USB-Slots of the device.


28. Power on the device.


29. Your IP-Address may become different to the old one. So look it um from you DHCP-Server (Router)


30. Connect to this IP-Address by Putty: Establishing an IP-connection


31. Login with "root" and "nosoup4u".


32. Check whether the prompt is:

squeezeplug:~#

If not, boot once again


33. Logon to SqueezePlug:

login as: root
root@192.168.1.100's password: nosoup4u

34. Configure SqueezePlug: Configure SqueezePlug

root@squeezeplug:~# setup


Hints:
If you plug in a external HD to Dockstar, you may get some trouble with your partition names. /dev/sda1 can sometime be /dev/sdb1. Because that, you will have trouble to mount your external drive and you wont get your music library connected. For that reason do the following:

  • Get the name of your external drive:
squeezeplug:~# blkid
  • You will something like this:
root@squeezeplug:/mnt/usb/music# blkid
/dev/sda1: LABEL="MOBILE_DISC" UUID="19EB-3228" TYPE="vfat"
/dev/sdb1: UUID="29e469e3-f30a-4ecf-bdeb-2fee0ede9c0c" TYPE="ext2"
/dev/sdb2: TYPE="swap"
  • Copy the UUID of your external drive to the clipbord (eg. 19EB-3228).
  • Edit your fstab file and replace /dev/sdb1 with the UUID-number:
squeezeplug:~# nano /etc/fstab
# For USB Fat/Fat32 drive edit the next line:
UUID=19EB-3228 /mnt/usb/music vfat rw,user,auto 0 0 
  • Mount again:
squeezeplug:~# mount -a

Now the external HD will be savely mounted to /mnt/usb/music.

Reenable PogoPlug-Service
If you like to reenable the Pogoplug service do this:


1. Start your Dockstar without a usb-stick.


2. Make the system partition writable:

bash-3.2# mount -o remount,rw / 
bash-3.2# vi /etc/init.d/rcS

3. Goto this line: #/etc/init.d/hbmgr.sh start


4. Delete the #


5. Save the file


6. Reboot

bash-3.2# halt

7. Wait 60 seconds.


8. Disconnect and reconnect power to the device

SqueezePlug_GoFlexNet_Image

Description: SqueezePlug-Server Image for Seagate GoFlex Net
Short name: SP_GI

Who should use this version? Use if you like to install SqueezePlug on a Seagate GoFlex Net.

Summary: Use this version for the Seagate GoFlex Net devices. The Seagate GoFlex Net device is very similar to the DockStar devices but offers two Sata slots for external HDs. Installing is very easy, I offer an image on usb-stick and have only to follow my instructions.

Most of the steps to get the devices running Debian Squeeze are from Jeff Doozan: http://forum.doozan.com/index.php. Without his work, SqueezePlug on the Seagate devices would not be possible! So I want to thank Jeff for his great work!

If you follow exact the steps of this Wiki you will get a device running SqueezePlug from a USB-stick. The original PogoPlug system will not work anymore, so be careful. After you do the next steps, you can't boot into the PogoPlug system any more. And there is no way back to the old system.

If you like a system on the internal NAND you can install a rescue system. That's a great system you can use for a lot of different things if something goes wrong with your USB-Stick.

What do you need?

  • Seagate GoFlex Net Media Sharing Device STAK200
  • STAK100 should work either but I've not tested this.
  • USB-Stick 4GB (or more)
  • self-powered USB drive, NAS or other file-share for storing the music
  • Putty or a similar terminal-program Putty
  • working Internet connection
  • optional but recommended: DHCP server from which the SqueezePlug gets its IP-address after starting for the first time


Installation process:


1. Prepare the USB-Stick: Prepare the SD-Card / USB-Stick


2. Registration of your GoFlex Net
You should register your GoFlex Net even if you don't plan to use the device as a Pogoplug system. This ensures that you can activate SSH you will need to connect the device.
Plug in the device to your network.


3. Be sure you have a Internet connection for the device.


4. Register your device at seagate: GoFlex Net Registration.
The exact process of registering and activating SSH differs from time to time. So I decided to delete the screenshots of this process. Simply search for the "Security Settings" and there you will find something like "Enable SSH access for this Pogoplug enabled device". Enable this option, that's all.


5. Install the new bootloader
Find out the IP-address of your GoFlex Net from your DHCP-server e.g. your router


6. Open a SSH-Connection with this IP-address (via putty) and log-in with user "root" and your previous given password: Establishing an IP-connection


7. So the prompt will read:

-bash-3.2#

8. Stop the Pogoplug software, so it doesn't interfere with the install process

killall hbwd

9. Install the bootloder to be able to boot SqueezePlug from a USB-stick:

cd /tmp
wget http://jeff.doozan.com/debian/uboot/install_uboot_mtd0.sh
chmod +x install_uboot_mtd0.sh
./install_uboot_mtd0.sh

10. You will get the message:

If you agree, type 'ok' and press ENTER to continue:

11. Type "ok"


12. You will get the message:

Would you like to disable the pogoplug services? (Y/n)

13. Type "Y"


14. You will get the message:

 # You can set the correct arcNumber by running the following command:
 /usr/sbin/fw_setenv arcNumber 3089
 # UBoot installation has completed successfully.

15. Run this command:

/usr/sbin/fw_setenv arcNumber 3089

16. Shutdown the device

/sbin/halt

17. Disconnect the device from power


18. Plug in the previous build SqueezePlug USB-Stick


19. Connect the device to power again


20. Find out the new IP-address from your router.


21. Connect via SSH to the IP-address you discovered on the router


22. login with user "root" and password "nosoup4u"


23. Configure SqueezePlug: Configure SqueezePlug

root@squeezeplug:~# setup


That's it, your SqueezePlug is running!

From now on you are only able to boot from USB. You can't boot into the PogoPlug system any more. And there is no way back to the old system. If you like a system on the internal NAND you can install the rescue system. That's a great system you can use for a lot of different things if something goes wrong with your USB-Stick.


Install the Rescue-System to NAND
To install this system on NAND do this:


1. Boot from the USB-Stick and login


2. Do the following commands:

root@squeezeplug:~#
cd /tmp
wget http://jeff.doozan.com/debian/rescue/install_rescue.sh
chmod +x install_rescue.sh
./install_rescue.sh

3. You will get the following message:

If you agree, type 'ok' and press ENTER to continue:

4. Type "ok"


5. You will get the message:

# Rescue System installation has completed successfully.
root@squeezeplug:/tmp#

6. Do this:

fw_setenv rescue_bootcmd 'if test $rescue_installed -eq 1; then run rescue_set_bootargs; nand read.e 0x500000 0x100000 0x400000; bootm 0x500000; else run pogo_bootcmd; fi'

7. That's it, you can now boot SqueezePlug from USB or the Rescue-System from NAND (without the Stick)

root@squeezeplug:/tmp# reboot

8. Login with the username "root" and the password "root" and you will get the following prompt:

rescue:~#



SqueezePlug_VM

Description: SqueezePlug-Server Image as a Virtual Machine
Short name: SP_VM

Who should use this version? Use if you like to test SqueezePlug in a Virtual Machine (VM).

Summary: If you are not sure whether a SqueezePlug will be good enough as your Media Server, you can download a virtual SqueezePlug (SqueezePlug_VM). The setup works exactly the same way as for a Hardware SheevaPlug. So, you even are able to test whether you have enough knowledge to get it all to work! And you will see that you don’t need any special knowledge. If you like, you can run SqueezePlug_VM as your Media Server as well, but you have to keep in mind that running it on a "normal" PC the Power-Consumption would be much higher than with a hardware SqueezePlug. The performance of SqueezePlug_VM normally is a little bit faster than from the SqueezePlug. But you will only feel it when scanning the music-library. The performance in normal operating is quite the same.

If you like to get the real feeling of SqueezePlug you should run SqueezePlug_VM and connect to it via putty. Then you get exactly the same experience as working with a real plug. You can use the Wiki exactly the same way for a SqueezePlug_VM as for a normal Plug!

One very cool thing is: you are even able to get sound out of the SqueezePlug_VM. There are two ways to do that: one is already included in SqueezePlug_VM i.e. SqueezeSlave. The other one is SoftSqueeze, which you have to install on your host (or any other system in your network). Both possibilities are described later.

You should run SqueezePlug_VM in VirtualBox. I prefer VirtualBox because it's totally free, you don't have to register and it works on every processor, unlike the VMWare Player. For that reason I explain how to set it up in VirtualBox in detail.


What do you need?

  • VirtualBox here: VirtualBox
  • Putty or a similar terminal-program Putty
  • working Internet connection
  • optional but recommended: DHCP server from which the SqueezePlug gets its IP-address after starting for the first time


Installation process:


1. Download VirtualBox here: VirtualBox


2. Install it


3. Download the image for SqueezePlug_VM from my site: SqueezePlug


4. Expand the archive


5. Choose <file> <import appliance> Image:SqueezePlug_VM_1.PNG


6. After the import check the settings Image:SqueezePlug_VM_2.PNG


7. Check the settings for your network-interface and change it to fit your environment Image:SqueezePlug_VM_7.PNG


8. Press start


9. Login with user: root and Password: nosoup4u Image:SqueezePlug_VM_3.PNG


10. get the ip-address of the VM

root@squeezeplug:~# ifconfig

11. Connect to the VM via putty Image:SqueezePlug_VM_4.PNG


12. Confirm the security message Image:SqueezePlug_VM_5.PNG


13. Configure SqueezePlug: Configure SqueezePlug

root@squeezeplug:~# setup

Now you run your SqueezePlug_VM use it like a real hardware plug. If you feel it's good to work with, you will certianly like the SheevaPlug as well. You can even connect your music-library to the SqueezePlug_VM by USB or any other way described in this wiki.

Optionally, you can install SqueezeSlave or SoftSqueeze


SqueezeSlave

If you like to get sound-output directly from SqueezePlugVM you can do this by starting SqueezeSlave, a headless SqueezeBox-Player already installed on the SqueezePlug_VM.

  • From the console just type:
squeezeplug:~# squeezeslave &

to start squeezeslave.

Now you should see the SqueezeSlave Player like any other SqueezeBox_Player on your network and you should hear sound if you play a song.

If that won't work, you should do this:

  • Identify your working soundcard on the SqueezePlug:
squeezeplug:~# squeezeslave -L

The working soundcard is indicated with a "*"

  • Start the alsamixer to configure your soundcard by typing:
squeezeplug:~# alsamixer
  • Select your soundcard, power up all sliders and set them to OO by typing <M> like shown:

Image:SqueezePlug_VM_6.PNG
Now the sound should work!

SoftSqueeze

And you can go one step further: Install SoftSqueeze on the host you run SqueezePlugVM, connect SoftSqueeze to your SqueezePlugVM and get the whole feeling of SqueezeBox! SoftSqueeze is Java and so it runs on every system. Setting it up is very easy, don't worry!

SqueezePlug_Sheeva_Manual

Install it all by yourself using this Wiki. This method is based on the method of Martin Michlmayr. It's for people with good Linux know how, which like to see how it all works. Don't use this if you are no Linux expert. It only works on SheevaPlugs.

Configure U-Boot for SqueezePlug_Sheeva_Manual

The following settings apply for all SheevaPlug models if you want to make a SqueezePlug_Sheeva_Manual installation.

  • First save your environment settings by typing in the serial console (Putty):
Marvell>> printenv

You now get output with all your current environment settings.

  • You should copy this to the clipboard by choosing "Copy all to clipboard" then paste this in a txt-file and save it. If something goes wrong, you are able to revert to these settings.
  • From the serial console (Putty) type these commands, one after the other, and confirm after every line by hitting <return>. Copy each line to the clipboard (<ctrl> + <c> and paste this in the Putty window by clicking the right mouse button:
Marvell>> setenv mainlineLinux yes
Marvell>> setenv arcNumber 2097
Marvell>> setenv bootargs_console console=ttyS0,115200
Marvell>> setenv bootcmd_mmc 'mmcinit; mmcinit; ext2load mmc 0 0x01100000 /uInitrd; ext2load mmc 0 0x00800000 /uImage'
Marvell>> setenv bootcmd 'setenv bootargs $(bootargs_console); run bootcmd_mmc; bootm 0x00800000 0x01100000'
Marvell>> saveenv

If you want to restore the original settings, do the following:

  • Look up the original settings from your saved environment variables for the variables you have changed.

It look like this for example:

mainlineLinux=yes.
  • To reset the value type:
Marvell>> setenv mainlineLinux no
Marvell>> saveenv

Do this for each variable you have changed and don't forget the:

Marvell>> saveenv

at the end!

If this still doesn't work try the following:

  • Reset u-boot to the factory-settings:
Marvell>> resetenv
Marvell>> reset
  • After that, type in the variables as above again.



Prepare the system

  • Format your sd-card with fat32 from your windows system.
  • Copy the files uImage and uIntrd to your sd-card.
  • Download the files here:
uImage: uImage
UInitrd: uInitrd

Attention: If you download the files with IE, the files get an .txt suffix: Delete this before copying the files to the sd-card.

  • Boot your SheevaPlug and interrupt the boot-process by hitting <return> several times. If you are not quick enough, boot the linux-system from NAND and shut it down afterwards by typing:
login as: root
pw: nosoup4u
shutdown –r now
  • Interrupt the booting-process again by hitting <return> several times.
  • Type in the following commands:
Marvell>> mmcinit
Marvell>> fatload mmc 0:1 0x0800000 /uInitrd
Marvell>> fatload mmc 0:1 0x400000 /uImage
Marvell>> setenv bootargs console=ttyS0,115200n8 base-installer/initramfs-tools/driver-policy=most
Marvell>> bootm 0x400000 0x0800000

Setup Debian

  • The bootstrap system starts and you can begin the installation of Debian.

The installation itself should be pretty standard. The installer knows about the SheevaPlug and will create a bootable kernel and ramdisk at the end of the installation.

  • For the partitioning choose "guided partitioning"

If this won't work, do the partitioning of the sd-card manually and not automatically.

  • Then: Erase the existing partitions and data and build new ones.
All partitions are primary partitions.
The essential parameters for the installation are:
Partitions
  • Partition: /boot; Size: 128 MB; file-system: ext2; Flag: boot
  • Partition: Swap; Size: 256 MB; file-system: swap
  • Partition: /; Size: Rest of space; file-system: ext3

Software Selection

  • SSH server
  • Standard system utilities
  • Notebook

The steps above are from the the documentation here http://www.cyrius.com/debian/kirkwood/sheevaplug/install.html. If you want you can also read it there.

Special hint: By pressing <ctrl> + <c> you can copy the commands selected from the wiki to the clipboard. Then click the right mouse button to paste the commands to the putty terminal.

  • Start the system and login:
login as: root
pw: nosoup4u

Install more packages

Now you should update your new system and install some more packages. If you think you don't need the package, just leave it:

  • Update the system with the newest packages available:
squeezeplug:~# apt-get --yes update
squeezeplug:~# apt-get --yes upgrade
  • Install ntfs-3g for connecting NTFS USB-drives to your SqueezePlug:
squeezeplug:~# apt-get --yes install ntfs-3g
  • Install NFS for establishing NFS-Connections from your SqueezePlug like a NAS-Connection:
squeezeplug:~# apt-get --yes install nfs-common portmap
  • Install a SAMBA-Client to connect your SqueezePlug to a SAMBA Share:
squeezeplug:~# apt-get --yes install smbfs
  • Install ntpdate to get the correct time from the Internet:
squeezeplug:~# apt-get --yes install ntpdate
  • Install file:
squeezeplug:~# apt-get --yes install file
  • Install dialog
squeezeplug:~# apt-get --yes install dialog
  • Clean up the system:
squeezeplug:~# apt-get --yes clean



Network Connection

The next step you should do from the serial console, because you change network settings. Restarting the network interface of your SheevaPlug during this causes the IP-connection to quit.

  • Login to the system and configure your network settings:
squeezeplug login: root
Password: nosoup4u
squeezeplug:~# nano /etc/network/interfaces
  • Change the file like this (depends on your network setup).

You can replace the whole text of the file by deleting the original text and paste the following text. Delete the "#" as you need it:

# This file describes the network interfaces available on your system
# and how to activate them.
#
# The loopback network interface
auto lo
iface lo inet loopback
#
# The primary network interface
allow-hotplug eth0
#
# Your settings start here:
#
# for DHCP use:
# iface eth0 inet dhcp
#
# for static IP use something like this (depends on your network setup):
# iface eth0 inet static
# address 192.168.2.102
# netmask 255.255.255.0
# network 192.168.2.0
# Broadcast 192.168.2.255
# gateway 192.168.2.1
#
# settings from the SqueezePlug script starts here:
  • Write the file with <ctrl> + <o>, confirm the filename with <return> and quit nano with <ctrl> + <x>
  • Shutdown and restart the network with the new settings:
squeezeplug:~# ifdown eth0
squeezeplug:~# ifup eth0

You now can choose between connecting via USB-Serial connection or network connection for the further steps. I suggest checking the interface settings first and then connect via network connection:

 squeezeplug:~# ifconfig
  • Proof the settings and if they are correct, make a new network connection (SSH) via putty.



Filesharing Connection

Your way to connect a music library depends on your personal environment. Options discussed in this wiki are:

If you like, you can setup more than one filesharing connection type.
There may be other options. Please tell me or complete this wiki.
  • For all types of file-share connections you need a mount point. For simplicity we create mount points for every type of connection:
squeezeplug:~# mkdir -p /mnt/nfs/music /mnt/samba/music /mnt/usb/music
  • Edit the rc.local file for forcing the system to mount usb-drives on every start:
squeezeplug:~# nano /etc/rc.local

It should look like this:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.	
#
# By default this script does nothing.
mount -a
exit 0

USB Fat/Fat32 drive

  • Plug the USB-drive in to your SqueezePlug.
  • Find out the name of your USB-drive by typing:
squeezeplug:~# fdisk -l | grep FAT32

You now see the name of the USB-drive.

  • Remember the name and edit the fstab-file:
squeezeplug:~# nano /etc/fstab
# /dev/sda1 /mnt/usb/music vfat rw,user,auto 0 0
  • Delete the "#" and replace /dev/sda1 with your drive name.
  • Write the file with <ctrl> + <o>, confirm the filename with <return> and quit nano with <ctrl> + <x>
  • Mount all drives:
squeezeplug:~# mount -a

If you like to update files on the USB drive from a Workstation on your network, you can choose between dfferent possibilities:

  • Configure a Samba Server -- look at #Install Samba Server.
  • Use Secure Copy e.g. WinSCP
  • Use FileZilla
  • ...



USB NTFS drive

  • Plug the USB-drive in to your SqueezePlug.
  • Find out the name of your USB-drive by typing:
squeezeplug:~# fdisk -l | grep NTFS

You now see the name of the USB-drive.

  • Remember the name and edit the fstab-file:
squeezeplug:~# nano /etc/fstab
# /dev/sda1 /mnt/usb/music ntfs-3g defaults,locale=en_US.utf8 0 0
  • Delete the "#" and replace /dev/sda1 with your drive name.
  • Write the file with <<ctrl>> + <<o>>, confirm the filename with <<return>> and quit nano with <<ctrl>> + <<x>>
  • Mount all drives:
squeezeplug:~# mount -a

If you like to update files on the USB drive from a Workstation on your network, you can choose between dfferent possibilities:

  • Configure a Samba Server -- look at #Install Samba Server.
  • Use Secure Copy e.g. WinSCP
  • Use FileZilla
  • ...



NFS Connection

  • Configure your NAS to accept connections from the SqueezePlug. Consult your NAS documentation.
squeezeplug:~# nano /etc/fstab
# 192.168.2.100:/raid/data/iTunes_music /mnt/nfs/music nfs defaults 0 0
  • Delete the "#" and replace 192.168.2.100:/raid/data/iTunes_music with your connection data.
  • Write the file with <ctrl> + <o>, confirm the filename with <return> and quit nano with <ctrl> + <x>
  • Mount all drives:
squeezeplug:~# mount -a



Samba Client Connection

With these settings you get a connection from your SqueezePlug to a samba share. Use this if your music-library is stored on a samba server on your network.

  • First make sure that your Samba-Share is working properly. It is in my opinion best to test with a client-system other than the SqueezePlug initially, just to make sure that the share is working. Set the user and the rights for your Samba-Connection and remember the values
  • Edit /etc/fstab:
#//192.168.2.10/samba /mnt/samba/music smbfs username=<username>,password=<password>
  • Delete the "#" and replace 192.168.2.10/samba and <username> and <password> with your connection data.
  • Write the file with <ctrl> + <o>, confirm the filename with <return> and quit nano with <ctrl> + <x>
  • Mount all drives:
squeezeplug:~# mount -a



Install Webmin

  • Edit sources list for installing webmin:
squeezeplug:~# nano /etc/apt/sources.list
  • Add the lines:
# webmin repository
deb http://download.webmin.com/download/repository sarge contrib
  • Write the file with <ctrl> + <o>, confirm the filename with <return> and quit nano with <ctrl> + <x>
squeezeplug:~# cd /root
squeezeplug:~# wget http://www.webmin.com/jcameron-key.asc
squeezeplug:~# apt-key add jcameron-key.asc
squeezeplug:~# rm jcameron-key.asc
  • You will now be able to install webmin:
squeezeplug:~# apt-get --yes update
squeezeplug:~# apt-get --yes install webmin

(this will take a while …)

Make a connection to webmin from a web browser:

  • https:/<your ip address of SqueezePlug>:10000
  • Login with user: root pw: nosoup4u (Ignore the missing certificate hint).

Change timezone and time

Do it from webmin:

  • Hardware
    • System Time
      • set timezone
      • set timeserver (for example: ptbtime1.ptb.de)



Install Samba Server

If you want to get a connection to the USB drive directly connected to your SqueezePlug you best install a Samba Server on the SqueezePlug. You than will be able to connect to the USB drive by a file connection from your Windows Workstation. This is very useful to update files in the music library.

Setting up a Samba Server normally is a bit tricky. If you do this by webmin, it's pretty easy. This part of the Wiki assumes that you have installed webmin before.

  • Be sure that you have plugged your usb drive and configured it, so that it is well mounted.
  • Start a webmin session from your browser.
https://<your ip address of SqueezePlug>:10000
  • Ignore the certificate warning
  • Choose "Un-used Modules" from the left navigation
  • Choose "Samba Windows File Sharing"
  • Install the Samba Server
  • After the Samba Server is installed, choose "Servers"
  • Choose "Samba Windows File Sharing"
  • Choose "Create a new file share"
  • Give a name for the share: In "Share name" type maybe <music>
  • Choose a directory to share: /mnt/usb/music and click "o.k."
  • Click "create"

Now you should see the share in the list.

  • Click on it
  • Click on "Security and Access Control"
  • Select "Guest Access?" "yes"
  • Click on "Save"
  • Click on "File Permissions"
  • At "Force Unix user" select "root"
  • Click on "Save"

The setting for the workgroup comes from the domain-name of the SqueezePlug. This name depends on your setup. If you use one of my images the name is set to "workgroup". Be sure to setup the workgroup name to the name of your local windows workgroup. If your windows workgroup has a different name than "workgroup" change the name by using webmin:

  • Choose "Windows Networking" from "Global Configuration"
  • At "Workgroup" type in the name of your workgroup
  • At "Security" choose "Share level"

Now you are able to make a connection from your Windows Workstations to the USB drive connected to your SqueezePlug.

Install SqueezeBox-Server

You can download the installation-package directly to your SqueezePlug and install SBS directly from the plug.

  • Do the following:
  • Create a directory for installation and download SBS
squeezeplug:~# cd /
squeezeplug:~# mkdir install
squeezeplug:~# cd install
squeezeplug:~# wget http://downloads.slimdevices.com/SqueezeboxServer_v7.5.1/squeezeboxserver_7.5.1_all.deb
squeezeplug:~# apt-get --yes update
squeezeplug:~# dpkg -i squeezeboxserver_7.5.1_all.deb
  • Ignore any errors like this: “Errors were encountered while processing: squeezeboxserver”
squeezeplug:~# apt-get --yes --force-yes install -f
  • Set the password for MySQL root: nosoup4u and repeat it


  • If you want to free a little space on the SqueezePlug do this:
squeezeplug:~# apt-get --yes clean



Optimize SqueezePlug

This step is to optimize your SqueezePlug. You will renew the SSH-Keys of the Plug to get your personal and unique Keys and you will set the system up to reduce flash writings on the sd-card, so that it will live a little longer.

  • Renew the SSH keys:
squeezeplug:~# ssh-keygen -q -f /etc/ssh/ssh_host_key -N '' -t rsa1 
squeezeplug:~# ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa
  • Type "y" when asked for overwriting existing keys
squeezeplug:~# ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N '' -t dsa
  • Type "y" when asked for overwriting existing keys
  • Tuning Debian by reducing flash writing:

This is from http://www.plugcomputer.org/plugwiki/index.php/Reduce_Flash_Writes

squeezeplug:~# echo 0 >/proc/sys/vm/swappiness
squeezeplug:~# echo 5 > /proc/sys/vm/laptop_mode
squeezeplug:~# echo 1500 > /proc/sys/vm/dirty_writeback_centisecs
squeezeplug:~# echo 1500 > /proc/sys/vm/dirty_expire_centisecs
  • To make the change permanent add a line to /etc/sysctl.conf:
squeezeplug:~# nano /etc/sysctl.conf
  • add the lines:
vm.swappiness=0
vm.laptop_mode=5
vm.dirty_writeback_centisecs=1500
vm.dirty_expire_centisecs=1500


  • Change /etc/fstab:
squeezeplug:~# nano /etc/fstab
  • Add the line:
rootfs / rootfs relatime,rw 0 0



Prepare the SD-Card / USB-Stick

The quickest way to get your SqueezePlug up and running is to use one of my images. They are built for people who have either very little or even no knowledge in Linux and don’t want to spend a lot of time doing all the steps on their own.

Please note that SD-cards or USB-sicks may differ in size, even if they are labelled as 4 GB. The newest version of the USB Image Tool has a very cool feature: you can copy larger images to smaller SD-Cards or USB-sticks. For that reason I've setup the SD-card / USB-stick I took the image from with partitions smaller than the maximum size the SD-card / USB-stick offers. So you can now use the image for nearly every SD-card / USB-stick.

Images are made with the USB Image Tool for Windows systems. You can download it here: USB Image Tool. Make sure you use the newest version because it solves the problem with SD-cards / USB-sticks differing in size as mentioned above. You can also use Linux and the "dd" command to create SD-cards or USB-sticks.

  • Install this tool on your Windows-system.
  • Download the image from my site: SqueezePlug
  • After downloading an image, unpack it to your PC.
  • Start the USB Image Tool (as administrator in Windows Vista or Windows 7) and configure it via the "options" tab as shown in the screenshot below
  • Be sure to set the tool to “device mode”, not to “volume mode”
  • Write the *.img file to your SD-card / USB-stick by clicking the "restore"-button. Select the image file and hit "OK".
  • You can also use larger SD-cards / USB-sticks and expand the system partition later using "gparted" or another tool for expanding partitions.


Image:usb_image_tool_seetings.png

USB Image Tool Settings







Establishing an IP-connection

An IP-connection is only possible if your Plug already has got an IP-Address by DHCP (Dynamic Host Configuration Protocol) or you have setup the IP-settings of the Plug manually. The following devices are ready to connect via an IP-connection by default:

  • SheevaPlug (MultiBoot Option started with a SqueezePlug Image)
  • Raspberry Pi (started with a SqueezePlug Image)
  • DockStar
  • Goflex Net


So if you own one of the devices from above just find out the IP-address and connect via SSH e.g. with putty. Normally you do that from your router and there search for DHCP-information.

If you have to change the settings of the bootloader (u-boot) (not necessary on Raspberry Pi) to boot with an SqueezePlug image you can't do this from an IP-connection. This only works from a serial-connection. So with the SheevaPlug Developer Kit, the normal way is to first connect to the Plug by a serial-connection, configure it and later when everything is setup connect via IP. You then only need the serial-connection if something goes wrong with you plug.

After booting try to connect to SqueezePlug via IP. If a DHCP-server is running, you have to know the IP-address the DHCP-server has assigned to your SqueezePlug. One way to look it up is in the router's GUI. If that doesn't work or you don't know how to find it, there are two other ways you can try:

1. Try to ping the netbios name of the SqueezePlug (do it from a DOS-Box of your Windows PC)

ping squeezeplug

If you get an IP-address reported back, you can use this or use the netbios name with a terminal connection using putty (or any other terminal program).

2. If that doesn't work, try to give the SqueezePlug a temporary IP-address.

  • Discover a free IP-address form your subnet. Be sure that this IP-address is not used by any other network device by trying a ping to that address. If the ping reports error-messages stating the address specified does not answer you can be sure that this address is free.
  • Look up the MAC-address of your SheevaPlug (printed on the back-side of your Plug and looking like this: 00:50:43:xx:xx:xx)
  • Open a DOS-Box an type:
arp -s IP-address MAC-address
  • Check whether this works by pinging the IP-address
ping IP-address 
  • Now you should be able to connect to the SqueezePlug via a putty SSH-session using this IP-address.
  • If that all doesn't work, you have to make a serial (USB) connection.


Only for SheevaPlugs
Sometimes the reason you can't connect via IP is that your SD-card is not recognized at boot-time, so you have to change the boot-environment. In that case you'll have to establish a serial connection as well, goto #Establishing a Serial-Connection.


Only for Raspberry Pi
You can watch the boot-process on an attached monitor. If you don't see an IP-address here, login with an attached keyboard (User: root, Password: nosoup4u) and type:
ifconfig


Image:Putty_ip_connection.png

Settings for a putty IP-connection










Establishing a Serial-connection

A serial connection to the plug is very important for various reasons. You should be prepared to have such a connection, because you can't do everything with the Plug from an IP-connection or if you don't have an IP-connection. The first thing you need to do on Windows is to install the FTDI 2232 driver that supports the Plug Computer mini-USB to serial connection. First, you need to be prepared to install three different drivers to get the serial terminal to work.

Installing the Windows Driver

Look in WindowsTeraTermUSBDriver.zip on the CD that came with your plug or download it. This driver is meant for Microsoft Windows XP (but may work elsewhere). You can download the latest driver here: serialdriver The first driver install is to recognize the FTDI connection on the other end of the mini-USB cable. The second and third drivers are installed to convert the FTDI 2232 controllers to serial terminals.

  • Extract the archive to an directory on your PC. You will only need the directory "CDM 2.04.16_SHEEVA"

Image:SC_0.png

  • Choose a path you like, I choose c:/install/
  • Plug in the USB-Connection between you PC and the SheevaPlug
  • Power on the SheevaPlug
  • Your PC will recognize the SheevaPlug
  • The New Hardware Wizard starts

Image:SC_1.png

  • Don't search for updates

Image:SC_2.png

  • Choose "Install from a list or from a specific location"

Image:SC_3.png

  • Point the path to your installation directory
  • Do this for the three different drivers: "USB Serial Converter A", "USB Serial Converter B" and " USB Serial Port", till you get this screen:

Image:SC_4.png

  • After the installation is finished, you have to figure out which COM-Port is mapped. For that go to control panel/system/device manager open the device-mananger and find the USB Serial Port. In order to find the COM port to use, and look in the Ports section. Sheeva is listed as USB serial port and after it between brackets is the name of the COM port (e.g. COM4 or COM24).

Image:SC_5.png

Settings for a Putty Serial-Connection

Now you are ready to establish a putty connection.

  • If not already done, download putty from here: Putty
  • Baudrate to use is 115200 (8N1). If you get problems when you try to interrupt the boot-process because the plug doesn't accept your Any-Key, then try to set the Handshake for the serial connection to NONE.

Image:putty_serial_connection.png







Fix SD-Card Bug

The reason why an IP-Connection to the Plug failed may be because your sd-card doesn't work properly. Some sd-cards are not recognized at boot-time with the standard environment variables, so you have to change the boot-environment. In that case you have to change the bootcmd_mmc variable to initialize the sd-card twice as a workaround.

  • Form the marvel prompt type:
Marvell>> setenv 'bootcmd_mmc=setenv bootargs $(bootargs_console) $(bootargs_root_mmc); mmcinit; mmcinit; ext2load mmc 0:1 0x800000 /uImage; bootm  0x00800000'
saveenv
reset
  • Check whether the card is recognized at boot-time now. If not, try another card.






Check U-Boot Version

If you own a SheevaPlug like the original factory set Sheeva Dev Kit you have to check your u-boot version (the boot system of your SheevaPlug) and perhaps update it and change some u-boot environment variables as described in this Wiki. This can only be done via serial connection.

  • establish a serial (USB) Connection to your SheevaPlug.
  • interrupt the booting-process by hitting <return> several times. If you are not quick enough, boot the linux-system from NAND and shut it down afterwards by typing:
login as: root
pw: nosoup4u
shutdown –r now
  • Interrupt the booting-process again by hitting <return> several times.
  • Check your version of the u-boot environment:
Marvell>> version
If you're running a version of u-boot older than 3.4.19 you have to update u-boot before proceeding with the next steps!

This can be accomplished in two different ways. Either you use a USB stick (recommended) or do it with the "TFTP-method" if you don't have a USB stick at hand.






Update U-Boot

First of all, get the updated uboot version. You can download version 3.4.27 here: U-Boot 3.4.27

USB stick method

For this method you need an USB stick formatted with FAT or FAT32 filesystem. Apart from that any stick will work as we need less than 1 MB of free space on it.

  • Download the uboot.bin file as described above and copy it to your USB stick.
  • Plug the stick in your SheevaPlug.
  • Establish a serial connection to your plug if you haven't done so already and type the following commands (copy and paste will also work):
Marvell>> usb start
Marvell>> fatload usb 0:1 0x0800000 uboot.bin
Marvell>> nand erase 0x0 0xa0000
Marvell>> nand write 0x0800000 0x0 0xa0000

Reboot your plug by typing the following command:

Marvell>> reset
TFTP method

For updating the uboot version via this method you need TFTP software. I recommend using Tftpd32 which you can find here: TFTP Server.

Be sure to set "TFTP Security" to "none". Image:tftp_server_setting.png

TFTP security settings
  • Install the TFTP-Server
  • Download the U-Boot file
  • Copy the file uboot.bin to your TFTP server directory.
  • Start your SheevaPlug, connect the serial console and type the following commands:
Marvell>> setenv serverip 192.168.1.2 # IP of your TFTP server
Marvell>> setenv ipaddr 192.168.1.200 # IP-address of your SheevaPlug
Marvell>> bubt uboot.bin

The upgrade process will ask whether you want to change the environment:

Override Env parameters? (y/n) n

Make sure to answer "n" here.
After that reboot your plug by typing the following command:

Marvell>> reset

Regardless of the method used you can verify that the new version is installed correctly as described at the start of this section.

If you need more information on updating U-Boot read here: update u-boot






Configure U-Boot for SqueezePlug_Sheeva_Image

The following settings only apply for SheevaPlug models which are not setup as multi-boot Plugs and without the UBIFS-Filesystem installed on the NAND. Therefore these setting apply for Plugs with a JFFS-Filesystem installed on the NAND only. The Basic SheevaPlug is coming with this setup for example.

  • First, save your environment settings by typing in the serial console (Putty):
Marvell>> printenv

You now get output with all your environment settings.

  • You should copy this to the clipboard by right-clicking the top bar of your putty window and choosing "Copy all to clipboard" then paste this in a txt-file and save it.
  • From the serial console (Putty) type these commands, one after the other, and confirm after every line by hitting <return>. Copy each line to the clipboard (<ctrl> + <c>) and paste this in the Putty window by clicking the right mouse button.
SD-Boot only

With these settings the plug will only boot from the SD-Card, not from the NAND:

  • Please note that you have to set the value of the ethaddr variable to the MAC-Address of your Plug (look it up from the backside of the Plug).
Marvell>> setenv arcNumber 2097
Marvell>> setenv bootargs_console console=ttyS0,115200
Marvell>> setenv bootargs_root root=/dev/mmcblk0p2 rootdelay=5
Marvell>> setenv bootcmd 'setenv bootargs $(bootargs_console) $(bootargs_root); mmcinit; mmcinit; ext2load mmc 0:1 0x800000 /uImage; bootm 0x00800000'
Marvell>> setenv ethaddr 00:50:43:xx:xx:xx
Marvell>> setenv filesize 32D62A
Marvell>> setenv mainlineLinux yes
Marvell>> setenv real_bootcmd 'setenv bootargs $(bootargs_console) $(bootargs_root); mmcinit; mmcinit; ext2load mmc 0:1 0x800000 /uImage; bootm 0x00800000'
Marvell>> saveenv
  • If you like to restore the original settings to boot from NAND do this:
setenv bootargs 'console=ttyS0,115200 mtdparts=nand_mtd:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs) rw root=/dev/mtdblock1 rw ip=10.4.50.4:10.4.50.5:10.4.50.5:255.255.255.0:DB88FXX81:eth0:none'
setenv bootargs_root root=/dev/mtdblock2 ro
setenv bootcmd nand read.e 0x800000 0x100000 0x400000; bootm 0x800000
setenv cesvcid ULULULULULULPPULULULULULDA
setenv console console=ttyS0,115200
setenv mainlineLinux no
setenv run_diag no
saveenv
Select boot
  • If you like your system being able to choose between booting from NAND or from SD-Card you can do the following:
setenv bootargs_root_factory root=/dev/mtdblock2 ro
setenv mtdpartitions_factory mtdparts=nand_mtd:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs) rw root=/dev/mtdblock1 rw
setenv prepare_factory_settings 'setenv arcNumber;setenv mainlineLinux no; setenv run_diag no;setenv console console=ttyS0,115200;setenv cesvcid ULULULULULULPPULULULULULDA;'
setenv bootcmd_factory 'run prepare_factory_settings;setenv bootargs $(bootargs_console) $(mtdpartitions_factory);nand read.e 0x800000 0x100000 0x400000; bootm 0x800000'
setenv prepare_mmc_settings 'setenv mainlineLinux yes;setenv arcNumber 2097;setenv run_diag;'
setenv bootargs_root_mmc root=/dev/mmcblk0p2 rootdelay=5
setenv bootcmd_mmc 'run prepare_mmc_settings;setenv bootargs $(bootargs_console) $(bootargs_root_mmc); mmcinit; mmcinit; ext2load mmc 0:1 0x800000 /uImage; bootm 0x00800000'
To boot from SD-Card do the following
run prepare_mmc_settings
saveenv
reset
run bootcmd_mmc
To boot from NAND do the following
run prepare_factory_settings
saveenv
reset
run bootcmd_factory






Configure SqueezePlug

The SqueezePlug Scripts configures your network settings, your filesharing connections, installs Media-Servers automatically and does a lot more useful things.

To start the SqueezePlug Scripts do this:

  • Logon to SqueezePlug:
login as: root
pw: nosoup4u
  • On your running system, start the SqueezePlug Scripts by typing:
squeezeplug:~# setup
Standard settings
  • You should follow the installation-points one after the other:

Image:setup_script_1.PNG

  • Network: Configure your network settings and decide between dynamic IP by DHCP or a static IP-address. Type in all as asked
  • Library: Configure the path to your music-library. You can use various options (USB/eSATA directly connected, Samba, NFS)
  • Media-Servers: You can choose various media-server to install on your device.
  • Misc: various options
  • Reboot: reboots your device


Misc settings

You can choose various options from this menue, take a look:
Image:setup_script_2.PNG











Appendix

Images

You will find all images here
SqueezePlug Images

What else will you need?

Boostrap Files for Debian installation
Squeezebox-Server
U-boot Version 3.4.23

md5sum is 02ddee1875376ed2b28ffc0111472c9b
Version 3.4.23 is not the newest one but works fine. Some people reported problems with newer versions. NewIT uses this version.

Tools

Useful links

Known Bugs

  • Bug in partitioning the sd-card if you install Debian "the long way". Workaround: Do the partitioning manually as described.
  • Someone reported that the SBS Server starts in German. All the local settings are in English, I believe. I'm still searching for the bug! Workaround: change the language by going to Squeezeboxserver Settings, Basic Settings page, and selecting the language of your choice.
  • Ignore the error message at boot time: "Setting kernel variables ...error: "net.ipv6.bindv6only" is an unknown key

failed." It's because you don't use IPv6.

Setenv commands for resetting Sheevaplug

Here are the setenv commands for resetting Sheevaplug.

Factory Settings

These settings are from the u-boot version 3.4.23, if you use an other version they might be different! You will get these settings if you do a resetenv from the Marvell prompt

autoload=no
baudrate=115200
bootargs=console=ttyS0,115200 mtdparts=nand_mtd:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs) rw root=/dev/mtdblock1 rw ip=10.4.50.4:10.4.50.5:10.4.50.5:255.255.255.0:DB88FXX81:eth0:none
bootargs_end=:::DB88FXX81:eth0:none
bootargs_root=root=/dev/mtdblock2 ro
bootcmd=nand read.e 0x800000 0x100000 0x400000; bootm 0x800000
bootdelay=3
CASset=min
cesvcid=ULULULULULULPPULULULULULDA
console=console=ttyS0,115200
disaMvPnp=no
disL2Cache=no
disL2Prefetch=yes
enaAutoRecovery=yes
enaCpuStream=no
enaDCPref=yes
enaICPref=yes
enaMonExt=no
enaWrAllo=no
ethact=egiga0
ethaddr=00:50:43:xx:xx:xx
ethmtu=1500
ethprime=egiga0
image_name=uImage
ipaddr=10.10.0.1
loadaddr=0x02000000
loads_echo=0
mainlineLinux=no
MALLOC_len=1
mvNetConfig=mv_net_config=(00:11:88:0f:62:81,0:1:2:3),mtu=1500
mvPhoneConfig=mv_phone_config=dev0:fxs,dev1:fxs
nandEcc=1bit
netbsd_en=no
netmask=255.255.0.0
netretry=no
pexMode=RC
rcvrip=169.254.100.100
rootpath=/mnt/ARM_FS/
run_diag=no
sata_dma_mode=yes
serverip=10.10.0.2
setL2CacheWT=yes
standalone=fsload 0x2000000 $(image_name);setenv bootargs $(console) root=/dev/mtdblock0 rw ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvPhoneConfig); bootm 0x2000000;
stderr=serial
stdin=serial
stdout=serial
usb0Mode=host
vxworks_en=no
yuk_ethaddr=00:00:00:EE:51:81
  • Please note that you have to setup the ethaddr to your MAC-Address (look it up from the backside of the Plug).

NewIT Multi-Boot Option

These are the setting for the multi-boot option from NewIT:

arcNumber=2097
autoload=no
baudrate=115200
bootargs_console=console=ttyS0,115200
bootargs_end=:::DB88FXX81:eth0:none
bootargs_root_mmc=root=/dev/mmcblk0p2 rootdelay=5
bootargs_root_nand=ubi.mtd=1 root=ubi0:rootfs rootfstype=ubifs
bootargs_root=ubi.mtd=1 root=ubi0:rootfs rootfstype=ubifs
bootcmd_mmc=setenv bootargs $(bootargs_console) $(bootargs_root_mmc); mmcinit; ext2load mmc 0:1 0x800000 /uImage; bootm  0x00800000
bootcmd_nand=setenv bootargs $(bootargs_console) $(mtdpartitions) $(bootargs_root_nand); nand read.e 0x00800000  0x00100000 0x00400000; bootm 0x00800000
bootcmd=run bootcmd_mmc; run bootcmd_nand
bootdelay=3
CASset=min
console=console=ttyS0,115200 mtdparts=nand_mtd:0xc0000@0(uboot)ro,0x1ff00000@0x100000(root)
disaMvPnp=no
disL2Cache=no
disL2Prefetch=yes
enaAutoRecovery=yes
enaCpuStream=no
enaDCPref=yes
enaICPref=yes
enaMonExt=no
enaWrAllo=no
ethact=egiga0
ethaddr=00:50:43:01:xx:xx
ethmtu=1500
ethprime=egiga0
filesize=32D62A
image_name=uImage
ipaddr=10.4.50.165
loadaddr=0x02000000
loads_echo=0
mainlineLinux=yes
MALLOC_len=1
mtdpartitions=mtdparts=orion_nand:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs)
mvNetConfig=mv_net_config=(00:11:88:0f:62:81,0:1:2:3),mtu=1500
mvPhoneConfig=mv_phone_config=dev0:fxs,dev1:fxs
nandEcc=1bit
nandEnvBase=a0000
netbsd_en=no
netmask=255.255.255.0
netretry=no
pcieTune=no
pexMode=RC
rcvrip=169.254.100.100
real_bootcmd=run bootcmd_mmc; run bootcmd_nand
recover1=setenv mainlineLinux yes; setenv arcNumber 2097; setenv bootcmd run recover2; saveenv; reset
recover2=run recover3; setenv bootcmd $(real_bootcmd); saveenv; setenv bootargs $(bootargs_console) $(mtdpartitions root=/dev/ram0 rw ramdisk=0x01100000,8M install_type=nand; bootm 0x00800000 0x01100000
recover3=run recover4; nand erase clean 0x00100000 0x00400000; nand write.e 0x00800000 0x00100000 0x00400000
recover4=usb start; fatload usb 0 0x00800000 uImage; fatload usb 0 0x01100000 initrd
rootpath=/mnt/ARM_FS/
sata_dma_mode=yes
serverip=10.4.50.5
setL2CacheWT=yes
standalone=fsload 0x2000000 $(image_name);setenv bootargs $(console) root=/dev/mtdblock0 rw ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvPhoneConfig); bootm 0x2000000;
stderr=serial
stdin=serial
stdout=serial
usb0Mode=host
vxworks_en=no
yuk_ethaddr=00:00:00:EE:51:81
  • Please note that you have to setup the ethaddr to your MAC-Address (look it up from the backside of the Plug).
Restoring the multi-boot settings

If you wish to restore the settings for the multi-boot option do this: (Keep in mind, that you will need an UBIFS-NAND version to boot from NAND with this settings.)

  • At the Marvell prompt type:
Marvell>> resetenv
Marvell>> reset
  • After booting is completed type the following commands one after the other:
Marvell>> setenv arcNumber 2097
Marvell>> setenv bootargs_console console=ttyS0,115200
Marvell>> setenv bootargs_root_mmc root=/dev/mmcblk0p2 rootdelay=5
Marvell>> setenv bootargs_root_nand ubi.mtd=1 root=ubi0:rootfs rootfstype=ubifs
Marvell>> setenv bootargs_root ubi.mtd=1 root=ubi0:rootfs rootfstype=ubifs
Marvell>> setenv bootcmd_mmc 'setenv bootargs $(bootargs_console) $(bootargs_root_mmc); mmcinit; ext2load mmc 0:1 0x800000 /uImage; bootm 0x00800000'
Marvell>> setenv bootcmd_nand 'setenv bootargs $(bootargs_console) $(mtdpartitions) $(bootargs_root_nand); nand read.e 0x00800000 0x00100000 0x00400000; bootm 0x00800000'
Marvell>> setenv bootcmd 'run bootcmd_mmc; run bootcmd_nand'
Marvell>> setenv ethaddr 00:50:43:01:xx:xx
Marvell>> setenv filesize 32D62A
Marvell>> setenv mainlineLinux yes
Marvell>> setenv mtdpartitions mtdparts=orion_nand:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs)
Marvell>> setenv real_bootcmd 'run bootcmd_mmc; run bootcmd_nand'
Marvell>> saveenv
  • Please note that you have to setup the ethaddr to your MAC-Address (look it up from the backside of the Plug).


SD-Card Option

These are the setting for the sd-card option from NewIT
arcNumber=2097
autoload=no
baudrate=115200
bootargs_console=console=ttyS0,115200
bootargs_end=:::DB88FXX81:eth0:none
bootargs_root=root=/dev/mmcblk0p2 rootdelay=5
bootcmd=setenv bootargs $(bootargs_console) $(bootargs_root); mmcinit; ext2load mmc 0:1 0x800000 /uImage; bootm 0x00800000
bootdelay=3
CASset=min
console=console=ttyS0,115200 mtdparts=nand_mtd:0xc0000@0(uboot)ro,0x1ff00000@0x100000(root)
disaMvPnp=no
disL2Cache=no
disL2Prefetch=yes
enaAutoRecovery=yes
enaCpuStream=no
enaDCPref=yes
enaICPref=yes
enaMonExt=no
enaWrAllo=no
ethact=egiga0
ethaddr=00:50:43:xx:xx:xx
ethmtu=1500
ethprime=egiga0
filesize=32D62A
image_name=uImage
ipaddr=10.4.50.165
loadaddr=0x02000000
loads_echo=0
mainlineLinux=yes
MALLOC_len=1
mvNetConfig=mv_net_config=(00:11:88:0f:62:81,0:1:2:3),mtu=1500
mvPhoneConfig=mv_phone_config=dev0:fxs,dev1:fxs
nandEcc=1bit
nandEnvBase=a0000
netbsd_en=no
netmask=255.255.255.0
netretry=no
pcieTune=no
pexMode=RC
rcvrip=169.254.100.100
real_bootcmd=setenv bootargs $(bootargs_console) $(bootargs_root); mmcinit; ext2load mmc 0:1 0x800000 /uImage; bootm 0x00800000
recover1=setenv mainlineLinux yes; setenv arcNumber 2097; setenv bootcmd run recover2; saveenv; reset
recover2=run recover3; setenv bootcmd $(real_bootcmd); saveenv; setenv bootargs $(bootargs_console) root=/dev/ram0 rw ramdisk=0x01100000,8M install_type=mmc; bootm 0x00800000 0x01100000
recover3=usb start; fatload usb 0 0x00800000 uImage; fatload usb 0 0x01100000 initrd
rootpath=/mnt/ARM_FS/
sata_dma_mode=yes
serverip=10.4.50.5
setL2CacheWT=yes
standalone=fsload 0x2000000 $(image_name);setenv bootargs $(console) root=/dev/mtdblock0 rw ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvPhoneConfig); bootm 0x2000000;
stderr=serial
stdin=serial
stdout=serial
usb0Mode=host
vxworks_en=no
yuk_ethaddr=00:00:00:EE:51:81
  • Please note that you have to setup the ethaddr to your MAC-Address (look it up from the backside of the Plug).
Restoring the sd-card settings

If you wish to restore the settings for the sd-card option do this:

  • At the Marvell prompt type:
Marvell>> resetenv
Marvell>> reset
  • After booting is completed type the following commands one after the other:
Marvell>> setenv arcNumber 2097
Marvell>> setenv bootargs_console console=ttyS0,115200
Marvell>> setenv bootargs_root root=/dev/mmcblk0p2 rootdelay=5
Marvell>> setenv bootcmd 'setenv bootargs $(bootargs_console) $(bootargs_root); mmcinit; ext2load mmc 0:1 0x800000 /uImage; bootm 0x00800000'
Marvell>> setenv ethaddr=00:50:43:xx:xx:xx
Marvell>> setenv filesize 32D62A
Marvell>> setenv mainlineLinux=yes
Marvell>> setenv 'real_bootcmd=setenv bootargs $(bootargs_console) $(bootargs_root); mmcinit; ext2load mmc 0:1 0x800000 /uImage; bootm 0x00800000'
Marvell>> saveenv
  • Please note that you have to setup the ethaddr to your MAC-Address (look it up from the backside of the Plug).
Personal tools