Old school Quanta Mesh LB9A aka Pronto 3290 aka Pica8 3290

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

J Hart

Active Member
Apr 23, 2015
145
100
43
44
So I won the lottery of sorts and found an old Quanta LB9A for sale on eBay.

Quanta T1048-LB9A is a 48 port gigabit switch. It also has an expansion slot for 10GBE ports(mine had 4x SFP+ installed in it). Anyway I took a few pictures of the guts to put in here.

Photos by Jonathan Hart - Google Photos

Now what makes this thing cool is that it was one of the devices they made Openflow and Indigo on. There is plenty of available software for this.

I'll write out exactly how I managed to get this thing up and running tomorrow, but I managed to get Indigo(v1) installed on it and connect it to a Floodlight Controller in about 2 hours of futzing around with it. Got it set up as a normal L2 switch without much trouble. Still working on getting Avior playing nice with Floodlight.

Anyway, these things are really pretty much impossible to break. They have an internal CF-card that they boot from and a recovery/diagnostic image on an on board flash chip as well. The diagnostic image is a small linux implementation and you can use that to load firmware onto the CF card with tftp/ftp/nfs/whatever. The only thing that is annoying as compared with later switches is the lack of ONIE, so you really have to manually load the images.
 
  • Like
Reactions: legopc

J Hart

Active Member
Apr 23, 2015
145
100
43
44
The RAM is DDR1 and I saw posts from the Indigo group at Stanford saying they upgraded theirs to 1GB.

I switched the CF card because I couldn't figure out the Pica8/PicOS/XORplus software it came with. Whoever had this before screwed up the file system and deleted part of the /etc tree which made the switch not boot up correctly. However, the good news is that the switch doesn't seem to care at all about the CF card. I stuck in some random card I had laying around. Formatted it as ext2(which is what the original card was) using the switch. Booted it to the diagnostic image. Dropped to the command prompt and loaded Indigo via tftp.

As far as SFP+ compatibility, I wasn't able to find anything which didn't work in it. It played nice with a wide variety of Cisco and Finisar ones, LC and DAC cables.
 

J Hart

Active Member
Apr 23, 2015
145
100
43
44
I spent some time with this switch again last night. And here is what I see. The Quanta T1048-LB9/LB9A (aka Pronto 3290) was made along with the LB4G (aka Pronto 3240), LB8 (aka Pronto 3780) as a white box test bed. It was a bit of a failed experiment, but led to the later generations of Openflow devices. This original generation focused efforts on making a hardware abstraction layer that, along with a linux kernel, could allow for consistent and fast software defined networking. It looks like it went wrong because the vendors didn't like having an open source HAL and this made the development cycle slow for these.

Here is what I found while fooling around with this machine. First, the hardware is very close to the plentiful LB4M boxes floating around. It uses the same PowerPC 8541 CPU, but with different switching hardware(BCM56538 vs BCM56514) and a different 10GBE daughter card and a CF-card slot.

Communication is through the console port which uses a standard Cisco Pin out at 115200 8N1. There are 2 ethernet ports separate from the switch ports. These management ports work even when the switch isn't configured yet. They default to 192.168.2.1 and 192.168.3.1.

Mine came with U-Boot preinstalled and this results in the following output and commands.
Code:
U-Boot 1.3.0 (Sep  9 2010 - 16:00:13)

CPU:   8541, Version: 1.1, (0x80720011)
Core:  E500, Version: 2.0, (0x80200020)
Clock Configuration:
       CPU: 825 MHz, CCB: 330 MHz,
       DDR: 165 MHz, LBC:  41 MHz
L1:    D-cache 32 kB enabled
       I-cache 32 kB enabled
I2C:   ready
DRAM:  Initializing
    DDR: 512 MB
FLASH: 32 MB
L2 cache 256KB: enabled
Set ethaddr MAC address = 60:eb:69:c6:34:d3
Set eth1addr MAC address = 60:eb:69:c6:34:d4
In:    serial
Out:   serial
Err:   serial
Net:   TSEC0, TSEC1
IDE:   Bus 0: OK
  Device 0: Model: Hitachi XXM2.3.0 Firm: Rev 3.00 Ser#: X0408 20040220140501
            Type: Removable Hard Disk
            Capacity: 244.3 MB = 0.2 GB (500400 x 512)
