wiki:WikiStart

Version 18 (modified by walter, 10 years ago) ( diff )

grub update, firmware pin

Soekris revival with OpenWRT

Is er een zinvol tweede leven voor de stapel Soekrissen die in de WL-kast liggen? We hebben enkele tientallen Soekrissen net: 4501, 4521, 4801, 4826. De hardware heeft zijn beperkingen en is niet geschikt voor de huidige nodes. Hierbij hoort tevens de erfenis aan SENAO pcmcia en mini-pci b-only wifi kaartjes!

  • Soekris net4501 cpu 486 133mhz RAM 064MB 0xusbport 3xlan 1xmini-pci 0xpcmcia 1xpci CF-CARD NO POE???
  • Soekris net4521 cpu 486 133mhz RAM 064MB 0xusbport 2xlan 1xmini-pci 2xpcmcia 0xpci CF-CARD ~24/66Mbit POE
  • Soekris net4801 cpu 586 267mhz RAM 128MB 1xusbport 3xlan 1xmini-pci 0xpcmcia 1xpci CF-CARD ~36Mbit NO POE!
  • Soekris net4826 cpu 586 267mhz RAM 128/256MB 1xusbhead 1xlan 2xmini-pci 0xpcmcia 0xpci ONBOARD-64MB ~36Mbit POE

Het doel van dit project is voor de Soekris-boarden en bijbehorende hardware, start klare images / uitgangssituaties te maken/beschrijven zodat snel, makkelijk en uitgebreid geexperimenteerd kan worden juist door linux nieuwkomers en enthousiastelingen. Met de openwrt packetmanager is met bijna hetzelfde gemak als op een linux desktop een uitgebreide router/server/node te bouwen door (bijna ;-) iedereen! Met de grote hoeveelheid beschikbare hardware configuraties is de wens om een onafhankelijk test netwerk te bouwen zodat met OLSR / MESH etc geexperimenteerd kan worden.

OpenWRT

Zowel kant en klare x86 images van openwrt uit de seriebackfire 10.03.1 als attitude adjustment 12.09 functioneren op de soekris 4501, 4521, 4801 en 4826. De gewenste type images zijn "combined-squashfs" images en "combined-extN" images, hierin "combined" zit namelijk zowel de boot partitie met kernel en root partitie. Op sommige embedded systemen is het mogelijk direct de kernel en het rootfs te uploaden omdat er dan een bootloader in het systeem zelf zit die deze kan opstarten. De soekris boarden gedragen zich netals x86 systemen die gewoon via een MBR bootstrap op een ide disk een bootsector willen laden die weer naar de bootloader verwijst "grub" en dat laatste de kernel. Het eerste type "squashfs" zal grotendeels in het ram de wijzigingen doorvoeren en alleen enkele wijzigingen gecomprimeerd naar de disk terug schrijven via JFFS2, voordeel hiervan is dat deze versie de geheugenkaart spaard "wear level protection" en tevens een failsafe "factory reset" mogelijk maakt. Prima optie voor experimenteren! De tweede optie "extN" schrijft alles direct op de geheugenkaart/disk, werkt sneller en laat meer ram over, echter een simpele failsafe restore/reset is dan tevens niet mogelijk.

Houd er overigens wel rekening mee dat de standaard openwrt images alleen booten op een Soekris als deze direct via serial console op een continu draaiende PC is aangesloten (sic), onafhankelijk zonder PC connectie pauzeert de boot cyclus namelijk op de grub bootloader! Echter wanneer op de eerste partitie van de CF-kaart/image uit de bootloader config file "/boot/grub/menu.cfg" de optie "console" verwijdert word, boot de Soekris probleemloos onafhankelijk zonder PC met serial console! Voor de CF gebasseerde systemen Soekris 4501/4521/4801 is die grub optie op de CF-kaart zo te veranderen en kun je in enkele minuten al aan de slag. Voor de systemen zonder CF kaart zoals de Soekris 4826 betekent het dat je waarschijnlijk met uitgebreidere/moeizame ouderwetse seriele console en met tftp/pxe aan de gang moet, mits ConMute enabled staat in de comBIOS op dit model die de verkeerde bootloader opties kan negeren!

