Breaking into and analyzing an old Quanta switch
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
memdump.binoctet-stream - 31.88 MB - 06/01/2020 at 01:45 |
|
I've flashed an older revision of the bootloader (u-boot 1.3.0 vs 2009.06) and the device tree seems more correct. I have the IDE subsystem available and the CF card is visible. There seems to be a bit of trouble with either the card or the connection: at startup, the card details are reported as gibberish and an "ide reset" is required to print the actual details. I also get repeated "No Powersaving mode 59" errors while using the card, and all writes to the card have apparently failed (one attempt even took the boot record with it). I have ordered a few older cards that may play nicer.
I also took a few pictures of the internals while placing/removing the CF card, replaced the CR2032 for good measure.
RAM is 512MB DDR 333 SODIMM CL2.5, I've ordered a 1GB stick because why not?
Nothing interesting under the SFP daughterboard.
Partly because I like the latest version of things and partly because I want more experience with it, I think I'm going to attempt to upgrade U-Boot on this box.
I extracted the dts from a dtb I found online, for the Pronto 3290 (a renamed version of the same hardware):
/dts-v1/;
/ {
model = "MPC8541CDS";
compatible = "MPC8541CDS\0MPC85xxCDS";
#address-cells = < 0x01 >;
#size-cells = < 0x01 >;
aliases {
ethernet0 = "/soc8541@e0000000/ethernet@24000";
ethernet1 = "/soc8541@e0000000/ethernet@25000";
serial0 = "/soc8541@e0000000/serial@4500";
serial1 = "/soc8541@e0000000/serial@4600";
pci0 = "/pci@e0008000";
};
cpus {
#address-cells = < 0x01 >;
#size-cells = < 0x00 >;
PowerPC,8541@0 {
device_type = "cpu";
reg = < 0x00 >;
d-cache-line-size = < 0x20 >;
i-cache-line-size = < 0x20 >;
d-cache-size = < 0x8000 >;
i-cache-size = < 0x8000 >;
timebase-frequency = < 0x00 >;
bus-frequency = < 0x00 >;
clock-frequency = < 0x00 >;
next-level-cache = < 0x01 >;
};
};
memory {
device_type = "memory";
reg = < 0x00 0x20000000 >;
};
soc8541@e0000000 {
#address-cells = < 0x01 >;
#size-cells = < 0x01 >;
device_type = "soc";
compatible = "simple-bus";
ranges = < 0x00 0xe0000000 0x100000 >;
reg = < 0xe0000000 0x1000 >;
bus-frequency = < 0x00 >;
memory-controller@2000 {
compatible = "fsl,8541-memory-controller";
reg = < 0x2000 0x1000 >;
interrupt-parent = < 0x02 >;
interrupts = < 0x12 0x02 >;
};
l2-cache-controller@20000 {
compatible = "fsl,8541-l2-cache-controller";
reg = < 0x20000 0x1000 >;
cache-line-size = < 0x20 >;
cache-size = < 0x40000 >;
interrupt-parent = < 0x02 >;
interrupts = < 0x10 0x02 >;
linux,phandle = < 0x01 >;
};
i2c@3000 {
#address-cells = < 0x01 >;
#size-cells = < 0x00 >;
cell-index = < 0x00 >;
compatible = "fsl-i2c";
reg = < 0x3000 0x100 >;
interrupts = < 0x2b 0x02 >;
interrupt-parent = < 0x02 >;
dfsrr;
};
dma@21300 {
#address-cells = < 0x01 >;
#size-cells = < 0x01 >;
compatible = "fsl,mpc8541-dma\0fsl,eloplus-dma";
reg = < 0x21300 0x04 >;
ranges = < 0x00 0x21100 0x200 >;
cell-index = < 0x00 >;
dma-channel@0 {
compatible = "fsl,mpc8541-dma-channel\0fsl,eloplus-dma-channel";
reg = < 0x00 0x80 >;
cell-index = < 0x00 >;
interrupt-parent = < 0x02 >;
interrupts = < 0x14 0x02 >;
};
dma-channel@80 {
compatible = "fsl,mpc8541-dma-channel\0fsl,eloplus-dma-channel";
reg = < 0x80 0x80 >;
cell-index = < 0x01 >;
interrupt-parent = < 0x02 >;
interrupts = < 0x15 0x02 >;
};
dma-channel@100 {
compatible = "fsl,mpc8541-dma-channel\0fsl,eloplus-dma-channel";
reg = < 0x100 0x80 >;
cell-index = < 0x02 >;
interrupt-parent = < 0x02 >;
interrupts = < 0x16 0x02 >;
};
dma-channel@180 {
compatible = "fsl,mpc8541-dma-channel\0fsl,eloplus-dma-channel";
reg = < 0x180 0x80 >;
cell-index = < 0x03 >;
interrupt-parent = < 0x02 >;
interrupts = < 0x17 0x02 >;
};
};
mdio@24520 {
#address-cells = < 0x01 >;
#size-cells = < 0x00 >;
compatible = "fsl,gianfar-mdio";
reg = < 0x24520 0x20 >;
ethernet-phy@0 {
reg = < 0x01 >;
device_type = "ethernet-phy";
linux,phandle = < 0x03 >;
};
ethernet-phy@1 {
reg = < 0x02 >;
device_type = "ethernet-phy";
linux,phandle = < 0x04 >;
};
};
ethernet@24000 {
cell-index = < 0x00 >;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
reg = < 0x24000 0x1000 >;
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = < 0x1d 0x02 0x1e 0x02 0x22 0x02 >;
interrupt-parent = < 0x02 >;
phy-handle = < 0x03 >;
};
ethernet@25000 {
cell-index = < 0x01 >;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
reg = < 0x25000 0x1000 >;
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = < 0x23 0x02 0x24 0x02 0x28 0x02 >;
interrupt-parent = < 0x02 >;
phy-handle = < 0x04 >;
};
serial@4500 {
cell-index = < 0x00 >;
device_type = "serial";
compatible = "ns16550";
reg = < 0x4500 0x100 >;
clock-frequency = < 0x00 >;
interrupts = < 0x2a 0x02 >;
interrupt-parent = < 0x02 >;
};
...
Read more »
Not much is available on the internet discussing the firmware provided by Quanta for this switch. It seems to be a little brother to the LB9 switch, and shares most functionality.
This particular switch was obtained secondhand from ebay for $130, so the history and prior configuration is unknown. The CF card was removed, so it is running only from the image(s) on the flash.
It boots into a functional FASTPATH environment, but the version doesn't seem to be quite right for the hardware, I get two errors on boot :
ifconfig: SIOCSIFFLAGS: No such device net eth0: could not attach to PHY
These refer to the management ports (a BCM5482, ETH1/ETH2 on front panel), which don't work with the linux image.
There's also some oddity about how the version of the software is numbered, 2.0.0.1 seems marvelously round to me.
(Switching) #show hardware Switch: 1 System Description............................. Quanta LB9A, 2.0.0.1, Linux 2.6.34.6, U-Boot 2009.06 (Apr 19 2011 - 15:59:24) Machine Type................................... Quanta LB9A Machine Model.................................. LB9A Serial Number.................................. QTFCA62220249 FRU Number..................................... 1LB9BZZ0STH Part Number.................................... BCM56538 Maintenance Level.............................. A Manufacturer................................... 0xbc00 Burned In MAC Address.......................... 04:7D:7B:B0:A8:8C Software Version............................... 2.0.0.1 Operating System............................... Linux 2.6.34.6 Network Processing Device...................... BCM56538_B0 Additional Packages............................ QOS IPv6 Management Data Center OpEN API Prototype Open API
The u-boot version is quite old, but using the md command I dumped the firmware to a serial log and used this utility to convert it to a straight hex dump. This should be in files (memdump.bin)
The first thing I noticed about this switch is that it is quite loud. Not unexpected for an old 1u rackmount switch.
Three AVC DV04028B12U fans pull air through the chassis. One provides straight flow, while two push air over the power supply.
I replaced these fans with Noctua A4x20 fans, which reduced chassis noise significantly.
Create an account to leave a comment. Already have an account? Log In.
Become a member to follow this project and never miss any updates
Hi! what NOS have you finally install on your switch?