Hit any key to stop autoboot:  0
Code:
?       - alias for 'help'
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
copy    - download image file from tftp server
cp      - memory copy
crc32   - checksum calculation
diskboot- boot from IDE device
echo    - echo args to console
erase   - erase FLASH memory
exit    - exit script
ext2load- load binary file from a Ext2 filesystem
ext2ls  - list files in a directory (default /)
flinfo  - print FLASH memory information
go      - start application at address 'addr'
help    - print online help
icrc32  - checksum calculation
ide     - IDE sub-system
iloop   - infinite loop on address range
imd     - i2c memory display
iminfo  - print header information for application image
imls    - list all images found in flash
imm     - i2c memory modify (auto-incrementing)
imw     - memory write (fill)
inm     - memory modify (constant address)
iprobe  - probe to discover valid I2C chip addresses
itest   - return true/false on integer compare
loadb   - load binary file over serial line (kermit mode)
loads   - load S-Record file over serial line
loady   - load binary file over serial line (ymodem mode)
loop    - infinite loop on address range
md      - memory display
mii     - MII utility commands
mm      - memory modify (auto-incrementing)
mtest   - simple RAM test
mw      - memory write (fill)
nfs     - boot image via network using NFS protocol
nm      - memory modify (constant address)
pci     - list and access PCI Configuration Space
ping    - send ICMP ECHO_REQUEST to network host
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
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 way that U-Boot works is that there are boot commands in environment variables which you can execute. Here is a list of the environment variables I saw.
Code:
=> printenv
flash_bootcmd=setenv bootargs root=/dev/ram console=ttyS0,$baudrate; bootm ffd00000 ff000000 ffee0000
cfcard_bootcmd=setenv bootargs root=/dev/ram console=ttyS0,$baudrate; ext2load ide 0:1 0x1000000 /uImage;ext2load ide 0:1 0x2000000 /uInitrd2m;ext2load ide 0
bootdelay=5
baudrate=115200
loads_echo=1
ipaddr=192.168.2.1
serverip=192.168.2.12
rootpath=/nfsroot
gatewayip=192.168.2.254
netmask=255.255.255.0
hostname=LB9A_X
bootfile=eldk-quanta
loadaddr=4000000
ethact=TSEC0
cfcard_bootcmd2=setenv bootargs root=/dev/hda1 rw noinitrd console=ttyS0,$baudrate; ext2load ide 0:1 0x1000000 boot/uImage;ext2load ide 0:1 0x400000 boot/LB0
bootcmd=run cfcard_bootcmd
ethaddr=60:eb:69:c6:34:d3
eth1addr=60:eb:69:c6:34:d4
stdin=serial
stdout=serial
stderr=serial

Environment size: 830/8188 bytes
=>

There is some hope that the U-boot image could be used on an LB4M as long as the two share a similar memory organization. I need to get a spare one to see. This switch puts the flash image at FF000000 and DRAM at 00000000-20000000(or 40000000 if you have 1 GB of RAM).
 
Last edited:

J Hart

Active Member
Apr 23, 2015
145
100
43
44
This switch can boot three different ways. First it can boot from the flash like how the LB4G works and most every other switch. The Openflow documents urge you not to reflash this too many times as the NOR flash is fragile and can't handle too many flashes before it breaks. The second way is to boot from a file on the CF card to a RAMfs. This is how I got Indigo working. Finally you can extract a file system to the CF card and boot the switch as if it were a normal linux computer. This is how Pica8 booted.

First, I just let it boot which would drop me to a broken Pica8 install. Not very interesting.

Second I worked out how to boot into the flash image. From the U-boot prompt it is just run flash_bootcmd.
Code:
=> run flash_bootcmd
## Booting image at ffd00000 ...
   Image Name:   Linux-2.6.27
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:    1742743 Bytes =  1.7 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
## Loading RAMDisk Image at ff000000 ...
   Image Name:  
   Image Type:   PowerPC Linux RAMDisk Image (gzip compressed)
   Data Size:    12275941 Bytes = 11.7 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
   Booting using the fdt at 0xffee0000
   Loading Ramdisk to 1f308000, end 1febd0e5 ... OK
   Loading Device Tree to 007fc000, end 007fd85f ... OK
Using MPC85xx CDS machine description
Memory CAM mapping: CAM0=256Mb, CAM1=256Mb, CAM2=0Mb residual: 0Mb
Linux version 2.6.27 (root@labC.switchteam.ccbu.quantatw) (gcc version 4.2.2) #128 Thu Sep 9 16:05:50 CST 2010
Found initrd at 0xdf308000:0xdfebd0e5
Found legacy serial port 0 for /soc8541@e0000000/serial@4500
  mem=e0004500, taddr=e0004500, irq=0, clk=330000000, speed=0
Found legacy serial port 1 for /soc8541@e0000000/serial@4600
  mem=e0004600, taddr=e0004600, irq=0, clk=330000000, speed=0
console [udbg0] enabled
setup_arch: bootmem
mpc85xx_cds_setup_arch()
Found FSL PCI host bridge at 0x00000000e0008000. Firmware bus number: 0->0
PCI host bridge /pci@e0008000 (primary) ranges:
 MEM 0x0000000080000000..0x000000009fffffff -> 0x0000000080000000 
  IO 0x00000000e2000000..0x00000000e20fffff -> 0x0000000000000000
arch: exit
Top of RAM: 0x20000000, Total RAM: 0x20000000
Memory hole size: 0MB
Zone PFN ranges:
  DMA      0x00000000 -> 0x00020000
  Normal   0x00020000 -> 0x00020000
  HighMem  0x00020000 -> 0x00020000
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
    0: 0x00000000 -> 0x00020000
On node 0 totalpages: 131072
free_area_init_node: node 0, pgdat c0370964, node_mem_map c03a4000
  DMA zone: 130048 pages, LIFO batch:31
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048
Kernel command line: root=/dev/ram console=ttyS0,115200
mpic: Setting up MPIC " OpenPIC  " version 1.2 at e0040000, max 1 CPUs
mpic: ISU size: 56, shift: 6, mask: 3f
mpic: Initializing for 56 sources
PID hash table entries: 2048 (order: 11, 8192 bytes)
time_init: decrementer frequency = 41.250000 MHz
time_init: processor frequency   = 825.000000 MHz
clocksource: timebase mult[60f83e1] shift[22] registered
clockevent: decrementer mult[a8f] shift[16] cpu[0]
Console: colour dummy device 80x25
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
High memory: 0k
Memory: 503808k/524288k available (3408k kernel code, 20264k reserved, 120k data, 156k bss, 156k init)
SLUB: Genslabs=12, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Calibrating delay loop... 82.43 BogoMIPS (lpj=164864)
Mount-cache hash table entries: 512
net_namespace: 288 bytes
NET: Registered protocol family 16
             
