• We have to go back to go forwards

    Connor Huffine06/03/2020 at 18:43 0 comments

    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.

  • Digging Deeper

    Connor Huffine06/02/2020 at 17:00 0 comments

    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 »

  • Software

    Connor Huffine05/31/2020 at 23:05 0 comments

    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)

  • Fan replacement

    Connor Huffine05/31/2020 at 23:03 0 comments

    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.