serial console

Omdat de Soekris machines niet over een VGA en toetsenbord aansluiting beschikken is een serial console de enige manier om de bootcyclus en BIOS te beinvloeden, vooral handig voor uitgebreid recoveren van systemen zonder CF-Kaart. De kant en klare x86 images van openwrt hebben standaard hun serial console werkend op 38400, zowel in de bootloader modus (grub) als de kernellog en uiteindelijke systeem console. Dit i.t.t. tot de standaard Soekris comBIOS serial speed die vaak 19200 is. Om tijdens de hele bootcyclus/bootstrap vanaf de soekris comBIOS, bootloader grub, kernel/boot tot aan de console een werkend beeld en keyboard aansturing te hebben is het van belang dat al deze fases op dezelfde serial settings staan. Anders verdwijnt het beeld of word onleesbaar en is verdere keyboard interactie in een bepaalde fase uitgesloten.

Om serial in te loggen zullen we eerst "minicom" installeren en configureren dit laatste zal waarschijnlijk meerdere keren moeten om iedere afwijkende fase van het booten tot het os te kunnen bereiken. Handig is om eenmalig de serial snelheid in de comBIOS van de soekris gelijk te zetten naar die van de bootloader/bootconsole/terminal. *Goedkope usb-serial dongles werken niet altijd lekker met hoge com snelheden!

## install software for serial terminal sessions
sudo apt-get update && apt-get install minicom cu

## setup minicom
sudo minicom #press CTRL+A than Z for info  
#press O for options
#select "Serial Port Setup"
#press A, ##nullmodem cable port probably is /dev/ttyS0 
#press E  ##set speed for soekris board 9600/19200/38400 8n1 
#press F,G no, no #flow controls
#press enter to save
#select "Save setup as default"
#select "exit"
#press X exit minicom

#connect soekris via rs232 null modem to pc
poweron/reset soekris

#login with minicom 
sudo minicom

#press CTRL-P to enter comBIOS

#if you see garbage change port settings of minicom

comBIOS

Dit is de naam van de BIOS op de soekris boarden. Hierin kun je verschillende systeem en boot gerelateerde parameters vastzetten zoals de serial port snelheid "ConSpeed" en fixen dat een onaangepaste openwrt image niet blijft hangen in de grub bootloader door "ConMute" op enable te zetten. Tevens kun je vanuit comBIOS het systeem via network laten booten "PXE" of comBIOS upgrades uitvoeren.

Je hebt ongeveer 2-5 seconden na het aanzetten van de soekris om de comBIOS in te komen met het intoetsen van de CTRL-P toets combinatie! Dan moet je ook toevallig de juiste serial settings hebben voor die fase anders zie en kun je alsnog niets, dit kan met de gebruikte soekris boarden met verscheidene instellingen een trial & error werkwijze zijn. Als je de goede serial instellingen heb, dan zie je vanzelf BIOS/POST messages voorbij komen wanneer de soekris aangaat als je minicom hebt gestart. Je ziet dan tevens de comBIOS post melding voorbijkomen dat je met CTRL-P de comBIOS in kan! *Daarentegen als de comBIOS parameter ConMute=Enabled stond dan blijft het beeld altijd zwart en zie je alleen grub of de bsd bootloader. Mits je direct na het aanzetten van het apparaat CTRL-P indrukt komt je alsnog in comBIOS!

> _ # default comBIOS prompt

> ? # ? shows help / possible commands

> show # show current fixed paramters like serial speed

> set ConMute=Enabled # will set the parameter ConMute to Enabled

> set ConSpeed=38400 #will set the serial to the speed of openwrt image

> boot F0 #will boot from network via PXE

> reboot #will reboot the board