rstcr compatible register does not exist!
PCI: Probing PCI hardware
PCI: Scanning bus 0000:00
pci 0000:00:00.0: found [1057/000d] class 000b20 header type 00
PCI: 0000:00:00.0 reg 10 32bit mmio: [0, fffff]
PCI: 0000:00:00.0 reg 14 32bit mmio: [0, 7fffffff]
pci 0000:00:00.0: calling fixup_hide_host_resource_fsl+0x0/0x60
pci 0000:00:00.0: calling pcibios_fixup_resources+0x0/0xe8
pci 0000:00:12.0: found [14e4/b538] class 000280 header type 00
PCI: 0000:00:12.0 reg 10 32bit mmio: [80000000, 8000ffff]
pci 0000:00:12.0: calling pcibios_fixup_resources+0x0/0xe8
PCI: Fixups for bus 0000:00
PCI: Bus scan for 0000:00 returning with max=00
bus: 00 index 0 io port: [0, fffff]
bus: 00 index 1 mmio: [80000000, 9fffffff]
SCSI subsystem initialized
libata version 3.00 loaded.
NET: Registered protocol family 2
Switched to high resolution mode on CPU 0
IP route cache hash table entries: 16384 (order: 4, 65536 bytes)
TCP established hash table entries: 65536 (order: 7, 524288 bytes)
TCP bind hash table entries: 65536 (order: 6, 262144 bytes)
TCP: Hash tables configured (established 65536 bind 65536)
TCP reno registered
NET: Registered protocol family 1
checking if image is initramfs...it isn't (no cpio magic); looks like an initrd
Freeing initrd memory: 11988k freed
Could not find i8259 PIC
NTFS driver 2.1.29 [Flags: R/O].
msgmni has been set to 1007
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)
pci 0000:00:00.0: calling quirk_cardbus_legacy+0x0/0x50
pci 0000:00:00.0: calling quirk_usb_early_handoff+0x0/0x4d0
pci 0000:00:12.0: calling quirk_cardbus_legacy+0x0/0x50
pci 0000:00:12.0: calling quirk_usb_early_handoff+0x0/0x4d0
Generic non-volatile memory driver v1.1
Serial: 8250/16550 driver2 ports, IRQ sharing enabled
serial8250.0: ttyS0 at MMIO 0xe0004500 (irq = 42) is a 16550A
                                                             console handover: boot [udbg0] -> real [ttyS0]
serial8250.0: ttyS1 at MMIO 0xe0004600 (irq = 42) is a 16550A
brd: module loaded
loop: module loaded
Gianfar MII Bus: probed
eth0: Gianfar Ethernet Controller Version 1.2, 60:eb:69:c6:34:d3
eth0: Running with NAPI enabled
eth0: 256/256 RX/TX BD ring size
eth1: Gianfar Ethernet Controller Version 1.2, 60:eb:69:c6:34:d4
eth1: Running with NAPI enabled
eth1: 256/256 RX/TX BD ring size
tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
Uniform Multi-Platform E-IDE driver
IDE phys mem : f0000000...f001ffff (size 0001ffff)
IDE virt base: 0xe1040000
CSR virt base: 0xe1080000
port: 0xe1040002 => 0x00
port: 0xe1040007 => 0x00
port: 0xe104000b => 0x00
port: 0xe104000f => 0x00
port: 0xe1040013 => 0x00
port: 0xe1040017 => 0x00
port: 0xe104001b => 0xE0
port: 0xe104001f => 0x50
port: 0xe105001b => 0x50
port: 0xe1040000 => 0xFE
Probing IDE interface ide0...
hda: Hitachi XXM2.3.0, CFA DISK drive
ide0 at 0xe1040002-0xe104001f,0xe105001b on irq 17
hda: max request size: 128KiB
hda: 500400 sectors (256 MB) w/1KiB Cache, CHS=695/15/48
 hda: hda1
st: Version 20080504, fixed bufsize 32768, s/g segs 256
Driver 'st' needs updating - please use bus_type methods
Driver 'sd' needs updating - please use bus_type methods
Driver 'sr' needs updating - please use bus_type methods
TCP cubic registered
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RAMDISK: Compressed image found at block 0
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 156k init
EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended

CPU MMAP Driver (c) 2007 Quanta Computer Inc.
Registered with major 243

Flash Driver v0.10 (c) 2007 Quanta Computer Inc.
Registered with major 240
Flash Information :
  Device Id         : 0x00000022
  Device Flags      : 0x00000000
  Device Blocks     : 0x00000100
  Device Block Info : 0x00020000

I2C Device Drivers (c) 2007 Quanta Computer Inc.
Registered with major 242

PCI Driver v0.10 (c) 2007 Quanta Computer Inc.
Registered with major 244

WDT Driver v0.1 (c) 2008 Quanta Computer Inc.
Registered with major 245
linux_kernel_bde: module license 'Proprietary' taints kernel.




