- Table of contents
- Linux on Auerswald COMmander Basic2
Linux on Auerswald COMmander Basic2¶
This page is an attempt to document bits and pieces about the embedded Linux OS that runs on the Auerswald COMmander Basic2 PBX.
More speificially, it's an ARM/Linux based system running on a Digi International NS9360 ARM926 SoC built from PTXdist-0.7.5
Source Code¶
- the PTXdist 0.7.5 source code can be found at https://public.pengutronix.de/software/ptxdist/v0.7/
- Auerswald has released GPL tarballs at http://data-1.auerswald.de/license/gpl/COMfortel_VoIP_250_DECT1040_COMfortel2500/2015/GPL_COMfortel_VoIP_250_DECT1040_VoIP_2500_150415.iso
Serial Console¶
The ARM SoC has a serial console (ttyS2) at 3.3V. It is running at 19200 bps and is exposed on test pads near the NS9630 on the PBX mainboard.
Pinout¶
The pinout related to the orientation of the pictures is (from top to bottom):
location | signal |
---|---|
top | GND |
center | TxD (of CB2) |
bottom | RxD (of CB2) |
u-boot¶
u-boot bootlog¶
YABOL 1.3 (11:21:24Jan 17 2007) hardware version: 01 checking for image mode...on... no loading binary from NAND binary loaded, starting... U-Boot 1.1.2 (Aug 7 2006 - 08:23:30) FS.1-gds3.1 U-Boot code: 00F80000 -> 00F9D148 BSS: -> 00FA83DC IRQ Stack: 00f5fb7c FIQ Stack: 00f5eb7c SDRAM-Size: 2000000 hex RAM Configuration: Bank #0: 00000000 32 MB NAND: 64 MB Init NAND-FLASH .... Using default environment In: serial Out: serial Err: serial Board revision 1 found serial: 2448900276AU0123103800820H ethaddr: 00:09:52:00:d1:7f ccode: 0 reserve: Checking for factory reset... no Looking for boot partition... reading marker block: ******** Checking Partition 1... OK Hit any key to stop autoboot: 0 Partition changed to 1 ### JFFS2 loading 'boot/bas2boot.1.img' to 0x10000 Scanning JFFS2 FS: ......... done. ### JFFS2 load complete: 456 bytes loaded to 0x10000 ## Executing script at 00010000 ### JFFS2 loading 'boot/fpga_r1.bin' to 0x10000 ### JFFS2 load complete: 75895 bytes loaded to 0x10000 FPGA Version @0x40088000: 11 . ### JFFS2 loading 'boot/uImage' to 0x10000 ### JFFS2 load complete: 952212 bytes loaded to 0x10000 ## Booting image at 00010000 ... Image Name: Linux-2.6.11-fs.1-gds9.4 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 952148 Bytes = 929.8 kB Load Address: 00008000 Entry Point: 00008000 Verifying Checksum ... OK OK
u-boot environment¶
bootargs=console=ttyS1 ip=192.168.0.240::192.168.0.10:255.255.255.0 root=mtdblock/$(bootpart) ro rootfstype=jffs2 bootcmd=chpart $(bootpart);fsload boot/bas2boot.$(board_revision).img;autoscr;chpart $(backuppart);fsload boot/bas2boot.$(board_revision).img;autoscr;booterr 3 4 4 bootdelay=3 baudrate=19200 ipaddr=192.168.0.240 serverip=192.168.0.10 gatewayip=192.168.0.1 netmask=255.255.255.0 bootcmd_error=booterr 1 4 4 bootcmd_install=autoscr;mw.b 1000000 0 100;echo update failed;booterr 1 4 4 stdin=serial stdout=serial stderr=serial board_revision=1 serial=2448900276AU0123103800820H ethaddr=00:09:52:00:d1:7f ccode=0 reserve= bootpart=1 backuppart=2
boot script¶
u-boot> fsload boot/bas2boot.1.img u-boot> md 0x10000 80 00010000: 56190527 233f5c22 ffa86e5c 88010000 '..V"\?#\n...... 00010010: 00000000 00000000 1b0005ea 01060205 ................ 00010020: 00000000 00000000 00000000 00000000 ................ 00010030: 00000000 00000000 00000000 00000000 ................ 00010040: 80010000 00000000 6c746573 30206465 ........setled 0 00010050: 0a0a3320 6f6c7366 31206461 30303030 3..fsload 10000 00010060: 6f6f6220 70662f74 725f6167 69622e31 boot/fpga_r1.bi 00010070: 70660a6e 6c206167 2064616f 30312030 n.fpga load 0 10 00010080: 20303030 69662824 6973656c 0a29657a 000 $(filesize). 00010090: 6f686365 47504620 65562041 6f697372 echo FPGA Versio 000100a0: 3040206e 635c5c78 2e646d0a 30342062 n @0x\\c.md.b 40 000100b0: 30383830 31203030 65730a0a 766e6574 088000 1..setenv 000100c0: 6f6f6220 67726174 73616273 63206369 bootargsbasic c 000100d0: 6f736e6f 743d656c 32537974 3239312c onsole=ttyS2,192 000100e0: 75203030 5f726573 75626564 35323d67 00 user_debug=25 000100f0: 65730a35 766e6574 6f6f6220 67726174 5.setenv bootarg 00010100: 64746d73 6f6f7220 746d3d74 6f6c6264 smtd root=mtdblo 00010110: 242f6b63 72617028 69746974 20296e6f ck/$(partition) 00010120: 72206f72 66746f6f 70797473 666a3d65 ro rootfstype=jf 00010130: 20327366 61687465 3d726464 74652824 fs2 ethaddr=$(et 00010140: 64646168 63202972 65646f63 6328243d haddr) ccode=$(c 00010150: 65646f63 65732029 6c616972 7328243d code) serial=$(s 00010160: 61697265 730a296c 6e657465 6f622076 erial).setenv bo 00010170: 7261746f 24207367 6f6f6228 67726174 otargs $(bootarg 00010180: 73616273 20296369 6f622824 7261746f sbasic) $(bootar 00010190: 746d7367 0a0a2964 6f6c7366 31206461 gsmtd)..fsload 1 000101a0: 30303030 6f6f6220 49752f74 6567616d 0000 boot/uImage 000101b0: 7465730a 2064656c 0a322030 746f6f62 .setled 0 2.boot 000101c0: 3031206d 0a303030 5a2cf071 6b6b6b6b m 10000.q.,Zkkkk
modified bootscript to get root shell¶
u-boot> setled 0 3 u-boot> fsload 10000 boot/fpga_r1.bin ### JFFS2 loading 'boot/fpga_r1.bin' to 0x10000 ### JFFS2 load complete: 75895 bytes loaded to 0x10000 u-boot> fpga load 0 10000 $(filesize) u-boot> setenv bootargsbasic console=ttyS2,19200 user_debug=255 init=/bin/sh u-boot> setenv bootargsmtd root=mtdblock/1 ro rootfstype=jffs2 ethaddr=$(ethaddr) ccode=$(ccode) serial=$(serial) u-boot> setenv bootargs $(bootargsbasic) $(bootargsmtd) u-boot> fsload 10000 boot/uImage ### JFFS2 loading 'boot/uImage' to 0x10000 ### JFFS2 load complete: 952212 bytes loaded to 0x10000 u-boot> setled 0 2 u-boot> bootm 10000
kernel¶
kernel bootlog¶
Starting kernel ... Uncompressing Linux............................................................... done, booting the kernel. Linux version 2.6.11-fs.1-gds9.4 (build@build) (gcc version 3.4.2) #375 Fri Mar 5 09:55:24 CET 2010 CPU: ARM926EJ-Sid(wb) [41069264] revision 4 (ARMv5TEJ) CPU0: D VIVT write-back cache CPU0: I cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets CPU0: D cache: 4096 bytes, associativity 4, 32 byte lines, 32 sets Machine: A9M9360 Memory policy: ECC disabled, Data cache writeback NS9360 Rev. 0, running at 154 MHz Built 1 zonelists Kernel command line: console=ttyS2,19200 user_debug=255 root=mtdblock/1 ro rootfstype=jffs2 ethaddr=00:09:52:00:d1:7f ccode=0 serial=2448900276AU0123103800820H PID hash table entries: 256 (order: 8, 4096 bytes) Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) Memory: 32MB = 32MB total Memory: 30352KB available (1602K code, 332K data, 80K init) Mount-cache hash table entries: 512 (order: 0, 4096 bytes) CPU: Testing write buffer coherency: ok NET: Registered protocol family 16 i2c_ns: I2C ns9750 driver $Revision: 1.5 $ initializing NetWinder Floating Point Emulator V0.97 (double precision) devfs: 2004-01-31 Richard Gooch (rgooch@atnf.csiro.au) devfs: boot_options: 0x1 Installing knfsd (copyright (C) 1996 okir@monad.swb.de). JFFS2 version 2.2. (NAND) (SAFENAND) (SUMMARY) (C) 2001-2006 Red Hat, Inc. NS9750 Watchdog initialized Serial: NS9750 driver $Revision: 1.6 $ ttyS0 at MMIO 0xf9200000 (irq = 34) is a NS9xx0 ttyS1 at MMIO 0xf9200040 (irq = 36) is a NS9xx0 ttyS2 at MMIO 0xf9300000 (irq = 38) is a NS9xx0 ttyS3 at MMIO 0xf9300040 (irq = 40) is a NS9xx0 Serial: JTAG driver $Revision: 1.1 $ ttyJ0 at MMIO 0x0 (irq = 0) is a JTAGCOMM io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered io scheduler cfq registered loop: loaded (max 8 devices) Ethernet: NS9xx0 driver $Revision: 1.13.cbr $ NAND Flash memory mapped to virtual c2880000 NAND device: Manufacturer ID: 0x98, Chip ID: 0x76 (Toshiba NAND 64MiB 3,3V 8-bit) Scanning device for bad blocks Using static partition definition Creating 5 MTD partitions on "basic.2": 0x00000000-0x00038000 : "U-BOOT" 0x00040000-0x01020000 : "System_1" 0x01020000-0x02000000 : "System_2" 0x02000000-0x04000000 : "Daten" 0x00038000-0x00040000 : "Service" NS9360 udc driver ns9360-udc ns9360-udc0: gadget driver initializing i2c /dev entries driver 24c64: EEPROM driver $Revision: 1.1 $ initializing NET: Registered protocol family 2 IP: routing cache hash table of 512 buckets, 4Kbytes TCP established hash table entries: 2048 (order: 2, 16384 bytes) TCP bind hash table entries: 2048 (order: 1, 8192 bytes) TCP: Hash tables configured (established 2048 bind 2048) NET: Registered protocol family 1 Root-NFS: No NFS server available, giving up. VFS: Unable to mount root fs via NFS, trying floppy. VFS: Mounted root (jffs2 filesystem) readonly. Mounted devfs on /dev Freeing init memory: 80K PTXdist-0.7.5 (2005-11-23T10:35:05+0100) mounting /proc and /sys... done. mounting filesystems... mount: WARNING: loop device is read-only done. preparing /data ...done. basic system configuration... done. starting the system logger... done. starting network... [HWaddr: 00:09:52:00:d1:7f] Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/net/packet/af_packet.ko Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/net/ipv4/netfilter/ip_conntrack.ko Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/net/ipv4/netfilter/ip_tables.ko Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/net/ipv4/netfilter/iptable_filter.ko Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/net/ipv4/netfilter/iptable_nat.ko Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/net/ipv4/netfilter/ipt_MASQUERADE.ko Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/net/ipv4/netfilter/ipt_REDIRECT.ko killall: vd: no process killed killall: vmd: no process killed done. starting USB network port ... Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/drivers/usb/gadget/g_ether.ko killall: udhcpd: no process killed udhcpd (v0.9.9-pre) started done. starting ppp... Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/drivers/net/slhc.ko Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/drivers/net/ppp_generic.ko Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/drivers/net/ppp_synctty.ko Using /lib/modules/2.6.11-fs.1-gds9.4/kernel/drivers/char/n_hdlc.ko done. mounting nfs filesystems... done. reading the hardware clock... Using /opt/auerswald/modules/auerrtc.ko hwclock: Could not read time from RTC: Input/output error date is invalid, setting default date Tue May 1 00:00:00 CEST 2001 hwclock: Could not set the RTC time: Input/output error starting network services... done. Using /opt/auerswald/modules/auerlog.ko Using /opt/auerswald/modules/hwtimer.ko Using /opt/auerswald/modules/auertim.ko Using /opt/auerswald/modules/auergb.ko Using /opt/auerswald/modules/auermod.ko Using /opt/auerswald/modules/isdnhdlc.ko Using /opt/auerswald/modules/auerdsp.ko Using /opt/auerswald/modules/auersicofi4.ko Using /opt/auerswald/modules/auertdm.ko Using /opt/auerswald/modules/auerab_all.ko Using /opt/auerswald/modules/auers0basic.ko Using /opt/auerswald/modules/auer4s0.ko Using /opt/auerswald/modules/auer8up0.ko Using /opt/auerswald/modules/auers2m.ko Using /opt/auerswald/modules/auertsm_all.ko Using /opt/auerswald/modules/auertoene.ko Using /opt/auerswald/modules/auer_sscp.ko Using /opt/auerswald/modules/auers0_hfc8s4s.ko Using /opt/auerswald/modules/auer_voip.ko
Useful hints¶
Activationg telnet/nfs server, NFS client¶
There's a file /data/etc/network.conf
telnet-server: no ftp-server: no nfs-server: no # nfs-mount: <host>:<path> <mountpoint> dhcp-name: COMmander_Basic.2
If you change the settings, you can enable telnet/nfs servers on the PBX itself (ftp binary is missing), or you can instruct it to mount a network share from a NFS server. Those settings are processed by the init scripts.
The default NFS exports of the server in the PBX look like this:
/ 192.168.21.0/24(sync,no_root_squash,rw) /data 192.168.21.0/24(sync,no_root_squash,rw)
Crosscompiler¶
It's possible to use crosstool-0.43 on an equally ancient debian sarge/i386 (I used debootstrap --arch=i386 sarge sarge
for that) to build a (so far seemingly) compatible "gcc-4.4.2-glibc-2.3.3" toolchain. The command used is
eval `cat arm-softfloat.dat gcc-3.4.2-glibc-2.3.3.dat` sh all.sh --notest
I modified demo-arm.sh to use the above command to build the compatible toolchain.
You can find a precompiled one at https://people.osmocom.org/laforge/auerswald/arm-softfloat-linux-gnu-gcc-4.4.2-glibc-2.3.3.tar.bz2
Updated by laforge almost 4 years ago · 10 revisions