De laatste bios update beschikbaar voor deze serie soekris boarden is 1.33. Letop dat je wel de goede serie kiest 45xx of 48xx voor het upgraden! Updaten via minicom werkt met een omweg maar kan prima op een serial snelheid van 38400, mits je verbinding stabiel is (dus geen goedkope usb>serial dongle)! Je boot naar de comBIOS met CTRL-P en typt daar het commando "download -" met een dash! Vervolgens suspend je de sessie naar de background met "CTRL-a J" en dan in de foreground virtuele terminal ga je handmatig het bios bestand uit je homedir pushen met dit commando "sx -X /root/b45xx_133.bin > /dev/ttyS0 < /dev/ttyS0" na een kleine minuut krijg je de melding 680 blocks ok en kun je met het commando "fg" terug naar de minicom sessie waar je in comBIOS het commando "flashupdate" intypt en vervolgens "reboot".

tftp / pxe boot

Wanneer je een soekris hebt zonder external storage zoals de 4826 met 64MB onboard flash, kun je wellicht een image op de soekris zetten als deze in zijn eigen voormalige OS is gestart en zich domweg laat overschrijven. Wel zou de image dan met een hex editor moeten zijn bewerkt om de optie "console" uit het boot bestand te verwijderen, of de soekris zou de optie ConMute op enabled moeten hebben staan in comBIOS. Beide twijfelachtige procedures leiden waarschijnlijk tot een niet started systeem dus de laatste optie is de soekris via comBIOS laten netwerkbooten in tftp / PXE via het netwerk een image pushen en deze via de serial console verder in te richten.

Voor het recoveren / installeren van soekris boarden zonder CF-kaart moet naast een werkende serial console verbinding met comBIOS, een tftp / pxe / bootpserver worden opgezet. Via serial interface tussen PC en Soekris kan deze vanuit comBIOS geinstrueerd worden om met PXE op te starten. Wanneer de toetsen CTRL + P tijdens de comBIOS bootstrap worden ingetoetst kun je met het commando "boot F0" de soekris naar een PXE boot forceren.

De tftp server die ik in debian heb opgezet heeft de volgende paketten nodig: "isc-dhcp-server + tftp-hpa".

grub bootloader

De openwrt images gebruiken "grub" als bootloader wel de oude legacy versie, ondanks dat je het weinig of wellicht nooit zal zien in het gebruik van openwrt is het gemakkelijk om bootopties te wijzigen of toe tevoegen bijvoorbeeld memtest86+. Aangezien de oude soekris boarden een dubieus karakter hebben is het uitsluiten van onbetrouwbaar vastgesoldeerd ram geheugen het minste wat je kan doen dus memtest86+ draaien. Opmerking de soekris 4501 en 4526 (de oudere 486based boarden) werken niet met de laatste versie van memtest, zodra memtest start herstart deze de hele computer. Versies die wel werken zijn 2.00-4.10 en kun je direct in binary laden van memtest86+ old binaries.

Voeg de volgende optie toe aan het grub config bestand /boot/grub/menu.lst

title memtest86+
root hd0,0
kernel /boot/memtest86+.bin console=ttyS0,38400n8
boot

soekris 4501

Werkt met standaard image ook prima, net als de 4521 tevens net zo traag ;-).

soekris 4521

Ondanks dat de meeste hardware direct is aan te spreken gaan de pcmcia sloten pas werken als daarvoor de juiste (kant en klare) pakketjes uit de reposity zijn geladen, dit geld voor zowel backfire als attitude adjustment. Maar het laden uit de repository gaat pas werken wanneer het board via de "wan" aansluiting op het internet is aangesloten. Echter de "wan" aansluiting is standaard in de network config afwezig, ondanks dat de soekris standaard over twee ethernet adapters beschikt eth0(poe+lan) eth1(). Daarom moet er eerst een wan interface worden toegevoegd en eth0 bij de lan vervangen worden door eth1 en eth0 bij de wan plaatsen. Vervolgens nog firewall rules toevoegen zodat je via diezelfde wan interface kan managen met ssh/http. Tenslotte kun je dan pas na de reboot het board met de pakket manager verder configureren. Nu eerst de CF kaart voorbereiden!