Broadcom Command Monitor: Copyright (c) 1998-2008 Broadcom Corporation
Release: sdk-xgs-robo-5.6.6 built 20100909 (Thu Sep  9 16:14:30 2010)
From root@labC.switchteam.ccbu.quantatw:/home/project/aries/LB9A_Linux_Diag_build_1.3_20100908/sdk-xgs-robo-5.6.6
Platform: LB9A_MPC8541
OS: Unix (Posix)
PCI unit 0: Dev 0xb538, Rev 0x11, Chip BCM56538_B0, Driver BCM56634_B0
SOC unit 0 attached to PCI device BCM56538_B0
Set Higig Interfaces (26,27,28,29) to 10GE
8706: u=0 p=26 external rom boot complete f/w ver. 0x402: init.
8706: u=0 p=27 external rom boot complete f/w ver. 0x402: init.
8706: u=0 p=28 external rom boot complete f/w ver. 0x402: init.
8706: u=0 p=29 external rom boot complete f/w ver. 0x402: init.
4 port BCM8727 SFP+ module is detected. ..(OK)
        Unit: 0, Port: 26, PHY: BCM8727 is working.
        Unit: 0, Port: 27, PHY: BCM8727 is working.
        Unit: 0, Port: 28, PHY: BCM8727 is working.
        Unit: 0, Port: 29, PHY: BCM8727 is working.





LB9A Topology is found
 

J Hart

Active Member
Apr 23, 2015
145
100
43
44
This drops you to a diagnostic window
Code:
     Diagnostic Test Main Menu v1.3 (LB9A - Linux)

[1  ]  File Management
[2  ]  Board Information
[3  ]  Diagnostic Test
[4  ]  Manufacturing Test Mode Set
[5  ]  Test Error Log File Management
[6  ]  PING
[7  ]  Reset
[8  ]  For Vibration Test

Enter your choice:


  Product Name          : LB9A
  Model Name            : QUANTA LB9A
  Part Number           : 1LB9BZZ0STA
  Serial Number         : QTFCA61380063
  Label Revision Number : 1
  Hardware Version      : 1.0
  Release Date          : 2011/2/1
  MAC Address           : 60:eb:69:c6:34:d2
  Checksum              : 0x8747cb05


EEPROM Data :
0xff 0x01 0xe0 0x01 0x04 0x4c 0x42 0x39 0x41 0x02 0x0b 0x31 0x4c 0x42 0x39 0x42
0x5a 0x5a 0x30 0x53 0x54 0x41 0x03 0x0d 0x51 0x54 0x46 0x43 0x41 0x36 0x31 0x33
0x38 0x30 0x30 0x36 0x33 0x04 0x06 0x60 0xeb 0x69 0xc6 0x34 0xd2 0x05 0x02 0x0b
0x06 0x06 0x04 0x00 0x00 0x00 0x01 0x07 0x01 0x01 0x00 0x02 0x0d 0x30 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00


  Product Name          : LB9A
  Part Number           : 1LB9BZZ0STA
  Serial Number         : QTFCA61380063
  MAC Address           : 60:eb:69:c6:34:d2
  Manufacture Date      : 2011 / 6
  Card Type             : 0x00000001
  Hardware Version      : 1


Press any key to continue.










     Board Information Menu

[1  ]  Configure Board Info
[2  ]  Display Board Info
[3  ]  Configure Daughter Board EEPROM Info
[4  ]  Dlsplay Daughter Board EEPROM Info
[ESC]  Exit

Enter your choice:










     Board Information Menu

[1  ]  Configure Board Info
[2  ]  Display Board Info
[3  ]  Configure Daughter Board EEPROM Info
[4  ]  Dlsplay Daughter Board EEPROM Info
[ESC]  Exit

Enter your choice:


  Product Name          : LB4G
  Part Number           : 36LB4DB0060
  Serial Number         : DOG1290094
  Date of Manufacture(year/week) : 11 / 32
  Hardware Version      : 3.0
  Card Type             : 0x000006
  Checksum              : 0xcc02
 

J Hart

Active Member
Apr 23, 2015
145
100
43
44
hitting Ctrl-D drops you out of the diagnostic menu and to a BCM prompt
Code:
BCM.0> 
BCM.0> ?
help: "??" or "help" for summary
Commands common to all modes:
?              ??             ASSert         BackGround     BCM            
BCMX           CASE           CD             cint           CONFig        
CONSole        CoPy           CPUDB          CTEcho         CTInstall      
CTSetup        DATE           DBDump         DBParse        DeBug          
DeBugMod       DELAY          DEVice         DIR            DISPatch      
Echo           EDline         EXIT           EXPR           FlashDownload  
FlashUpload    FOR            Help           HISTory        IF            
JOBS           KILL           LOCal          LOG            LOOP          
LS             MKDIR          MODE           MORe           MoVe          
NOEcho         Pause          PRINTENV       PWD            QUIT          
RCCache        RCLoad         REBOOT         REName         RESET          
RM             RMDIR          RPC            SAVE           SET            
SETENV         SHell          SLeep          TIME           Version        
Commands for current mode:
ADC            AGE            Attach         Auth           BaseBoard      
BIST           BPDU           BTiMeout       CABLEdiag      CACHE          
CellHDR        CHecK          CLEAR          CLOCKS         COLOR          
COMBO          COS            CounTeR        CustomSTAT     DAC            
DELete         DETach         DMA            DmaRomTest     DMIRror        
DSCP           DTAG           Dump           EditReg        EGRess        
EthernetAV     EXTernalTuning EXTernalTuning2EXTernalTuningSumFieldProcessor 
Getreg         GPORT          H2HIGIG        HASH           HClksel        
HeaderMode     I2C            INIT           Insert         INTR          
IPFIX          IPG            IPMC           L2             L2MODE        
L3             LCDMSG         LED            LINKscan       LISTmem        
Listreg        LOOKup         MCAST          MemSCAN        MemWatch      
MIM            MIRror         MODify         ModMap         Modreg        
MPLS           MTiMeout       MultiCast      MUXsel         NVram          
OAM            PacketWatcher  PBMP           PCIE           PHY            
POE            POESel         POP            PORT           PortRate      
PortSampRate   PortStat       PPDclk         PROBE          PUSH          
PUTREG         PVlan          RATE           RateBw         RegCMp        
REMove         RXCfg          RXInit         RXMon          SCHan          
SEArch         Setreg         SHOW           SOC            SRAM          
STACKMode      StackPortGet   StackPortSet   STG            STiMeout      
STKMode        StkTask        SwitchControl  SYnth          SystemSnake    
TCAM           TEMPerature    TestClear      TestList       TestMode      
TestParameters TestRun        TestSelect     TRUNK          TX            
TXCount        TXSTArt        TXSTOp         VLAN           WARMBOOT      
WLAN           Write          XAUI           XClocks        XPoe          
BCM.0>
 

