The serial number is in the 16mb on board flash memory - the intel chip on the computer sub-board.
You can get u-boot access by making up a serial cable. Signals are available on the 8 pin mini din on the outside of the MDI case. pin 1 goes to PC TX (MDI RX), pin 2 goes to PC RX (MDI TX). Pin 3 goes to ground. Then when you boot:
The problem is the serial number and MAC flash partitions are misaligned from the flash erase block boundaries, which forces them to mount read only. Because of this the update commands dont work
I think that if we mapped a memory partition at 0x00FE0000 with size 0x00020000 then we would be able to erase that partition and load a new one via ethernet / tftp. This 128k block would cover both the serial and mac paritions. Both these partitions have checksums which would need to be figured out and calculated.
What you have been editing is the equivalent of the MDI registry. Once the serial and mac are changed in flash then a re-flash of the device should put the new numbers in the registry and they should persist over device firmware updates. I expect duplicate mac addresses are as relevant as the serial number duplicates on your lan.
The sdcard is just the /usr/local/ portion of the firmware. The rest is in the 16mb flash.
Be careful, its super easy to brick your MDI with these tools.
You can get u-boot access by making up a serial cable. Signals are available on the 8 pin mini din on the outside of the MDI case. pin 1 goes to PC TX (MDI RX), pin 2 goes to PC RX (MDI TX). Pin 3 goes to ground. Then when you boot:
Quote:U-Boot 1.1.4 (Dec 21 2007 - 12:11:55) ETAS VCI (r13006)
U-Boot code: A3F00000 -> A3F218F0 BSS: -> A3F27524
RAM Configuration: TRITON 270 II
Bank #0: a0000000 64 MB
Bank #1: a4000000 64 MB
HW Configuration: (0x207) MDI VCI with SMSC9116
Found P30 Flash, unlocking all blocks: 130
Flash: 16 MB
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
$ help
? - alias for 'help'
askenv - get environment variables from stdin
autoscr - run script from memory
base - print or set address offset
bdinfo - print Board Info structure
boot - boot default, i.e., run 'bootcmd'
bootd - boot default, i.e., run 'bootcmd'
bootm - boot application image from memory
bootp - boot image via network using BootP/TFTP protocol
cmp - memory compare
coninfo - print console devices and information
cp - memory copy
crc32 - checksum calculation
dhcp - invoke DHCP client to obtain IP/boot params
echo - echo args to console
erase - erase FLASH memory
exit - exit script
flinfo - print FLASH memory information
flock - physical lock of Strataflash
funlock - physical unlock of Strataflash
go - start application at address 'addr'
help - print online help
iminfo - print header information for application image
imls - list all images found in flash
increnv - increment environment variables
itest - return true/false on integer compare
loadb - load binary file over serial line (kermit mode)
loads - load S-Record file over serial line
loop - infinite loop on address range
macaddr - display or store MAC address in Strataflash
mapadd - add a memory map item
mapdel - delete a memory map item
mapinfo - display the memory map information
md - memory display
mm - memory modify (auto-incrementing)
mmcinfo - get info on mmc(sd) card
mtest - simple RAM test
mw - memory write (fill)
nfs - boot image via network using NFS protocol
nm - memory modify (constant address)
ping - send ICMP ECHO_REQUEST to network host
pinit - PCMCIA sub-system
printenv- print environment variables
protect - enable or disable FLASH write protection
rarpboot- boot image via network using RARP/TFTP protocol
reset - Perform RESET of the CPU
run - run commands in an environment variable
saveenv - save environment variables to persistent storage
serialnum - display or store serial number in Strataflash
setenv - set environment variables
sleep - delay execution for some time
test - minimal test like /bin/sh
tftpboot- boot image via network using TFTP protocol
version - print monitor version
The problem is the serial number and MAC flash partitions are misaligned from the flash erase block boundaries, which forces them to mount read only. Because of this the update commands dont work

Code:
$ serialnum
Serial number: 1220-22129579
$ serialnum 1220-12345678
Error: start address not on sector boundary
Failed to read same serial number back from StrataflashI think that if we mapped a memory partition at 0x00FE0000 with size 0x00020000 then we would be able to erase that partition and load a new one via ethernet / tftp. This 128k block would cover both the serial and mac paritions. Both these partitions have checksums which would need to be figured out and calculated.
What you have been editing is the equivalent of the MDI registry. Once the serial and mac are changed in flash then a re-flash of the device should put the new numbers in the registry and they should persist over device firmware updates. I expect duplicate mac addresses are as relevant as the serial number duplicates on your lan.
Quote:$ mapinfo
Name Location Size Type Source Guard
---- -------- ---- ---- ------ -----
boot 0x00000000 0x00040000 Flash bootargs Off
bootvars 0x00040000 0x00020000 Flash bootargs Off
linux1 0x00060000 0x00180000 Flash bootargs Off
initrd1 0x001e0000 0x00600000 Flash bootargs Off
linux2 0x007e0000 0x00180000 Flash bootargs Off
initrd2 0x00960000 0x00600000 Flash bootargs Off
linuxvars1 0x00f60000 0x00020000 Flash bootargs Off
linuxvars2 0x00f80000 0x00020000 Flash bootargs Off
serialnum 0x00ff0000 0x00008000 Flash bootargs Off
macaddress 0x00ff8000 0x00008000 Flash bootargs Off
zImage 0xa0008000 0x00200000 DRAM Initial Off
scratch 0xa2000000 0x00a00000 DRAM Initial Off
script 0xa2a00000 0x00100000 DRAM Initial Off
Stack 0xa3e9ff80 0x00020000 DRAM System On
GD 0xa3ebff80 0x00000080 DRAM System On
Heap 0xa3ec0000 0x00040000 DRAM System On
Text 0xa3f00000 0x000218f0 DRAM System On
BSS 0xa3f218f0 0x00005c34 DRAM System On
The sdcard is just the /usr/local/ portion of the firmware. The rest is in the 16mb flash.
Be careful, its super easy to brick your MDI with these tools.