#download openwrt image
wget http://downloads.openwrt.org/attitude_adjustment/12.09/x86/generic/openwrt-x86-generic-combined-squashfs.img

#warning dd will overwrite anything!!!
#write bootable image directly to CF-CARD
sudo dd if=openwrt-x86-generic-combined-squashfs.img of=/dev/sdX

#mount the first partition on the CF-CARD
sudo mkdir /mnt/booooot
sudo mount /dev/sdX1 /mnt/booooot

#remove the word "console" from the file /boot/grub/menu.lst
sudo nano /mnt/booooot/boot/grub/menu.lst

#unmount and eject CF-CARD
sudo umount /mnt/booooot
sudo rmdir /mnt/boooot

Plaats de CF-CARD in de soekris, en sluit een losse lan/poe kabel aan op de eth0 port van de soekris (verst verwijderd vanaf de pcmcia-sloten) direct op je PC aan. Je PC zal via dhcp automatisch een ip van de soekris krijgen!

#login via telnet
telnet 192.168.1.1

#add default password
passwd 

#reboot so rootfs will be writable next boot
reboot;exit

#login again, but with ssh
ssh root@192.168.1.1

#backup original config files
cp -r /etc/config /etc/config.ori

#add wan interface
vi /etc/config/network #see example code!

#add 'ssh' and 'http' to firewall rules
vi /etc/config/firewall #see example code!

#finish setting up networkinterface and firewall
reboot;exit

#disconnect PC lan cable from soekris
#connect the soekris via wan interface 
#directly to the local router with internet!

# example code # /etc/config/network

# Copyright (C) 2006 OpenWrt.org

config interface loopback
        option ifname   lo
        option proto    static
        option ipaddr   127.0.0.1
        option netmask  255.0.0.0

config interface lan
        option ifname   eth1 #! <---
        option type     bridge
        option proto    static
        option ipaddr   192.168.54.1
        option netmask  255.255.255.0

config interface wan
        option ifname   eth0 #! <---
        option type     bridge
        option proto    dhcp

# add. example code # /etc/config/firewall

#Add + these additional rules

#! Allow SSH <---
config rule
        option src              wan
        option proto            tcp
        option dest_port        ssh
        option target           ACCEPT

#! Allow http <---                                      
config rule                                            
        option src              wan                    
        option proto            tcp                    
        option dest_port        http                    
        option target           ACCEPT
        
#! Allow proxy <---
config rule   
        option src              wan                    
        option proto            tcp                    
        option dest_port        3128                  
        option target           ACCEPT
                                 
#! Allow iperf <---
config rule                                            
        option src              wan                    
        option proto            tcp                    
        option dest_port        5001                   
        option target           ACCEPT

Driemaal scheepsrecht, na de derde boot kun je het systeem op reguliere OpenWRT wijze beheren. Eerst wat pakketten installeren, daarna de pcmcia sloten inregelen en de wifi aanzetten. De snelheid van de soekris is erg laag dus alle pakketten in eenkeer installeren doet de ssh sessie enkele minuten stil staan/freezen maar hij hangt niet dus wacht rustig af!

#login via ssh
ssh root@routeradres

#update list of available packages
opkg update

#install packages
opkg install pcmciautils pciutils kmod-hostap-cs kmod-pcmcia-core kmod-pcmcia-yenta iperf nmap tcpdump nano luci-app-olsr nodogsplash tinyproxy openvpn 

De PCMCIA sloten waar de wifi adapters opzitten moeten tijdens de boot worden aangezet. Dat kan door in /etc/init.d/pcmcia* enable te doen. Echter het S20 netwerk/wifi start al voordat de S42/41 PCMCIA sloten tot leven zijn gekomen. Een snelle Q&D fix is S20network in /etc/rc.d/ te verplaatsen naar S43network.