J Hart

Active Member
Apr 23, 2015
145
100
43
44
And finally one more Ctrl-D drops you to a linux shell. From here I was able to set the ip address using ifconfig and transfer over the Indigo files using tftp. Package Manifest The CF-card is mounted at /cf-card

After that all I had to do was to reboot and get U-boot to boot that image. Using the Pica command as reference I was able to figure out how to load the kernel and initrd from the CF card. If you want to save the changes to U-boot you have to saveenv, To get it to boot up something by default you need to put the boot command into bootcmd

Interestingly the indigo download site also has the u-boot files for the LB4G switch along with the indigo images.
 

Rudy Yonkov

New Member
Feb 6, 2017
5
0
1
50
That's great, thanks for sharing. I have LB8 switch and would like to load Indigo on it as well. However on my switch the linux kernel on the flash does not recognize the sd card, so I can't use the sd card to boot from. So I used tftp to load directly to memory, however image does not boot ... pls see below

=> tftp 0x1000000 uImage
Speed: 1000, full duplex
Using eTSEC0 device
TFTP from server 192.168.1.1; our IP address is 192.168.1.2
Filename 'uImage'.
Load address: 0x1000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
###################
done
Bytes transferred = 1756599 (1acdb7 hex)
=> tftp 0x2000000 uInitrd2m
Speed: 1000, full duplex
Using eTSEC0 device
TFTP from server 192.168.1.1; our IP address is 192.168.1.2
Filename 'uInitrd2m'.
Load address: 0x2000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################
done
Bytes transferred = 10152636 (9aeabc hex)
=> tftp 0x4000000 lb8.dtb
Speed: 1000, full duplex
Using eTSEC0 device
TFTP from server 192.168.1.1; our IP address is 192.168.1.2
Filename 'lb8.dtb'.
Load address: 0x4000000
Loading: ##
done
Bytes transferred = 6081 (17c1 hex)
=> printenv
bootargs=root=/dev/ram rw mtdparts=physmap-flash.0:32256k(jffs2),512k(u-boot),128k@32512k(u-boot-env)
bootcmd=fsload 0x08000000 ${active} ; bootm 0x08000074 ; fsload 0x08000000 ${backup} ; bootm 0x08000074 ; fsload 0x08000000 image1 ; bootm 0x08000074 ; fsload 0x08000000 image2 ; bootm 0x08000074
bootdelay=3
loads_echo=1
hostname=lb8
loadaddr=0x08000000
mtdparts=mtdparts=physmap-flash.0:32256k(jffs2),512k(u-boot),128k@32512k(u-boot-env)
mtdids=nor0=physmap-flash.0
ethact=eTSEC0
backup=image1
active=image2
baudrate=9600
ethaddr=08:9E:01:91:F0:48
stdin=serial
stdout=serial
stderr=serial
partition=nor0,0
mtddevnum=0
mtddevname=jffs2
filesize=17C1
fileaddr=4000000
gatewayip=192.168.1.1
netmask=255.255.255.0
ipaddr=192.168.1.2
serverip=192.168.1.1

Environment size: 753/32764 bytes
=> bootm 1000000 2000000 4000000
## Booting kernel from Legacy Image at 01000000 ...
Image Name: Linux-2.6.27
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 1756535 Bytes = 1.7 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 02000000 ...
Image Name:
Image Type: PowerPC Linux RAMDisk Image (gzip compressed)
Data Size: 10152572 Bytes = 9.7 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
## Flattened Device Tree blob at 04000000
Booting using the fdt blob at 0x4000000
Uncompressing Kernel Image ... OK
Loading Ramdisk to 1f208000, end 1fbb6a7c ... OK
Loading Device Tree to 007fc000, end 007ffa53 ... OK

Nothing else shows up at this point, so I believe the image does not boot. Do you have any idea?
 

Rudy Yonkov

New Member
Feb 6, 2017
5
0
1
50
Here is what happens when I boot and if I interrupt the process.

U-Boot 2009.06 (Apr 19 2011 - 12:54:10)

CPU: 8548, Version: 2.1, (0x80310021)
Core: E500, Version: 2.2, (0x80210022)
Clock Configuration:
CPU0:999.990 MHz,
CCB:333.330 MHz,
DDR:166.665 MHz (333.330 MT/s data rate), LBC:20.833 MHz
L1: D-cache 32 kB enabled
I-cache 32 kB enabled
I2C: ready
DRAM: Initializing
DDR: 512 MB
FLASH: 32 MB
L2: 512 KB enabled
Service port MAC address: 08:9E:01:91:F0:48

