NSLU2
Caractéristiques
- CM : NSLU2
- Proc : Arm Intel XScale IXP420 @266 MHz (ARMv5TE)
- Ram : 32 Mo
- Flash : 8 Mo
- Ports USB2 : 2
- LAN : 100 Mbit/s
- Dimensions : 2.1 x 9.1 x 13 cm
Acheté d'occasion fin mai 2007 déjà dé-underclocké (266 MHz); les premières révisions étaient bridées à 133 MHz.
Documentation : constructeur wiki linux nslu2
Détails
Sur la face avant du boitier se trouvent 4 led d'activités (état, eth, usb1, usb2) ainsi qu'un bouton d'allumage/d'extinction. La face arrière rassemble le connecteur d'alimentation, les 2 ports USB2 et le port Ethernet 100 Mbit/s
Carte mère du “slug” (surnom donné par la communauté au NSLU2, signifie “limace” )
Projets
Voici mes projets réalisés avec cette petite bestiole :
mpd
et lcdd
. Description complète par ici →
Suite des aventures →
Re-flashage d'un Linux
Le NSLU2, ou slug, est vendu avec un linux propriétaire, il est possible de le re-flasher avec une distribution standard offrant des possibilités bien plus importantes que le firmware de base.
J'ai donc remplacé le firmware d'origine avec la première Debian à gérer l'architecture armel
: Lenny 5.0.
J'ai suivi cet article expliquant en détail la procédure de flashage pour mettre une Debian dessus.
La flash est limitée à 8 Mo, il est difficile de faire rentrer une Debian sur un espace si restreint.
Le noyau + ramdisk installés sur la flash contiennent tous les modules nécessaires pour charger le système à partir d'une clés USB. Ainsi la limite de la flash pour /
est alors levée .
Voici la version du noyau utilisé : Linux version 2.6.26-2-ixp4xx (Debian 2.6.26-21lenny3)
.
Ajout de ports USB
06/2007 : le slug est fabriqué avec 2 ports USB mais le contrôleur est capable d'en gérer 4. Cette page décrit les points aux quels il faut se brancher pour ajouter des nouveaux ports. En faisant quelques points de soudures très fines sur la carte mère, il est possible d'ajouter 2 ports supplémentaires. J'ai agrandi les ouvertures du boitier pour y loger ces 2 nouveaux ports.
08/2007 : Lors de mes manipulations, la soudure d'un des nouveaux fil s'est cassée, il s'est promené sur la carte mère en provoquant des courts circuits et n'a grillé que 2 ports USB . Par chance, l'un des ports natif est toujours opérationnel, j'ai remplacé les fils de connexion des ports HS vers un petit hub.
Je l'ai dégoté sur un site d'enchères en ligne, lui ai retiré le boitier plastique, dessoudé les ports existant et soudé des rallonges de fils vers les ports en façade. Comme il restait encore un port libre sur le hub, je l'ai utilisé pour en faire un connecteur interne au slug afin d'y brancher la clé USB du système.
L'ensemble est suffisament fin pour rentrer dans le boitier d'origine sans modification supplémentaire.
Port série
12/2013 : sur la carte mère du slug se trouve les 4 pin habituels d'un port série : 3.3 V, Tx, Rx et GND. Il suffit d'y souder un connecteur et d'y brancher un adaptateur USB pour interargir dessus par le biais d'un autre ordinateur. Le wiki du NSLU2 explique en détail le brochage du port. Le port est au pas standard de 2.54 mm juste en dessous de la batterie. Par contre, le niveau de TTL est de 3.3V, il faut être vigilant sur l'adaptateur utilisé, certains fonctionnant en 5V.
Ce type de connexion permet d'accéder au slug sans passer par une pile réseau. Il est également possible d'interargir avec l'amorceur de démarrage redboot (équivalent du Bios sur les PC) pour démarrer un firmware différent, le charger depuis le réseau…
La communication série est fiable, tout en ne consommant que peu de ressources (contrairement à un serveur ssh) et est toujours utilisée pour le le débogage des matériels de tout type.
J'ai acheté pour quelques € un adaptateur à base de puce PL2303hx qui gère nativement l'interface USB vers RS232 et est compatible 3.3V.
Une fois l'adaptateur branché sur le 2nd ordinateur, le noyau reconnait bien l'adaptateur :
[ 222.581022] usb 3-1.3: new full-speed USB device number 18 using xhci_hcd [ 222.598041] usb 3-1.3: New USB device found, idVendor=067b, idProduct=2303 [ 222.598049] usb 3-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 222.598054] usb 3-1.3: Product: USB-Serial Controller [ 222.598058] usb 3-1.3: Manufacturer: Prolific Technology Inc. [ 222.598815] pl2303 3-1.3:1.0: pl2303 converter detected [ 222.599924] usb 3-1.3: pl2303 converter now attached to ttyUSB0
Ici, le device à utiliser est /dev/ttyUSB0
.
Il faut ensuite brancher l'adaptateur sur le port série du slug et le démarrer.
Pour se connecter, j'utilise l'outil cu :
sudo cu -l /dev/ttyUSB0 -s 115200 cu: open (/dev/ttyUSB0): Permission denied cu: /dev/ttyUSB0: Line in use
Hu ? Même en root, je n'ai pas les droits… En regardant les droits sur /dev/ttyUSB0
, le group dialout
est propriétaire du fichier :
ls -l /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 0 févr. 6 14:02 /dev/ttyUSB0
Il faut ajouter explicitement root
au groupe :
sudo usermod -a -G dialout root
puis maintenant :
sudo cu -l /dev/ttyUSB0 -s 115200 Connected. Debian GNU/Linux 7 poopdeck ttyS0 poopdeck login:
Si rien ne se passe, taper sur la touche entrée.
Il est désormais possible de se loguer sur le slug comme un accès en console à une machine physique.
Voici les logs de démarrage de redboot :
+Ethernet eth0: MAC address XX:XX:XX:XX:XX:XX IP: 192.168.0.1/255.255.255.0, Gateway: 192.168.0.1 Default server: 0.0.0.0, DNS server IP: 0.0.0.0 RedBoot(tm) bootstrap and debug environment [ROMRAM] Red Hat certified release, version 1.92 - built 15:16:07, Feb 3 2004 Platform: IXDP425 Development Platform (XScale) Copyright (C) 2000, 2001, 2002, Red Hat, Inc. RAM: 0x00000000-0x02000000, 0x000723a0-0x01ff3000 available FLASH: 0x50000000 - 0x50800000, 64 blocks of 0x00020000 bytes each. == Executing boot script in 2.000 seconds - enter ^C to abort RedBoot> boot;exec 0x01d00000 have eRcOmM copy kernel code from flash to RAM copy ramdisk file from flash to RAM run kernel Using base address 0x01d00000 and length 0x0000dc20 Ans APEX Boot Loader 1.6.10 -- Copyright (c) 2004-2008 Marc Singer compiled for Debian NSLU2 on 2009.Oct.06-18:59:32 APEX comes with ABSOLUTELY NO WARRANTY. It is free software and you are welcome to redistribute it under certain circumstances. For details, refer to the file COPYING in the program source. apex => mem:0x00200000+0xdc10 (56336 bytes) env => nor:0x7c000+15k (empty) Use the command 'help help' to get started. # sdram-init 1 bank of 2 128Mib chips # memscan -u 0+256m 0x0 0x02000000 (32 MiB) # copy -s $kernelsrc $bootaddr # copy -s fis://kernel 0x00008000 1441760 bytes transferred # copy -s $ramdisksrc $ramdiskaddr # copy -s fis://ramdisk 0x01000000 6291440 bytes transferred # wait 10 Type ^C key to cancel autoboot. Type ^C key to cancel autoboot. # boot ARCH_ID: 597 (0x255) ATAG_HEADER ATAG_MEM: start 0x00000000 size 0x02000000 ATAG_CMDLINE: (32 bytes) 'console=ttyS0,115200 noirqdebug' ATAG_INITRD2: start 0x01000000 size 0x005ffff0 ATAG_END Booting kernel at 0x00008000... Uncompressing Linux... done, booting the kernel. [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 3.2.0-4-ixp4xx (debian-kernel@lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1 Debian 3.2.46-1 [ 0.000000] CPU: XScale-IXP42x Family [690541f1] revision 1 (ARMv5TE), cr=0000397f [ 0.000000] CPU: VIVT data cache, VIVT instruction cache [ 0.000000] Machine: Linksys NSLU2 [ 0.000000] Memory policy: ECC disabled, Data cache writeback ...