#enable pcmcia services on boot
/etc/init.d/pcmci* enable

#quick and dirty delay network initialization after pcmcia
mv /etc/rc.d/S20network /etc/rc.d/S43network

Stabiliteit PCMCIA bus hangt af van mogelijke bootparameters, irq bezetting en memoryranges. Voor 10.0.3.1 zorgt de boot parameter (TODO wel nog even checken of /etc/pcmcia/conf.opt speciale settings in 12.09 nodig heeft, irqpoll is no wifi). Bij de 10.03.1 kan "irqpoll" er juist voor zorgen dat de pcmcia bus het systeem niet doet freezen. Dit freezen houd in dat wanneer de pcmcia kaart verwijdert word het systeem direct weer reageert en niet is vastgelopen, dit komt uit eigen ervaring ook voor op laptops en kan met boot parameter "irqpoll" verholpen worden.

soekris 4801

Setup idem as 4521/4501?

# add. example code # /etc/config/dhcp

config dhcp lanb                                           
        option interface        lanb                       
        option start    100                               
        option limit    150                   
        option leasetime        12h

# add. example code # /etc/config/firewall

config zone
        option name             lanb
        option network          'lanb'
        option input            ACCEPT
        option output           ACCEPT
        option forward          REJECT

config forwarding                     
        option src              lanb   
        option dest             wan 

#! Allow SSH <---
config rule
        option src              wan
        option proto            tcp
        option dest_port        ssh
        option target           ACCEPT

#! Allow http <---                                      
config rule                                            
        option src              wan                    
        option proto            tcp                    
        option dest_port        http                    
        option target           ACCEPT
        
#! Allow proxy <---
config rule   
        option src              wan                    
        option proto            tcp                    
        option dest_port        3128                  
        option target           ACCEPT
                                 
#! Allow iperf <---
config rule                                            
        option src              wan                    
        option proto            tcp                    
        option dest_port        5001                   
        option target           ACCEPT

# example code # /etc/config/network

# Copyright (C) 2006 OpenWrt.org

config interface loopback
	option ifname	lo
	option proto	static
	option ipaddr	127.0.0.1
	option netmask	255.0.0.0

config interface lan
	option ifname	eth1
	option type 	bridge
	option proto	static
	option ipaddr	192.168.11.1
	option netmask	255.255.255.0

config interface lanb
        option ifname   eth2
        option type     bridge
        option proto    static
        option ipaddr   192.168.12.1
        option netmask  255.255.255.0
	
config interface wan
        option ifname   eth0
        option type     bridge
        option proto    dhcp

soekris 4826

Dit board zonder CF kaart moet waarschijnlijk wel via de serial port aansturen tot een tftp / PXE boot om openwrt te laden, maar wanneer het er eenmaal opstaat kun je blijven experimenteren. USB headers onboard kan direct een werkende usbport van gemaakt worden. Deze usb port kan via plop bootmanager geboot worden (mits syslinux op de usb staat ipv grub). Openwrt moet dan als die op de usbstaat met extroot werken en usb modules in de image hebben.

senao wifi

Oud doch bruikbaar zelfs met WPA2 CCMP in AP mode, tenminste als je weet hoe. Het gaat hier om de volgende twee prism2.5 gebasseerde wifi kaarten:

  • pcmcia "senao SL-2511CD PLUS ext2 e200/f200"
  • mini-pci "senao SL-2511MP 210".