PCIE connected to slot as Root Complex (base address e000a000)
Scanning PCI bus 01
PCIE on bus 0 - 1
In: serial
Out: serial
Err: serial
Net: eTSEC0: PHY is Broadcom BCM5461S (2060c1)
eTSEC0
Hit any key to stop autoboot: 0
=> printenv
bootargs=root=/dev/ram rw mtdparts=physmap-flash.0:32256k(jffs2),512k(u-boot),128k@32512k(u-boot-env)
bootcmd=fsload 0x08000000 ${active} ; bootm 0x08000074 ; fsload 0x08000000 ${backup} ; bootm 0x08000074 ; fsload 0x08000000 image1 ; bootm 0x08000074 ; fsload 0x08000000 image2 ; bootm 0x08000074
bootdelay=3
loads_echo=1
ipaddr=192.168.1.2
serverip=192.168.1.1
gatewayip=192.168.1.1
netmask=255.255.255.0
hostname=lb8
loadaddr=0x08000000
mtdparts=mtdparts=physmap-flash.0:32256k(jffs2),512k(u-boot),128k@32512k(u-boot-env)
mtdids=nor0=physmap-flash.0
ethact=eTSEC0
partition=nor0,0
mtddevnum=0
mtddevname=jffs2
backup=image1
active=image2
baudrate=9600
ethaddr=08:9E:01:91:F0:48
stdin=serial
stdout=serial
stderr=serial

Environment size: 722/32764 bytes
=>

[And here is the regular run where FastPath is started]

Hit any key to stop autoboot: 0
### JFFS2 loading 'image2' to 0x8000000
Scanning JFFS2 FS: . done.
### JFFS2 load complete: 8845883 bytes loaded to 0x8000000
## Booting kernel from Legacy Image at 08000074 ...
Image Name: FASTPATH System for qc8548
Image Type: PowerPC Linux Multi-File Image (gzip compressed)
Data Size: 8845703 Bytes = 8.4 MB
Load Address: 00000000
Entry Point: 00000000
Contents:
Image 0: 1153432 Bytes = 1.1 MB
Image 1: 1319902 Bytes = 1.3 MB
Image 2: 474 Bytes = 0.5 kB
Image 3: 6371871 Bytes = 6.1 MB
Verifying Checksum ... OK
## Loading init Ramdisk from multi component Legacy Image at 08000074 ...
Uncompressing Multi-File Image ... OK
Loading Ramdisk to 1fa75000, end 1fbb73de ... OK
Loading Device Tree to 007fc000, end 007ffa53 ... OK
Using Quanta LB8 machine description
Memory CAM mapping: CAM0=256Mb, CAM1=256Mb, CAM2=0Mb residual: 0Mb
Linux version 2.6.21.7 (gmirek@xl-rdub-04) (gcc version 4.1.2 (Wind River Linux Sourcery G++ 4.1-84)) #19 PREEMPT Mon Jul 11 15:29:07 EDT 2011
Found initrd at 0xdfa75000:0xdfbb73de
Found MPC85xx PCI host bridge at 0x00000000e000a000. Firmware bus number: 0->255
Zone PFN ranges:
DMA 0 -> 131072
Normal 131072 -> 131072
early_node_map[1] active PFN ranges
0: 0 -> 131072
Built 1 zonelists. Total pages: 130048
Kernel command line: root=/dev/ram rw mtdparts=physmap-flash.0:32256k(jffs2),512 k(u-boot),128k@32512k(u-boot-env)
mpic: Setting up MPIC " OpenPIC " version 1.2 at e0040000, max 1 CPUs
mpic: ISU size: 4, shift: 2, mask: 3
mpic: Initializing for 60 sources
PID hash table entries: 2048 (order: 11, 8192 bytes)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 515584k/524288k available (2304k kernel code, 8328k reserved, 76k data, 86k bss, 128k init)
Mount-cache hash table entries: 512
NET: Registered protocol family 16
PCI: Probing PCI hardware
PCI: 0000:00:00.0: class b20 doesn't match header type 01. Ignoring class.
PCI: Transparent bridge - 0000:00:00.0
Generic PHY: Registered new driver
NET: Registered protocol family 2
IP route cache hash table entries: 16384 (order: 4, 65536 bytes)
TCP established hash table entries: 65536 (order: 7, 524288 bytes)
TCP bind hash table entries: 65536 (order: 6, 262144 bytes)
TCP: Hash tables configured (established 65536 bind 65536)
TCP reno registered
checking if image is initramfs... it is
Freeing initrd memory: 1288k freed
JFFS2 version 2.2. (NAND) (C) 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler deadline registered (default)
Serial: 8250/16550 driver $Revision: 1.90 $ 2 ports, IRQ sharing enabled
serial8250.0: ttyS0 at MMIO map 0xe0004500 mem 0xe1000500 (irq = 26) is a 16550A
RAMDISK driver initialized: 2 RAM disks of 32768K size 1024 blocksize
Gianfar MII Bus: probed
eth0: Gianfar Ethernet Controller Version 1.2, 08:9e:01:91:f0:48
eth0: Running with NAPI enabled
eth0: 256/256 RX/TX BD ring size
Broadcom BCM5411: Registered new driver
Broadcom BCM5421: Registered new driver
Broadcom BCM5461: Registered new driver
Broadcom BCM5464: Registered new driver
Broadcom BCM5481: Registered new driver
Broadcom BCM5482: Registered new driver
Broadcom BCM50610: Registered new driver
Broadcom BCM57780: Registered new driver
tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
i2c /dev entries driver
physmap platform flash device: 02000000 at fe000000
physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
Amd/Fujitsu Extended Query Table at 0x0040
physmap-flash.0: CFI does not contain boot bank location. Assuming top.
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
3 cmdlinepart partitions found on MTD device physmap-flash.0
Creating 3 MTD partitions on "physmap-flash.0":
0x00000000-0x01f80000 : "jffs2"
0x01f80000-0x02000000 : "u-boot"
0x01fc0000-0x01fe0000 : "u-boot-env"
nf_conntrack version 0.5.0 (4096 buckets, 32768 max)
ip_tables: (C) 2000-2006 Netfilter Core Team
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 10
lo: Disabled Privacy Extensions
IPv6 over IPv4 tunneling driver
sit0: Disabled Privacy Extensions
NET: Registered protocol family 17
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
Freeing unused kernel memory: 128k init
Starting pid 616, console /dev/ttyS0: '/etc/rc.d/rc.fastpath'
Mounting /dev/mtdblock0 at /mnt/fastpath.
Mounting tmpfs at /mnt/application...done.

