what is it ?
It's a linux server in a plug not so big (like a desktop power adapter).
I bought mine on http://www.newit.co.uk and i received it one week later, one day from England to France and FIVE days from Orly(airport) to Paris, yes the last twenty km was very hard for the french delivery (La Poste).
I am very interested in this one rather than D2plug because there are 2 ethernets (Gigabits) interfaces, and it's more interesting for making a firewall. In fact there are 3/4 interfaces because we can use wireless network (802.11b/g and 802.15). I think i'll only use wifi, not bluetooth on it.
Don't forget to buy the JTAG, because this is the only way for accessing the boot console (aka BIOS).
JTAG or not JTAG?
First, i thought i will never use JTAG (very old system for accessing hardware).
The JTAG device have two connectors, UART and JTAG. UART is for accessing the console, boot command and ttyS0, and JTAG for debugging and hardware commands. So i only use UART at first, and thouht JTAG is not for me (i was so naive).
But after i have rebuilt a kernel, and reboot the system, this kernel was not very usefull. Or when i crashed the OS, i have the same conclusion, i can't reset the hardware and must move to my dreamplug, but it s not what i want.
Nice but not for me, it's an ubuntu 9.04, i am not a huge fan of ubuntu, but it's enought for many things. But ubuntu drop support for this architecture. That's why we can found the new release on google code. And change to ubuntu again (i am wrong, ubuntu didn't dropped ARM architecture).
I do not modify any bit of the main system, it's only for recover. i will use another system on USB or SD card, at first it's a dump of the main system, and i will use another distrib.
Yes, sure. First, we can use the google code distrib on a usb drive.
So on another system (your main computer for example), do these steps.
download dreamplug_debian_v0.2.tar.gzcurl http://dreamplug.googlecode.com/files/dreamplug_debian_v0.2.zip.001 >dreamplug_debian_v0.2.zipcurl http://dreamplug.googlecode.com/files/dreamplug_debian_v0.2.zip.002 >>dreamplug_debian_v0.2.zip7z x dreamplug_debian_v0.2.zipNow use a USB key and create a disk label and two partitions (like on the dreamplug) and create the new fs and system.
I suppose that your usb key is on /dev/sdf
create 2 partitions on usb disk/dev/sdf1 >128M fat16/dev/sdf2 >2Go ext3/ext4mkdosfs /dev/sdf1mkfs.ext3 -L /dream_root /dev/sdf2mount /dev/sdf2 /mnttar xvf dreamplug_debian_v0.2.tar.gz -C /mnt edit and make change on /mnt/root/init_setup.shumount /mntmount /dev/sdf1 /mntcurl http://dreamplug.googlecode.com/files/uImage >/mnt/uImage-2.6cp /mnt/uImage-2.6 /mnt/uImage-2.6.origumount /mntNow plug the USB key on the device and you must use UART/JTAG connector for accessing uboot parameters.
For now we can test and not save parameters that our distrib and kernel are correct. Start the DP and stop the boot proccess (hit a key)
I saved the boot image twice, uImage-2.6 and uImage-2.6.orig. This kernel is a valid kernel and we can allways recover with this kernel in future when a problem on the file (wrong update, rm,...)
Marvell>> usb startMarvell>> fatls usb 2Marvell>> fatload usb 2 0x6400000 uImage-2.6Marvell>> setenv bootargs console=ttyS0,115200 root=/dev/sdc2 rootdelay=10Marvell>> bootm 0x6400000Now you can login with root/nosoup4u, and you can make many flavours of this distro.
In boot parameters i'll allways use uImage-2.6 and when i'll upgrade the kernel i have to update this file on the FAT partition of my usb key.
The original boot command is starting network, try to boot from DHCP and USB and try to boot on it. So i prefer a simpler way, just start usb.
Marvell>> setenv x_bootcmd_usb usb startMarvell>> setenv x_bootcmd_kernel fatload usb 2 0x6400000 uImage-2.6Marvell>> setenv x_bootargs root=/dev/sdc2 rootdelay=10 console=ttyS0,115200Marvell>> setenv bootcmd ${x_bootcmd_usb}; ${x_bootcmd_kernel};setenv bootargs ${x_bootargs};bootm 0x6400000;Marvell>> saveenvSame as before, plug a new USB key in your DP, and use debootstrap/cdebootstrap for making your distro.
First install debootstrap or cdebootstrap on your DP or another computer if you have an ARM crossdev or emulator.
you can find the last pre-compiled kernel at sheeva kernel site.
# CHROOT="/data/DebianDream"# PKG="openssh-server,curl,rsync,localepurge,ntp,ntpdate,sudo,lsb-core"# mkdir -p $CHROOT# cd $CHROOT# cdebootstrap --flavour=standard --include=$PKG squeeze $CHROOT# sed -i 's/^#T0/T0/' $CHROOT/etc/inittab# sed -i 's/squeeze main$/squeeze main non-free/' $CHROOT/etc/apt/sources.list# chroot $CHROOT aptitude install libertas-firmware# chroot $CHROOT passwd# cp /usr/bin/uaputl $CHROOT/usr/bin/uaputl# curl -O $CHROOT/boot/uImage-2.6 http://sheeva.with-linux.com/sheeva/2.6.39/2.6.39.2/dream-2.6.39.2-uImage# curl -O /tmp/modules.tar.gz http://sheeva.with-linux.com/sheeva/2.6.39/2.6.39.2/sheeva-2.6.39.2-Modules.tar.gz# tar xvf /tmp/modules.tar.gz -C $CHROOT# rm /tmp/modules.tar.gzNow you can use this new distrib. /data/DebianDream can be a mount point of a new partition./device. or an archive for next release, and you can dump/restore to another device.
As usual you can create a cross dev environment or start from your DP.
# CHROOT="/data/GentooDream"# mkdir -p $CHROOT# wget -O /tmp/gentoo.stage3.tar.bz2 http://mirrors.kernel.org/gentoo/releases/arm/autobuilds/current-stage3-armv5tel/stage3-armv5tel-20110624.tar.bz2# tar xvf /tmp/gentoo.stage3.tar.bz2 -C $CHROOT# wget -O /tmp/portage.tar.bz2 http://mirrors.kernel.org/gentoo/releases/snapshots/current/portage-latest.tar.bz2# tar xvf /tmp/portage.tar.bz2 -C $CHROOT/usr# rm /tmp/gentoo.stage3.tar.bz2 /tmp/portage.tar.bz2# curl -O $CHROOT/boot/uImage-2.6 http://sheeva.with-linux.com/sheeva/2.6.39/2.6.39.2/dream-2.6.39.2-uImage# curl -O /tmp/modules.tar.gz http://sheeva.with-linux.com/sheeva/2.6.39/2.6.39.2/sheeva-2.6.39.2-Modules.tar.gz# tar xvf /tmp/modules.tar.gz -C $CHROOT# rm /tmp/modules.tar.gz# rc-config add net.eth0# rc-config add sshd# sed -i 's/\(^s0.*\) \([0-9]*\)/\1 115200/ /etc/inittab# passwdNow you can use this new distrib. /data/GentooDream can be a mount point of a new partition./device. or an archive for next release, and you can dump/restore to another device
Firs install openocd on your computer, the one connected to the JTAG device by USB cable.
# echo dev-embedded/openocd ftdi usb >/etc/portage/package.use/jtag# echo dev-embedded/openocd >/etc/portage/package.keywords/jtag# emerge openocdAfter, you must select and create a valid config file and start the openocd server
# cat /usr/share/openocd/scripts/interface/sheevaplug.cfg >/etc/openocd.cfg# cat /usr/share/openocd/scripts/board/sheevaplug.cfg >>/etc/openocd.cfg# openocd -f /etc/openocd.cfgsome basics use of JTAG
On another terminal, conect to the localhost port 4444
# telnet 127.0.0.1 4444> reset haltWith this command you can reset and halt to Marvell>> prompt at the UART console. Very usefull on crash or hang system.
Now we want to boot on a new type of File System like btrfs or ext4, so we must or we want to use initrd image.
Create an initramfs/initrd file
# uname -r2.6.39.2# update-initramfs -c -k 2.6.39.2update-initramfs: Generating /boot/initrd.img-2.6.39.2# mkimage -A arm -O linux -T ramdisk -C gzip -a 0x0 -e 0x0 -n "Debian ramdisk 2.6.39.2" -d /boot/initrd.img-2.6.39.2 /media/usb2/uInitrd-2.6Add boot prameters
Marvell>> setenv x_bootcmd_initrd fatload usb 2 0x6900000 uinitrd-2.6Marvell>> setenv bootcmd ${x_bootcmd_usb}; ${x_bootcmd_kernel}; ${x_bootcmd_initrd}; setenv bootargs ${x_bootargs} ${x_bootargs_root}; bootm 0x6400000 0x6900000;The first time, get the sources
Get the kernel via git on the kernel.org site and compile with the actual config.
You must download the patch libertas AP from marvell, and apply.
# git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git# mkdir Patches# cd linux# # export PatchList="linux-3.0-SDIO-micro-AP 0002-Driver-for-Marvell-Libertas-8688-SDIO-micro-AP-suppo-3.2 0003-Initial-defconfig linux-3.0.4-LIBERTAS-WEXT_PRIV mvsdio-1-2.6.30 mvsdio-2 sheeva-3-leds"
## for P in $PatchList;do# wget -O ../Patches/${P}.patch http://sheeva.with-linux.com/sheeva/3/3.2/3.2/source/${P}.patch patch -p1 < ../Patches/${P}.patch# done#The version of patches must be changed to suit yours.
Config and compile
To start, you can use the actual config from /proc, and modify some parameters.
# cd linux# zcat /proc/config.gz >.config# make menuconfig# make uImage# make modules# make modules_install# cp arch/arm/boot/uImage /bootAnd now you can use it and it works very well.
# uname -aLinux sheevaplug-debian 3.0.0-rc5-dirty #3 PREEMPT Sun Jul 3 00:29:23 UTC 2011 armv5tel GNU/Linux