Naast dat er legio aan firmware versies / combinaties zijn voor deze kaarten is van eerste belang om te weten dat de pcmcia versie 16bit is en daarom het pakket "pcmciautils" nodig heeft om op moderene distributies probleemloos herkent te worden. Als tweede is er een legio aan drivers voor deze kaarten beschikbaar, waaronder "prism", "hermes", "intersil", "orinoco", "wi" met tenslotte de "hostap-pci/cs" deze laatste is het meest stabiel en feature rijk. Verwarrend is wel de naam "hostap" aangezien dit naast driver ook de service is die op vele routers het opzetten van een AP + WPA aanstuurt. Als derde zullen de meeste van deze antieke kaartjes uit de kast van W.L. wel een firmware update nodig hebben. Minstens station firmware 1.5.6/1.6.3 om uberhaupt goed aangestuurd te worden door hostap en verder schijnt 1.7.4 en 1.8.2 het stabielst getest te zijn en nodig voor WPA2 CCMP modi. Tenslotte word de kaart in de meeste distributies in AP modus gestart en zal daarom niet met andere AP's kunnen connecten totdat je de modus van de kaart omzet naar "iwconfig wlan0 mode managed".

De benodigde firmware is beschikbaar in twee vormen namelijk een AP/master en client/station firmware. Beide bestanden zijn vereist om tegelijk en betrouwbaar te kunnen flashen. De AP firmware is 1.1.1 de STA firmware is 1.8.2. details om te flashen via windows xp volgen nog, een oude linksys driver en het programma winflash 0.7 is voldoende. Inmiddels is gebleken dat deze kaartjes met de "hostap-pci/hostap-cs" niet alleen instaat zijn WPA TKIP in station/client mode maar zelfs WPA2 CCMP in AP modus.

  • pcmciautils
  • kmod-pcmcia-core
  • kmod-pcmcia-yenta
  • kmod-hostap-cs
  • kmod-hostap-pci

Wanneer in Openwrt na installatie de wifi kaarten niet direct in de webinterface van luci herkent worden, moet je ze zelf even in het volgende configuratie bestand zetten en zorgen dat de macadressen van de kaarten 0/1 overeen komen met die van de config. Zie ifconfig voor de macadressen voor juiste kaart.

# example code # /etc/config/wireless

config wifi-device 'radio0'
        option type 'prism2'
        option macaddr '00:02:6F:xx:xx:xx'
        option channel '6'
        option diversity '0'

config wifi-device 'radio1'
        option type 'prism2'
        option channel '11'
        option macaddr '00:02:6f:xx:xx:xx'
        option diversity '0'

config wifi-iface
        option device 'radio0'
        option mode 'ap'
        option encryption 'none'
        option ssid 'http://wirelessleiden.nl/cp'
        option network 'lan1'

config wifi-iface
        option device 'radio1'
        option mode 'ap'
        option encryption 'none'
        option ssid 'http://wirelessleiden.nl/splash'
        option network 'lan2'

firmware update/patch wifi cards

Naast de prism gebaseerde senao kaarten hebben de atheros kaarten bij levering eigenlijk een landcode nodig in de firmware de regdomain code 0x0 word in de nieuwe linux kernels opgemerkt als US waardoor channel 12-13 op de 2,4ghz en een aantal kanalen op de 5ghz wegvallen. Via de windows tool RCU.exe en de atheros driver van comview kan wanneer pin13 op de minipci kaart is afgeplakt deze worden gefixed op de juiste regio. Voor europa is ETSI0-europe 0x37 als regdomain aan te raden.

Trac Info

Trac is a minimalistic approach to web-based management of software projects. Its goal is to simplify effective tracking and handling of software issues, enhancements and overall progress.

All aspects of Trac have been designed with the single goal to help developers write great software while staying out of the way and imposing as little as possible on a team's established process and culture.

As all Wiki pages, this page is editable, this means that you can modify the contents of this page simply by using your web-browser. Simply click on the "Edit this page" link at the bottom of the page. WikiFormatting will give you a detailed description of available Wiki formatting commands.

"trac-admin yourenvdir initenv" created a new Trac environment, containing a default set of wiki pages and some sample data. This newly created environment also contains documentation to help you get started with your project.

You can use trac-admin to configure Trac to better fit your project, especially in regard to components, versions and milestones.

TracGuide is a good place to start.

Enjoy!
The Trac Team

Starting Points

For a complete list of local wiki pages, see TitleIndex.

Note: See TracWiki for help on using the wiki.