FASTPATH Startup Rev: 6.2

Select startup mode. If no selection is made within 5 seconds,
the FASTPATH Application will start automatically...

FASTPATH Startup -- Main Menu

1 - Start FASTPATH Application
2 - Display Utility Menu
Select (1, 2): ^[[12~
Extracting application from .stk file...done.
Loading system LED Heartbeat .....done
Loading FASTPATH.../mnt/application
done.
PCI unit 0: Dev 0xb843, Rev 0x05, Chip BCM56843_A3, Driver BCM56840_A0
SOC unit 0 attached to PCI device BCM56843_A3


<10> Jan 1 00:01:26 0.0.0.0-1 General[303030708]: bootos.c(307) 3 %% Event(0xaa aaaaaa) s tarted!

(Unit 1)>

Applying configuration, please wait ...

Applying Global configuration, please wait ...

Applying Interface configuration, please wait ...

User:admin
Password:



Jonathan, do you have an idea what I could try ? Thanks a lot!
 

J Hart

Active Member
Apr 23, 2015
145
100
43
44
Have you tried the stuff on these two pages? Reflashing a Pronto Switch - Indigo - Project Floodlight Reflash the 3290 from the Backup Image - Indigo - Project Floodlight I know it is for the 3290(aka LB9a), but the procedure should be similar. Be careful with reflashing Uboot. If that gets hosed you have to reprogram it via JTAG.

I never tried to boot it straight from ram like that before. Having a look at the commands, is it possible you need to modify that bootargs command. From the indigo docs that have this
bootcmd=setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate; bootm ffd00000 ff000000 to boot the indigo image which would replace the bootargs and get rid of the mtdparts. The mtdparts will be passed to the linux kernel and then maybe something is going wrong there(I'm thinking this is for setting up fastpath and linux doesn't really need it). You should switch the bootm piece for the ram locations you have chosen.
 

Rudy Yonkov

New Member
Feb 6, 2017
5
0
1
50
Thanks, I did try to load to the memory locations as you suggested to ffd00000 ff000000 ffee000000, however I am getting:
Wrong Image Format for bootm command
Error: Can't get kernel image

If I try 1000000 2000000 4000000 then process starts and it hangs after loading the device tree.

=> bootm 1000000 2000000 4000000
## Booting kernel from Legacy Image at 01000000 ...
Image Name: Linux-2.6.27
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 1756535 Bytes = 1.7 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 02000000 ...
Image Name:
Image Type: PowerPC Linux RAMDisk Image (gzip compressed)
Data Size: 10152572 Bytes = 9.7 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
## Flattened Device Tree blob at 04000000
Booting using the fdt blob at 0x4000000
Uncompressing Kernel Image ... OK
Loading Ramdisk to 1f208000, end 1fbb6a7c ... OK
Loading Device Tree to 007fc000, end 007ffa53 ... OK

I have tried older version of Indigo files uImage, uInitrd2m and LB8.tdb , however I am getting the same result, I have tried loading to
1000000, 2000000 and 8000000 since the current image loads at 8000000 however I am getting the same result (hanging after device tree).

Here are my env variables:

=> printenv
bootdelay=3
loads_echo=1
hostname=lb8
loadaddr=0x08000000
ethact=eTSEC0
mtddevname=jffs2
ethaddr=08:9E:01:B4:94:75
stdin=serial
stdout=serial
stderr=serial
filesize=17C1
fileaddr=8000000
gatewayip=192.168.1.1
netmask=255.255.255.0
ipaddr=192.168.1.2
serverip=192.168.1.1
baudrate=115200
bootargs=root=/dev/ram rw console=ttyS0,15200
bootcmd=bootm 1000000 2000000 8000000

I am not sure putting the files to flash would make any difference, theoretically it should be the same from where it gets loaded to RAM. I don't know if it would be worth replacing the uboot with a different version of uboot. Do you know if there is binary available anywhere, I only found the source code for u-boot?
 

J Hart

Active Member
Apr 23, 2015
145
100
43
44
Finally got a chance to play around with mine again to see what I could get it to do rather than just speculating.

So from U-boot I was able to boot an image over tftp. Here is how I did it.
Code:
tftp 0x10000000 uImage
tftp 0x2000000 uInitrd2m
tftp 0x4000000 LB9A.dtb
bootm 0x10000000 0x2000000 0x4000000
I was able to boot a pica8 XORPLUS image this way that I had on my tftp server. I did also experience what you saw with the lock up on load. I think in that case the problem is that I mistyped the bootm command as 0x20000000.

the output I get on boot is like this.

Code:
=> bootm 0x10000000 0x2000000 0x4000000
## Booting image at 10000000 ...
   Image Name:   Linux-2.6.27-svn3877
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:    1711826 Bytes =  1.6 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
## Loading RAMDisk Image at 02000000 ...
   Image Name:   svn3877
   Image Type:   PowerPC Linux RAMDisk Image (gzip compressed)
   Data Size:    20822821 Bytes = 19.9 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
   Booting using the fdt at 0x4000000
   Loading Ramdisk to 1eae1000, end 1febcb25 ... OK
   Loading Device Tree to 007fc000, end 007fd85f ... OK
Using MPC85xx CDS machine description
Memory CAM mapping: CAM0=256Mb, CAM1=256Mb, CAM2=0Mb residual: 0Mb
Linux version 2.6.27-svn3877 (root@dev-16) (gcc version 4.2.2) #1 Tue Sep 7 21:35:40 CST 2010
Found initrd at 0xdeae1000:0xdfebcb25
Found legacy serial port 0 for /soc8541@e0000000/serial@4500
  mem=e0004500, taddr=e0004500, irq=0, clk=330000000, speed=0
Found legacy serial port 1 for /soc8541@e0000000/serial@4600
  mem=e0004600, taddr=e0004600, irq=0, clk=330000000, speed=0
console [udbg0] enabled
setup_arch: bootmem
mpc85xx_cds_setup_arch()
Found FSL PCI host bridge at 0x00000000e0008000. Firmware bus number: 0->0
PCI host bridge /pci@e0008000 (primary) ranges:
The only thing I can think of is that maybe the baudrate is changing on you when the kernel boots. Mine is at 115200 8N1 in both uboot and when linux boots, but I noticed your environment variable has it as 9600 so maybe the baudrate is changing on boot or otherwise it isn't sending the console to the serial port?
 

Rudy Yonkov

New Member
Feb 6, 2017
5
0
1
50
I already thought of trying that, went and downloaded the pronto and picos archive files for the 3780 but in the boot folder I did not find uInitrd2m. So when I tried to load the kernel at 1000000 and device tree at 4000000 it complained that it can't find the ramdisk, which makes sense. Looking at the instructions it seems that they expected all the files to be extracted to the SD card (thus already having the ramdisk available) and then load the kernel and device tree. In my case I can't do that so I need uInitrd2m.
I went to the download section for your switch Index of /download/images/3290 and extracted both the latest pronto and picos archives. Same thing, in the boot folder is only the uImage and LB9A.dtb. So how did you get the uInitrd2m. Did you manually created it somehow? Please let me know.

My ultimate goal is simply to be able to change the speed on some ports to 1G from 10G, with my current firmware customized by Amazon that is not allowed, but looking at the manual of the switch (not sure what OS they refer in the manual), the switch can do that.
 
Feb 5, 2017
48
19
8
Myrtle Beach, SC
Reviving this thread...

I scored one of LB9A's off of ebay recently. I've been able to get Indigo and the original firmware loaded on it, but would really like to just get a web interface on the thing and not have to load an openflow controller. Basically, I really just want a stupid switch. It's been mentioned that there are several possibilities for firmware for this switch -- would anyone happen to know what they are?

Any help is appreciated!
 

shortman

New Member
Nov 17, 2018
8
1
3
I tried updating my T1048-LB9 to ONIE and now the switch fabric chip isn't initializing. Does anyone have the original firmware load for this switch? The ones available on the surface web don't seem to be of any help. I tried contacting Quanta and they will not sell a license for the new ONIE firmware because the switch was originally for Amazon (STQ). I wish I had made a backup of the firmware but hindsight is 20/20.
 
Feb 5, 2017
48
19
8
Myrtle Beach, SC
I tried updating my T1048-LB9 to ONIE and now the switch fabric chip isn't initializing. Does anyone have the original firmware load for this switch? The ones available on the surface web don't seem to be of any help. I tried contacting Quanta and they will not sell a license for the new ONIE firmware because the switch was originally for Amazon (STQ). I wish I had made a backup of the firmware but hindsight is 20/20.
I *think* I have what you need. PM sent.
 

Terry Wallace

PsyOps SysOp
Aug 13, 2018
197
118
43
Central Time Zone
I am in the exact same boat with my lb9. Upgraded and now it needs a license for the new qnos. And quanta won’t sell me one because it originally was sold to cumulus.

If you get a firmware that works would you let me know ? Thanks

FYI my onie loader works fine I just need an older version of a plain os for the switch that doesn’t require the qnos license file to work. :(
 
Last edited:

shortman

New Member
Nov 17, 2018
8
1
3
I'm still looking for an older complete version for the LB9 (3295) not the LB9A(3290) which I can tell you is different. Problems with Enet on 8541 cpu and I2C bus at least.

Currently, I have torn apart all the binary files that I can find online. I have started piecing different parts to try to get back to a working system. I found a LB9A full 32MB flash dump online which got me back to booting and the switch fabric seems to initialize. That image isn't close to the full answer because the 8541 processor has no comms to Enet or I2C (fan controllers don't work and SFP modules can not be detected).

So, I added the ONIE u-boot from 18.09L version but with the u-boot env left from the old style firmware. Now I have no problems with u-boot and I can still boot the LB9A kernel, initrd, and software package but it is still unusable overall. I feel some progress but I think I have to dig into kernel images and initrds to figure out how I can piece the next layer together. I have kernel 2.6.34.6 in the 18.09L image which is weird because the LB9A full flash booting QNOS2 is 2.6.35? I can not find a full flash of QNOS2 for the LB9 anywhere.

Again, if anyone has a QNOS2 version of firmware from Quanta please contact me. I will end up wasting countless hours on this ~$90 switch just because I am stubborn. I have ordered the 1GB ram module and I am considering a larger Compact flash so I can build a full development filesystem for the remainder of work left.