X-Micro Wlan 11b. Access Point


Tartalom: (Contents)

Az RTL8181 (Some info about the RTL8181)
A "firmware": Linux és ennek elérése ( Serial access of the firmware)
RTL8181 Linux project
Néhány link (Some links)
X-Micro AP Linux - további részletek (More details)
Újabb fordulat (A new approach: mounting the firmware's filesystem under a web)
Különféle megjegyzések (Miscellaneuse notes)
Mire használható? még néhány ötlet. (Costume use of the AP: some tipps)



NEW:
Some short English notes - in the text below emphasized in green.
We are in the Hungarian Linux User's Assotiation, (LME) working on a project, "HeniNet" (supported our Ministry of Informatics), started at the end of 2003. Our aims to build some wlans, "community networks" in our capital city, Budapest, and some small city aroud our country. You can find more info about our project here.

In this paper we summarised our invetigations aroud the new, RTL8181-based X-Micro wlan access point. The main aim of this text is to inform our project members about the new development on this area, consequently the texts mainly Hungarian :-((. We hope, in the near future we will have some times to translate some part of texts to English. But you can follow the main points of the contents based on the short english notes, the original Linux comands and its outputs, and the pictures too.


A címben jelzett, fenti eszköz az X-Micro taiwani cég gyártmánya,  meglepõen olcsó áron megszerezhetõ, 2004 februárjában mintegy 9000 HUF + ÁFA.
Az eszköz FCC azonosító kódja:
FCC ID RAFXWL-11bARG
A firmware verzió: V.1.2.2
Az eszköz csatlakozóit, a kijelzõ LED-eket, valamint az alkatrészek elhelyezkedését a vázlat tartalmazza.

A kidobozolás nem teljesen probléma mentes, 4 db, 6 lapú sûlyesztett hornyokat tartalmazó csavar fogja össze a doboz két felét. Kioldásukhoz szükség van egy speciális csavarhúzóra.

Az RTL8181
(Some info about the RTL8181)

Az eszköz lelke az RTL8181 SoC, vagyis egy "egész rendszer egyetlen tokban" szervezésû controler.

A szóbanforgó eszközben 208 lábú változatban van szerelve, és a panel alsó "forrasztási" oldalán foglal helyet.
A tokban integrált fõbb egységek: 32bites, 200 MHz Risc CPU, 2 ethernet controler, 1 wlan controler, a címezhetõ max. memóriaméret 32 Mbyte RAM,- itt 8 Mega, 4 Mbyte flash, PCI compliant, tartalmaz egy 16550 UART-ot, mindezt összesürítve egy 17x17 mm-es tokban.
Az angol, bõvebb leirás alant következik:


RTL8181
  802.11b Wireless Gateway SoC with WLAN Dual-Mode Capability

 General Description
  The RTL8181 is a highly integrated System-on-a-Chip with a
  high-performance 32-bit RISC microcontroller, two Ethernet MACs, and a
  WLAN controller embedded onto a single chip with a space-saving total
  package size of 17mm x 17mm. It is a cost-effective solution for
  wireless LAN access points, wireless SOHO routers, wireless Internet
  gateways, etc.

The embedded Lexra LX5280 32-bit RISC CPU runs at up to 200MHz and
features separate 8KB instruction and data caches. The processor pipeline
is a dual-issue 6-stage architecture; the CPU fetches two instructions
per cycle, allowing two instructions to be executed concurrently in two
pipes and giving a 30% performance improvement over uni-scalar
architecture.

The RTL8181 includes two Fast Ethernet MACs, one perhaps used for a LAN
interface and the other connected to a WAN port. An embedded IEEE 802.11b
WLAN MAC and Baseband controller saves BOM costs and allows a very small
footprint compared to systems requiring an external 802.11b adapter. For
extra design flexibility, a PCI interface is also supported. An IEEE
802.11a device could be connected through this PCI interface to provide
WLAN dual mode service.

As required by modern operating systems, a Memory Management Unit (MMU)
allows the memory to be segmented and protected. The integrated memory
controller permits the use of glueless interfaces to external SDRAM and
Flash memory.

Features
  Core Processor
LX5280 32-bit RISC architecture
Superscalar architecture, containing 2 execution pipelines for high
performance
Embedded 8KB I-Cache, 8KB D-Cache and 4KB DRAM
MMU support
Up to 200MHz operating frequency

WLAN Controller
Integrated IEEE 802.11b compliant MAC and DSSS Baseband processor
Supports 1, 2, 5.5, or 11Mbps data rates
Supports long and short preamble
Supports antenna diversity and AGC
Universal chip for various radio front ends
Embedded with encryption/decryption engine for 64 and 128-bit WEP

Fast Ethernet Controller
Fully compliant with IEEE 802.3/802.3u
Supports MII interface with full and half duplex capability
Supports descriptor-based buffer management with scatter-gather
capability
Supports IP, TCP, and UDP checksum offload
Supports IEEE 802.1Q VLAN tagging and 802.1P priority queue
Supports full-duplex flow control (IEEE 802.3X)

PCI Bridge
Complies with PCI 2.2
Supports one external PCI device
Supports PCI master/slave mode

Memory Controller
Supports external 16/32-bit SDRAM with 2 banks access, up to 32M bytes
Supports external 16-bit Flash memory, up to 4M bytes

UART
16550 compatible
16-byte FIFO buffer
Auto CTS/RTS flow control

GPIO
20 programmable I/O ports
Individually configurable input, output, and edge transition lines

Applications
  Wireless LAN access points
Wireless SOHO routers
Wireless Internet gateways


Az alábbi fotók scannerrel készültek, a kidobozolt eszközrõl. A külsõ mûanyag dobozban egy majdnem teljesen zárt, vékony (0.1 mm) lemezbõl készült belsõ árnyékoló doboz van, ebben foglal helyet a legalább háromrétegû panel.
Foto 1.: top view

Foto 2.: botton view

A konfigurálás

Az access point konfigurálása a lan porton keresztül történik.
Ehhez szükség van egy másik rendszerre, amely tartalmaz legalább egy, a 192.168.1.0 tartományba esõ ip címet, és egy patch (fordítós) kábellel össze van kötve az A.P. lan portjával. Az A.P. induló (default) címe: 192.168.1.254.
A konfiguráláshoz használt rendszer web browserét erre a címre kell irányítani.
A kezdõ lap bal oldalán látható menübõl választva lehet konfigurálni a különféle funkciókat. Az új értékekhez nem kell a rendszert újra indítani.
A konfigurálás részleteire itt nem térünk ki, ez megtalálható az eszközhöz mellékelt füzetkében, ill. kis gyakorlattal a web felületen értelemszerûen elvégezhetõ.



A "firmware": Linux és ennek elérése
( Serial access of the firmware)
Description of the serial connector,  the terminal program's parameters,
the boot process, list of  some interesting files.
---------------------------------------------------

Az eszköz - hasonlóan más gyártóktól származó, RTL8181-re alapozott access pointokhoz ill. wireless routerekhez, - "firmwarekent" Linuxot tartalmaz.
A Linuxhoz a hozzáférés az RTL8181 UART soros portján keresztül történik, ezen keresztül más szoftvert is tölthetünk be. A gyári firmware frissítése a lan porton keresztül is végezhetõ.
Az itt tárgyalt eszközben nincs csatlakozó kiképezve a soros port elérésére, csak a forrasztási szemek találhatók meg a panelen. A fix pontokat az RTL8181 lábainak azonosítása jelenti. Szerencsére a vezetékek egyszerûen és egyértelmûen követhetõk a panelen. A soros csatlakozó számozása rá van nyomtatva a panelra, így egyértelmû lehet a hivatkozás. Az 1-es láb négyszögletes felületü, a többi kerek. A csatlakozó kiosztása nem azonos az eddigi dokumentációkban megtalálható más eszközök hasonló célú csatlakozóinak kiosztásával. A 6 forrasztási pöttybõl álló csatlakozó hely egyértelmûen megfigyelhetõ a panel alsó oldalát ábrázoló fotón, a nagy IC alatt. Az 1. láb az IC alatt mintegy középen látható. A panel felsõ oldalát ábrázoló fotón a felfestett számozás is látható.
Rövid azonosítás után sikerült a kiosztást visszafejteni:

X-Micro Wlan 11b Acess Point
Serial connector
 
Serial connector RTL8181 pin Function (view from the controller)
1. 17. Transmit Out
2. 15. Receive In
3. GND GND
3. VCC 3.3V
5. 14. CTS
6. 16. RTS

A kommunikációhoz az 1,2,3 csatlakozót kell használni. Szükség van egy RS232 szintillesztõre, az adás és vétel vonalak illesztéséhez. (MAX232) A terminálporgram paraméterei:
38400, 8N1, Xon/Xoff protocol.
A tápfeszültség bekapcsolása után a terminálon megjelenõ boot folyamatot alább láthatjuk.



The boot display:
?display on
entering boot loader, turning on display
decompressing kernel:
Uncompressing Linux... done, booting the kernel.
done decompressing kernel.
Linux version 2.4.18-MIPS-01.00 (root@localhost.localdomain) (gcc version 3.0.3) #14 Fri Jun 13 15:24:13 CST 2003
Determined physical RAM map:
 memory: 00800000 @ 00000000 (usable)
Initial ramdisk at: 0x80159000 (304016 bytes)
On node 0 totalpages: 2048
zone(0): 2048 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/ram console=0 ramdisk_start=0 single
Calibrating delay loop... 204.39 BogoMIPS
Memory: 6252k/8192k available (1243k kernel code, 1940k reserved, 376k data, 44k init, 0k highmem)
Dentry-cache hash table entries: 1024 (order: 1, 8192 bytes)
Inode-cache hash table entries: 512 (order: 0, 4096 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 2048 (order: 1, 8192 bytes)
 unavailable.
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
block: 64 slots per queue, batch=16
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
Serial driver version 6.02 (2003-03-12) with no serial options enabled
ttyS00 at 0x00c3 (irq = 3) is a rtl_uart1
state->flags=00000000
RealTek E-Flash System Driver. (C) 2002 RealTek Corp.
Found 1 x 1MiB MXIC MX29LV800B at 0xbfc00000
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
order=00000000 in rt_init
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 512 bind 1024)
NET4: Ethernet Bridge 008 for NET4.0
Starting kswapd
RAMDISK: Compressed image found at block 0
Freeing initrd memory: 296k freed
VFS: Mounted root (ext2 filesystem).
Freeing unused kernel memory: 44k freed
mount /proc file system ok!
serial console detected.  Disabling virtual terminals.
console=/dev/ttyS0
init started:  BusyBox v0.60.1 (2003.09.05-08:06+0000) multi-call binary
 

BusyBox v0.60.1 (2003.09.05-08:06+0000) Built-in shell (msh)
Enter 'help' for a list of built-in commands.

Initialize WLAN interface
length=0?
length=0?
SIOCGIFFLAGS: No such device
bridge br0 doesn't exist; can't delete it
Setup bridge...
Algorithmics/MIPS FPU Emulator v1.5
device eth0 entered promiscuous mode
device wlan0 entered promiscuous mode
This is 8201BL
eth0: Promiscuous mode enabled.
eth0: Promiscuous mode enabled.
eth0: Promiscuous mode enabled.
eth0: Promiscuous mode enabled.
SIOCDELRT: No such process
SIOCDELRT: No such process
br0: port 2(wlan0) entering listening state
br0: port 1(eth0) entering listening state
br0: port 2(wlan0) entering learning state
br0: port 2(wlan0) entering forwarding state
br0: topology change detected, propagating
br0: port 1(eth0) entering learning state
br0: port 1(eth0) entering forwarding state
br0: topology change detected, propagating
SIOCDELRT: No such process
SIOCDELRT: No such process
279
#
# help

Built-in commands:
-------------------
 . : break cd continue eval exec exit export help login newgrp
 read readonly set shift times trap umask wait

# login
login: not found
#



 

A bejelentkezõ logból látjuk, hogy a kernel verziója:
 

Linux version 2.4.18-MIPS-01.00
A processzor sebességét jellemzõ érték:
204.39 BogoMIPS
A 8 Mega RAMot a követrkezõ felosztás szerint használja:
Memory: 6252k/8192k available (1243k kernel code, 1940k reserved,
376k data, 44k init, 0k highmem)


A Flash memóriát a Realtek cég drivere kezeli:

RealTek E-Flash System Driver. (C) 2002 RealTek Corp.
Found 1 x 1MiB MXIC MX29LV800B at 0xbfc00000


A bináris programok a BusyBox saját változatára épülnek:

BusyBox v0.60.1 (2003.09.05-08:06+0000)
A hálózati controler típusa:
    8201BL

Ezután lényegében egy
    wlan0
    eth0
és egy br0 interface felkonfigurálása történik meg, majd kapunk egy
    #
promtot.
A help paranccsal próbálkozva a BusyBox által elfogadott parancsokat látjuk.
Ami feltûnhet, hogy hiányzik a fileok listázára szolgáló valamilyen parancs.
A help által fellistázott parancsok azonban csak egy részét jelentik a használható
lehetõségeknek. A
    busybox
parancsot kiadva a következõ listát kapjuk:


busybox
BusyBox v0.60.1 (2003.09.05-08:06+0000) multi-call binary

Usage: busybox [function] [arguments]...
   or: [function] [arguments]...

 BusyBox is a multi-call binary that combines many common Unix
 utilities into a single executable.  Most people will create a
 link to busybox for each function they wish to use, and BusyBox
 will act like whatever it was invoked as.

Currently defined functions:
 [, busybox, cat, cut, echo, expr, grep, gunzip, head, hostname,
 ifconfig, init, kill, linuxrc, msh, ps, reboot, rm, route, sh,
 sleep, tail, test, wc, zcat

#



 

További próbálkozások után még sikerült kipróbálni a következõ parancsokat:

cd
ps
set
cat


A ps outputja, a process lista:


# ps
  PID  Uid     Stat Command
    1 root     S    init
    2 root     S    [keventd]
    3 root     S    [ksoftirqd_CPU0]
    4 root     S    [mtdblockd]
    5 root     S    [bdflush]
    6 root     S    [kupdated]
    7 root     S    [kswapd]
    8 root     S    -sh
  279 root     S    webs
  281 root     R    ps
#


Láthatjuk, hogy a 279 pid-el fut egy mini web server.

Az interfacek és a routing tábla az
    ifconfig és a
    route
parancs outputja:


# ifconfig
br0       Link encap:Ethernet  HWaddr 00:02:72:04:61:1C
          inet addr:192.168.1.200  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:871 errors:0 dropped:0 overruns:0 frame:0
          TX packets:780 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:62080 (60.6 kb)  TX bytes:232815 (227.3 kb)

eth0      Link encap:Ethernet  HWaddr 00:02:72:04:61:1C
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:871 errors:0 dropped:0 overruns:0 frame:0
          TX packets:780 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:74274 (72.5 kb)  TX bytes:232815 (227.3 kb)
          Interrupt:4

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

wlan0     Link encap:Ethernet  HWaddr 00:02:72:04:61:1C
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:98 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:2 Memory:bd400000-0

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0        0 br0
#



Az ifconfig paranccsal természetesen módosítani is lehet a konfigurációkat.
Az eth0 interface IP címe már nem a default érték, ezt a web felületen állítottam be.
 

Az /etc alkönyvtárban meg lehet próbálni náhány ismert, feltételezhetõen létezõ file tartalmát megjeleníteni.

pl. a hosts file tartalma:


# cat hosts
172.20.1.254      rtl8181.realtek.com.tw rtl8181


Fellistáztuk a protocols és a services fileokat is, ezek meglehetõsen hosszúak, csak egy érdekes
részletet mutatunk itt be.
A routolási lehetõségeket a Zebra csomag alapján válogatták össze.

# Local services

zebrasrv  2600/tcp   # zebra service
zebra  2601/tcp   # zebra vty
ripd  2602/tcp   # RIPd vty
ripngd  2603/tcp   # RIPngd vty
ospfd  2604/tcp   # OSPFd vty
bgpd  2605/tcp   # BGPd vty
ospf6d  2606/tcp   # OSPF6d vty


A passwd fileból láthatjuk a fejlesztõk user neveit is.


# cat passwd
root:x:0:0:root:/root:/bin/tcsh
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
adm:x:3:4:adm:/var/adm:
lp:x:4:7:lp:/var/spool/lpd:
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:
news:x:9:13:news:/var/spool/news:
uucp:x:10:14:uucp:/var/spool/uucp:
operator:x:11:0:operator:/root:
games:x:12:100:games:/usr/games:
gopher:x:13:30:gopher:/usr/lib/gopher-data:
ftp:x:14:50:FTP User:/var/ftp:
nobody:x:99:99:Nobody:/:
nscd:x:28:28:NSCD Daemon:/:/bin/false
mailnull:x:47:47::/var/spool/mqueue:/dev/null
ident:x:98:98:pident user:/:/bin/false
rpc:x:32:32:Portmapper RPC user:/:/bin/false
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/bin/false
xfs:x:43:43:X Font Server:/etc/X11/fs:/bin/false
john:x:500:500:John Huang:/home/john:/bin/tcsh
dliu:x:501:501::/home/dliu:/bin/tcsh
odysseus:x:502:502::/home/odysseus:/bin/tcsh
ygtai:x:503:503::/home/ygtai:/bin/tcsh
hcjong:x:504:504::/home/hcjong:/bin/tcsh
rpm:x:37:37::/var/lib/rpm:/bin/bash
ntp:x:38:38::/etc/ntp:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
radvd:x:75:75:radvd user:/:/bin/false
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
apache:x:48:48:Apache:/var/www:/bin/false
squid:x:23:23::/var/spool/squid:/dev/null
named:x:25:25:Named:/var/named:/bin/false
pcap:x:77:77::/var/arpwatch:/bin/nologin
ldap:x:55:55:LDAP User:/var/lib/ldap:/bin/false
#


Az alábbi képernyõfotó (screenshot) egyszerre mutatja az eszköz mindkét elérési
felûletén a megjelenõ információkat.
A terminál ablakban a soros porton az A.P. Linux konzolja látszik, a ps parancs
kiadása után. A Mozilla browser ablakban pedig az A.P. web interfésze látható, az alap
beállításokkal.

Sceenshot with 2 way access of the AP:
- in the terminal window appears the command line interface from the serial line,
- in the browser's window you can see the configuration pages of the AP, from the LAN interface.
------------------------------------------
RTL8181 Linux project

Néhány napja felkerült a sourceforge.net -re a RTL8181-re fejlesztett GNU Linux 0.1-es
verziója. Még kissé kezdetén tart a project, pl. nincs driver a wlan interfacehoz, de már mindenkepp érdemes nyomonkisérni a munkát.
A project elérése a sourceforge gépen:
http://sourceforge.net/projects/rtl8181/

Lényegében egy ausztárliai cég fejleszti, ennek kezdõ lapja:
http://www.streetdata.com.au/



Néhány link
(Some links)
-----------------------

A piacon megtalálható, RTL8181 alapú eszközök meglehetõsen impresszív listája itt található:
http://rtl8181.sourceforge.net/rtl8181_devices.php

Egy, a fentiekhez hasonló Minitar nevû eszköz fotója és a soros port illesztõ kapcsolása itt található:
http://rtl8181.sourceforge.net/pinouts_7206APB.php

Az X-Micro cég lapja a fent bemutatott eszközrõl itt érhetõ el:
http://www.x-micro.com/wlan-ap.htm
A reklámkép és a doboz képe:

 
 

2004 február 6.



X-Micro AP Linux további részletek
(More details)
The init scripts, the falsh program, the default parameters from the falsh.
--------------------------------------------------------------------------

A Guerillanet listán ( http://lists.linux.hu ) az elsõ beszámolót olvasva Zeller egy "jól irányzott segítségével" sikerült továbbjutnom a Linux felderítésében. A levél:

On Mon, 9 Feb 2004 11:19:57 +0100 , "Zelena Endre" <ZelenaE@ab-aegon.hu>
said:
> Hi,
> Írod, hogy hiányzik a fájlok listázására szolgáló valamilyen parancs...
> Az  echo viszont ott van a busybox definiált funkciói között, ergo tényleg
> nincs  szükségg az ls-re :-)))
>
> Zeller
>
> (Ha esetleg nem világos, miért nem kell ls, akkor page down :-))
>
> echo *


Gyorsan kiderült, hogy még az elvárásaimhoz képest is helyenként meglepõen lecsupaszított a rendszer, pl. a /dev alatt mindössze négy eszköz szerepel:
console, mtd, null, ttyS0,
a /lib alatt két file, a uClib és a loader, vagyis ld-uClib.so.0 és a libc.so.0.

Nincs root, home kövnytár, a /bin /sbin /usr/bin és /usr/sbin is nagyon kevés filet tartalmaz. Az ismert programok (mint az egyébbként szokásos az ilyen  pici Linuxok esetében) csak szimbolikus linkek, és a busybox "sokfunkciós" programra mutatnak.

Persze a rendszer indítása is eltér a megszokottól.
Sikerült megtalálnom a rendszert indító scriptet: /bin/init.sh
Ebbõl kiderül, hogy többféle "üzemmódra" van felkészítve, és a scriptnek adott paraméterek szerint indulhat access pointként, vagy gatewayként is. Sajnos az utóbbi üzemmódnak hardware következményei is vannak, két ethernet interfész kell hozzá, és amint az a korábban készített fotókon látszik, az AP kártyán a második ethernet interfésznek csak a helye van meg.

Az init.sh eleje, az inditási paraméterek és a fõ üzemmódok:
 

# cat init.sh
#!/bin/sh
#
# script file to start network
#
# Usage: init.sh {gw | ap} {all | bridge | wan}
#

if [ $# -lt 2 ]; then echo "Usage: $0 {gw | ap} {all | bridge | wan}"; exit 1 ; fi

if [ $1 = 'ap' ]; then
### bridge (eth0+wlan0) confiuration #########
 GATEWAY='false'
 BR_INTERFACE=br0
 WLAN_INTERFACE=wlan0
 BR_LAN1_INTERFACE=eth0
 BR_LAN2_INTERFACE=$WLAN_INTERFACE
##############################################
fi

if [ $1 = 'gw' ]; then
### gateway (eth0+eth1+wlan0) configuration ##
 GATEWAY='true'
 WAN_INTERFACE=eth1
 BR_INTERFACE=br0
 WLAN_INTERFACE=wlan0
 BR_LAN1_INTERFACE=eth0
 BR_LAN2_INTERFACE=$WLAN_INTERFACE
##############################################
fi
....

(Megjegyzés: A soros vonali kapcsolatból mentett listák eleje kicsit zavaró lehet. Elfelejtettem ugyanis hostnevet adni a rendszernek, alapban pedig nincs, ill. nem ir ki semmit. A scriptek elején tehát az elsõ hashmark (#) karakter a rendszer promtja, utána a kiadott parancs következik.
# cat init.sh
A következõ hashmarkok pedig többnyire a script comment sorait kezdõ jelek.)

A scriptbõl látszik, hogy a flash kezelésére külön program készült, ezt kicsit megvallatva nagyon sok, a flashben tárolt default és beállított értéket lehet kiolvasni.
A flash help-je:
 

# flash help
Usage: flash cmd
option:
cmd:
      default -- write flash parameters to default.
      get mib-name -- get a specific mib from flash memory.
      set mib-name mib-value -- set a specific mib into flash memory.
      all -- dump all flash parameters.
      reset -- reset current setting to default.
A flashbõl kiolvasható értékek:
 
# flash all
HW_BOARD_ID=0
HW_NIC0_ADDR=00027204611c
HW_NIC1_ADDR=000272818123
HW_WLAN_ADDR=00027204611c
HW_REG_DOMAIN=3
HW_RF_TYPE=3
HW_TX_POWER=242,242,242,242,242,242,242,242,242,242,242,242,242,242
HW_ANT_DIVERSITY=0
HW_TX_ANT=0
HW_CS_THRESHOLD=11
HW_CCA_MODE=1
HW_PHY_TYPE=0
HW_WLAN_LED_TYPE=0
DEF_ELAN_MAC_ADDR=000000000000
DEF_WLAN_MAC_ADDR=000000000000
DEF_SSID=X-Micro
DEF_CHANNEL=11
DEF_WEP=0
DEF_WEP64_KEY1=0000000000
DEF_WEP64_KEY2=0000000000
DEF_WEP64_KEY3=0000000000
DEF_WEP64_KEY4=0000000000
DEF_WEP128_KEY1=00000000000000000000000000
DEF_WEP128_KEY2=00000000000000000000000000
DEF_WEP128_KEY3=00000000000000000000000000
DEF_WEP128_KEY4=00000000000000000000000000
DEF_WEP_DEFAULT_KEY=0
DEF_WEP_KEY_TYPE=1
DEF_FRAG_THRESHOLD=2346
DEF_SUPPORTED_RATES=15
DEF_BEACON_INTERVAL=100
DEF_PREAMBLE_TYPE=0
DEF_BASIC_RATES=3
DEF_RTS_THRESHOLD=2347
DEF_AUTH_TYPE=2
DEF_HIDDEN_SSID=0
DEF_WLAN_DISABLED=0
DEF_INACTIVITY_TIME=30000
DEF_RATE_ADAPTIVE_ENABLED=1
DEF_DTIM_PERIOD=3
DEF_WLAN_MODE=0
DEF_NETWORK_TYPE=0
DEF_ALIAS_NAME=X-Micro WLAN 11b Access Point
DEF_IP_ADDR=192.168.1.254
DEF_SUBNET_MASK=255.255.255.0
DEF_DEFAULT_GATEWAY=0.0.0.0
DEF_DHCP=0
DEF_STP_ENABLED=0
DEF_WLAN_MACAC_NUM=0
DEF_WLAN_MACAC_ENABLED=0
DEF_SUPER_NAME=super
DEF_SUPER_PASSWORD=super
DEF_USER_NAME=
DEF_USER_PASSWORD=
ELAN_MAC_ADDR=000000000000
WLAN_MAC_ADDR=000000000000
SSID=jozsimesh
CHANNEL=6
WEP=0
WEP64_KEY1=0000000000
WEP64_KEY2=0000000000
WEP64_KEY3=0000000000
WEP64_KEY4=0000000000
WEP128_KEY1=00000000000000000000000000
WEP128_KEY2=00000000000000000000000000
WEP128_KEY3=00000000000000000000000000
WEP128_KEY4=00000000000000000000000000
WEP_DEFAULT_KEY=0
WEP_KEY_TYPE=1
FRAG_THRESHOLD=2346
SUPPORTED_RATES=15
BEACON_INTERVAL=100
PREAMBLE_TYPE=0
BASIC_RATES=3
RTS_THRESHOLD=2347
AUTH_TYPE=2
HIDDEN_SSID=0
WLAN_DISABLED=0
INACTIVITY_TIME=30000
RATE_ADAPTIVE_ENABLED=1
DTIM_PERIOD=3
WLAN_MODE=0
NETWORK_TYPE=0
ALIAS_NAME=teton
IP_ADDR=192.168.1.200
SUBNET_MASK=255.255.255.0
DEFAULT_GATEWAY=192.168.1.254
DHCP=0
STP_ENABLED=0
WLAN_MACAC_NUM=0
WLAN_MACAC_ENABLED=0
SUPER_NAME=super
SUPER_PASSWORD=super
USER_NAME=
USER_PASSWORD=


A következõ rövid részlet az init.sh scriptbõl való és a
flash program paraméterezését, valamint az egyes alrészek indításáért felelõs scripteket sorolja fel.
 

TOOL=flash
GETMIB="$TOOL get"
LOADDEF="$TOOL default"
LOADDS="$TOOL reset"
SET_IP=fixedip.sh
START_DHCP_SERVER=dhcpd.sh
START_DHCP_CLIENT=dhcpc.sh
START_BRIDGE=bridge.sh
START_WLAN=wlan.sh
START_PPPOE=pppoe.sh
START_FIREWALL=firewall.sh
A legfelsõ szintû script az /etc alatt található, profile a neve. Az /etc tartalma:
 
 
# echo *
host.conf hosts nsswitch.conf passwd ppp profile protocols services udhcpc

A profile script pedig így néz ki:

# cat profile
ifconfig lo   127.0.0.1

# start AP system
init.sh ap all

# extact web pages
flash extr /web

# start web server
webs&

Látható, hogy az adott esetben az init sript access point módban fog indulni.
A web lapokat a flashbõl tölti be a megadott könyvtárnév alá:

    flash extr /web

majd elindítja a mini web szervert.
Érdemes megfigyelni, hogy a flash program help-je nem tartalmazza az
extr paraméter.
Ez adta az ötletet, hogy egy kicsit jobban szemügyre vegyem a flash programot. A "vallatás" eredménye a flash program néhány, nem nyilvánvaló lehetõsége lett.

Egy teljesebb parameter lista:
 

get
set
all
default
reset
extr
test
-hwconftest
-dsconftest
-csconf
WLAN_MACAC_ADDR
DEF_WLAN_MACAC_ADDR


Egy bonyolultabb használatra példa: a wlan interface hardware címének (MAC address) módosítására szolgáló rész nem nyilvános "help-je":

flash set WLAN_MACAC_ADDR cmd
      add mac-addr, comment -- append a filter mac address.
      del mac-addr -- delete a filter mac address.
      delall -- delete all filter mac address.

Kiderült még, hogy a web lapokat gzippel tömöritve is tudja írni a flashbe, ill. visszaolvasni.

Ami a web interface mögött van.
(Some files, behind the web interface)
---------------------------------------------------

A /web alkönyvtár tartalmazza a web browserrel elérhetõ felületek kialakításához szükséges szöveg, kép és script fileokat.
 

# echo *
code.html graphics home.asp menu-images menu.html menu_empty.html mtmcode.js password.asp saveconf.asp stats.asp status.asp tcpip.asp title.htm upload.asp wlactrl.asp wladvanced.asp wlbasic.asp wlsecurity.asp wlstatbl.asp


Ezek közül külön is érdemes foglalkozni az mtmcode.js java scripttel,
valamint az upload.asp scripttel, ami a firmware frissítésért felelõs.

2004 február 7.



X-Micro 11b AP Linux - újabb fordulat
(A new approach: mounting the firmware's filesystem under a web)
The Minitar firmware, its main parts, a loop-mounted version on my web server
--------------------------------------------------------

Miután kb. egy napig vallattam az X-Micro AP-t a soros porton kertesztül, hogy kicsit jobban megismerjem a benne rejtõzõ "lelkét", vagyis a micro(uC) Linuxot, és a web interfacet megvalósító programok részetesebb nézegetéséhez fogtam volna, egy apró fordulat következett, ami sokkal egyszerûbbé teszi a további munkát. És ami szintén nem mellékes, olyanok számára is könnyen és kényelmesen követhetõvé, akiknek "momentán" nem áll rendelkezésre maga a hadware, vagy ha van kéznél, de nem szánták el magukat a "garanciális feltételeket megsértõ" kidobozolásra és vezetékek, RS232 illesztõ csatlakozás forrasztására.

Rábukkantam arra, hogy a Minitar nevû taiwani cég több változatban is elérhetõvé tette az RTL8181 alapú eszközeinek "firmeware"-jét. Ezek - jelenleg három verzióban - letölthetõk a http://www.minitar.com/ címrõl.
 

A cég további adatai:
Email:
For Sales enquiries: sales@minitar.com
For Information and Press: info@minitar.com
For Support: support@minitar.com
Minitar Corporation
5FL., No. 53, Sec. 4, Chung Hsin Road,
San Chung City, Taipei Hsien, Taiwan
Tel: +886-2-89881083
Fax: +886-2-89881074


Csak közbevetõleg jegyzem meg, hogy az RTL8181  alapú eszközök kicsiny, de lelekes és gyorsan növekvõ tábora körében becsben áll a Minitar cég, mert készségesnek mutatkozott az együttmûködésre az open source fejlesztõkkel, és bizonyos nyomok szerint az egyik "firmware" változat forrás kódját is közzé tette, bár a link, ami mögött lennie kellene, pillanatnyilag (?) csak hibát ad vissza.
(A "firmware" idézõjeles kifejezést itt az eszközbe betölthetõ, futtatható gyári filera használom, ami lényegében egy bináris formájú Linux, részleteket lsd. alább)

A következõ részlet a www.melbournewireless.org.au minitarral foglalkozó oldaláról való:

- Minitar's OEM appears to be Edimax. Product Link. (2003-11-08)
- Source is available on the Melbourne Wireless website. (2003-11-08)
- Mitch from perthwireless has discovered a working password for the busybox login prompt (6-11-03)
- Minitar say they will now produce source for the GPL'd code in these units. (23-10-03)
- Minitar has now released the source that they recieved from realtek. (25-10-03)
The kernel archive they've releasead seems to be missing a number of important .c files the drivers for the CPU, wifi, and rom chips particularly
- A new Linux RTL8181 Sourceforge project has started here. This has a good table of RTL8181 based products. (2-3-04)

A minitar archivumából letölthetõ "firmware" kis bûvészkedés (lásd alább) után három file-já bontható: (két változatot sikerült feldolgoznom, az utóbbi, 2.32 verzió - nem a legutolsó verzió - file neveit használom itt).
A 2.32 verzió file neve a kitömörítés után:
 

general-ap_upg_2.32_8m.bin


(A file neve a következõ "spekulációknak" adhat alapot: a general az angol üzeneteket tartalmazó változatra utal, szemben a távolkeleti nyelvû verziókkal. az ap az access point módban felálló rendszert jelentheti, szemben a router-gateway változatokkal.
Az upg upgrade változat, a 8m pedig a hw memória méretét jelöli. A bin formátum pedig azt, hogy közvetlenül memóriába -flashbe- tölthetõ a file tartalma).

A fent megnevezett file az alább bemutatott scripttel bontható szét három darabra, ezek:
 


A szétbontást, mint azt már szóbahoztam,  egy scripttel lehet elvégezni, ez a fent idézett melbournewireless lapról való (a szerzõ talán Michnea ?, lásd ott.).
 
 

#!/bin/bash
  ZIPFILE=Minitar_AP_Firmware_2.32.zip
  FIRMWARE=general-ap_upg_2.32_8m.bin
  DOWNLOADSITE="http://www.minitar.com/downloads/"
  #-- START
  wget "$DOWNLOADSITE$ZIPFILE"
  unzip -jo $ZIPFILE
  dd if=$FIRMWARE bs=1 skip=12 count=$((0x18000)) | \
  zcat ->webpages-ap.bin
  dd if=$FIRMWARE bs=1 skip=$((12+0x18000)) | \
  zcat ->vmlinux_img
  dd if=vmlinux_img bs=1 count=$((0x16d000)) >kcoff
  dd if=vmlinux_img bs=1 skip=$((0x16d000)) |zcat ->tmpimg.img
  rm -f vmlinux_img
  #-- END


A script elvégzi a letöltést és a kicsomagolást is, ha ezek már megvannak, akkor értelemszerûen csak a lényeg, a "szétszedõ" rész kell, a három dd parancs.
 

Mivel a szétszedés lényege, hogy ismerjük a fileok méretét, ezért csak a megadott verzióra müködik helyesen. A legutolsó, 2.34-es verzióhoz nem készült script, így ennek szétbontása nekem nem sikerült. (Ha valakinek sikerül, adjon hírt magáról).

A filesystem felmountolása a hagyományos (számomra megjegyezhetetlen)
módon így történhet:
 

mount -t ext2 -o loop tmpimg.img /mnt/floppy -o ro,nodev,nosuid,noexec


Én az újabb, és könnyen fejben tartható megoldást ajánlom:
 

   losetup /dev/loop0   /tmp/tmpimg.img  (ha a file a /tmp alatt van)
    mount  /dev/loop0   /mnt         (ha a /mnt alatt akarjuk látni).


A felmountolás után kényelmesen tanulmányozhatjuk a különbözõ alkönytárak tartalmát, azzal a megszorítással, ami a "nem élõ" filesystemre érvényes:

- a proc "filesystem" természetszerûleg "nem éled fel", hiszen ez szorosan összefügg magával a hardwerrel, ezt üres alkönyvtár jelzi.
- ugyanígy a /dev alkönyvtárat is, az ok ugyanaz, mint fent.
- a bináris fileokkal nemigen tudunk mit kezdeni.
- a szimbolikus linkek csalóka file méreteket mutatnak, szinte valamennyi mérete azonos (262K), mert szinte valamennyi a busybox-ra mutat, ennek pedig ekkora a mérete.
- viszont tanulmányozhatjuk a /web könyvtárban a web-es interfész kialakítását, egy browserrel akár meg is nézhetjük, mintha igazi eszköz lenne mögötte.

Mit tehetünk még?

A dolog természetszerûleg leginkább arra való, amire szánták: új verzióként betölthetjük az eszközünkbe.
Ha kedvünk tartja, tanulmányozhatjuk a passwd filet és környékét (lásd fent a hírek között, hogy mit csinált még Mitch a perthwireless-tõl).

Aki nem akarja a fenti lépéseket végigcsinálni, esetleg csak bele szeretne nézni, annak idõlegesen felmountolom az egyetemi web szerverem  munkakönyvtárába a filesystemet. Ha az alábbi URL-re hív rá, akkor ebben fogja találni magát.
(a végleges UIRL-t lásd az utolsó részben).
Ez a Minitar eszközökbe tölthetõ változat természetszerûleg nem teljesen azonos az X-Micro változattal. Nekem az eddigi vizsgálódások után úgy tûnik, hogy mintegy 90 százalékban fedik egymást. Természetesen érdemes vizsgálni a különbségeket, a leginkább hasznos azonban a forráskód tanulmányozása lenne. Remélem, sikerül a nyomára akadnom. Ez annál is inkább elvárható lenne, mert a fenti Linux GPL licensze elõirja, hogy senki nem teheti zárttá a vele készült, rá épült rendszerét (ha jól értem a dolgot).

2004 febr. 10



X-Micro wlan AP - különféle megjegyzések
(Miscellaneuse notes)

Andrew Miklas letter about the missing drivers in the "Open Source" firmware packages
Links to the mounted version of the Minitar's file system on a web server
--------------------------------------------

Az elõzõ rész végén azt gondoltam, hogy egyelõre befejeztem az rtl8181 alapú, - nekem az X-Micro cég gyártmányaként rendelkezésre álló - wlan ap/routerek néhány aktuális problémájának áttekintését. Miután felküldtem a guerillanet listára az utolsó beszámoló részt, Cövektöl (covek (at) mailbox.hu) az alábbi levelet kaptam, ami további keresgélésre késztetett. Cövek! köszi az infót!:


>Nálam van egy BUFFALO AirStation WLA-L11G típusú cucc.
>A neten nyomozgattam egy leírás után és a buffalo oldalán
>a letöltések között meglepõdve találtam az alábbi fájlt:
>
>GPL_linux_source.zip
>28M a mérete, ha jól látom akkor két alkönytárat tartalmaz:
>2.4.5 kernelforrás
>router alkonyvtár benne pár cucc.
>
>Azt nem tudom, hogy mihez van, de érdemes lehet megnézni...


Letöltöttem, megnéztem, és egy kicsit körbejártam a "buffalo-témát". Tulajdonképp a "forró" pontoknál vagyunk.
A letöltött file kitömörítve 128 Mega körül van, és egy komplett Linux forrás.
De! ...
Csak épp az a két driver hiányzik belõle, ami a "lelke" az egésznek, az
ethernet és a wlan interfacek meghajtói.

Két levél töredék egy listáról:
(Az alábbi szöveg innen való: http://lkml.org/lkml/2003/9/29/294 ).

Buffalo (buffalotech.com) have also a bunch of products, MIPS based
wireless routers and bridges, running Linux. I could not find the driver of the wireless cards -based on Broadcom 4306 chips- in the kernel bundle they distribute in their website:

http://www.buffalotech.com/wireless/support/faq/index.php)
http://www.buffalotech.com/wireless/support/faq/GPL_linux_source.zip

Maybe I oversaw them.

Nor they provide drivers for the wireless cardbus. I wrote them
about it but received no answer

Ugyanarról a fileról, forrás-csomagról van szó, mint amit én is letöltöttem, és nézegettem.
És még egy értékelés egy másik levélbõl:
The buffalo firmware is rumoured to be very old and buggy. The site misses the source for the recent firmwares.
Úgy tûnik, hogy nem is a Buffalotech "helytelen" viselkedésérõl van szó. Egy harmadik, hosszú levélbõl kiderül, hogy a fõ fejlesztõ a Linksys, és tudatosan elzárkóznak a kulcsfontosságú driverek forrásának kiadásától. Egyik hivatkozásuk az, hogy õk is külsõ céggel készittették el és nem rendelkeznek a forrással (!).
A levét itt található:

http://lkml.org/slashdot.php?mid=336711

Andrew Miklas írta.
Részletesen, két módon is bizonyítja, hogy a Linksys un. "GPL Code Center"-ében található Linux forrás nem teljes, nem lehet segítségével elõállítani azt a bináris változatot, ami hibátlanul fordítódik le, és betölthetõ lenne, adott esetben a Linksys WRT54G típusú access pointba. Egy másik módszerrel a kernel szimbólumtáblájából mutatja ki a hiányzó kódok nyomait. Egyértelmû, hogy a Broadcomm ethernet és a wlan interface meghajtói hiányoznak.
A levél felsorol néhány e-mail címet, hogy aki érdeklõdni szeretne a témában a Linksysnél, az tudjon hova fordulni. Bár megjegyzi, hogy eddig érdemi válasz nem jött.
Tizen írták alá, a legismertebb név Alan Cox-é, van közöttük magyar név is.

A történet tehát itt tart, valószínûleg jelenleg nem érdemes több, vagy  más forrás filet keresni vagy letölteni, nagy valószínûséggel egyikben sincs meg a teljes kód.
Tehát mûködõ, egyéni igényekhez igazított firmware változatot nem tud elõállítani a "szabad szoftver" közösség az általuk, általunk hosszú évek munkájával létrehozott Linux fejlesztõi környezetben. Hiába a GPL licensz, a jog ebben az esetben (?) mintha csak az erõsebb felet védené.



A Minitar filesystem és web interface elérhetõsége

Ami az X-Micro és a Minitar AP-ket illeti, az elõzõ levél folytatásaként jelzem, hogy elérhetõ a Minitar felmountolt filesystem:

 http://kvtr.elte.hu/rtl8181/ alatt.

A web interface pedig innen tanulmányoztahó:

 http://kvtr.elte.hu/rtl8181/web/index.asp

Természerszerûleg a programokra, scriptekre hivatkozások hibaüzeneteket eredményeznek.
(Az elérhetõség csak ideiglenes, ugyanis könnyen elõfordulhat, hogy a különféle próbálkozások a filesystemen keresztül elérhetõ programokal a szerver leállsást fogják okozni. Az újrainduláskor a filesystem nem fog ujra láthatóvá vállni, és nincs szándékomban kézzel, újra feltenni.)



Mire használható? még néhány ötlet.
(Costume use of the AP: some tipps)
Biulding system with some interesting, new possibilities,  using as a small, local information server, and a remote control/measure device.
-------------------------------------------------

Még egyszer visszatérek a korábban feltett kérdére: Mire használható még?
Természetesen nemcsak nekem jut eszembe az egyéni igényeknek megfelelõ rendszer összeállítás. Néhány ötletet minden különösebb keresés nélkül is találtam. Pl. a NoCatAuth-ot szeretnék beletenni. Egy másik ötlet, hogy egységesített web felületet szeretnének tervezni, itt látható is egy példa:

http://www.smallnetbuilder.com/Reviews/images/scrnshots/buffalo_log.jpg

Körbejárták a logfileok problémáját. Az ilyen kis rendszerekben kevés az erõforrás a gyakran elenõrizhetetlen méretû logfileok számára. Mind a memóriában, mind a flash területen tárolt log fileok rejtenek problémákat. Felvetették azt a lehetõséget, hogy a syslogd külsõ gépre küldje át a log fileokat. Ezzel a megoldással egy jó eszközhöz lehet jutni pl. a rádiós forgalom ellenõrzésése, vizsgálata céljából.
 A soros vonalon, általam vizsgált X-Micro rendszerben a log készítés le van tiltva.

Még két ötlettel megtoldom a fentieket:

- ha ilyen olcsók az eszközök, értelmesnek tûnik minden egyes wlan hálózatba az AP, vagy a router mellé, egy elõre elhatározott címre tenni egy ilyen piciny, információs web szervert. Ez annyi átalakítást igényelne, hogy a webes konfigurációt részletesen tanulmányozni és dokumentálni kellene, hogy hogyan lehet megoldani a soros vonalon hagyományos Linux parancsokkal (ifconfig, route, stb) és ekkor feleslegessé válna a webes rendszermódosítási lehetõség, ki lehet törölni a webfileokat tartalmazó állományt. Kb 300 kbyte terület szabadulna így fel, amiben meg lehetne tervezni a kis információs szerver szolgáltatásait, akár frissíthetõ oldalakkal is. Ha egy új, ismeretlen érdeklõdõ kapcsolódik be a rendszerbe, ezen a kis web szerveren keresztül részletes információkat kaphatna a hálózatról, de más, helyi dolgokról is.

- egy másik ötlet alapja az, hogy már lehet kapni - igaz, húzós áron - olyan kis dobozokat, amiknek van IP címe, és pici web szerveren keresztül érhetõ el, és pl. egy távoli szerver géprõl lehet bizonyos hw adatokat folyamatosan nyomonkövetni, vagy adott esetben egy hw resetet kiadni. Lényegében egy távmérõ, távvezérlõ dobozka, amit bárhonnan el lehet érni. Az ilyen átalakításhoz leginkább az rtl8181 GPIO vonalainak kezeléséhez kellene egy driver, valamint egy kis hardware átalakítás, kivezetni néhány i/o vonalat és ellátni meghajtókkal, ill. védelemmel.

Az ötleteket nyilván lehet folytatni, és majdnem biztos, hogy a közeljövõben meg fognak jelenni az elsõ megoldások is. Addig érdemes felkészülni a fogadásukra.

2004 február 11.



Miután néhány napja felekerült egy link
http://rtl8181.sourceforge.net/rtl8181_devices.php
az RTL8181 project, eszközöket összefoglaló lapjára, amely erre a tanulmányra mutat, kellõ röstelkedés után :-(( , magamba szálltam, és "minimális megoldásként " a fõbb címeket lefordítottam és apró megjegyzéseket fûztem a fejezetek elejére angolul. Ezeket a szövegeket a megtalálás megkönnyítésére zölddel kiemeltem: Some short English notes - text in green.

2004 február 14.
Tölgyesi János