Brocade 300 firmware

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

Renat

Active Member
Jun 8, 2016
108
37
28
43
Yes, of couse.

1. connect CF-card to linux
check dmesg to find out name of device (sdb or sdc generally).

2. run debugfs
"open /dev/sdb1"
"stat /boot/zImage.tree.initrd.map"
save value near "Blocks" (M1)
"close"
"open /dev/sdb2"
"stat /boot/zImage.tree.initrd.map"
save value near "Blocks" (M2)
"close"

quit

3. run "fdisk -lu"
save begins of sdb1 and sdb2 (S1, S2) (for sdb1 it will be 63)

4. calculate
M1*8+S1 = O1 (decimal) - > convert to Hex
M2*8+S2 = O2 (decimal) -> convert to Hex

5. run switch, esc autoboot, 3--bootrom
printenv

Now find OSLoader var, smth like "ATA()0x9003f;ATA()0x19ae58"

6. replace to calculated O1, O2 in hex

setenv OSLoader "ATA()0xO1;ATA()0xO2"

saveenv

reboot
 
Last edited:
  • Like
Reactions: fohdeesha and Marc_

adamvh

New Member
Sep 4, 2011
7
0
1
Brisbane
I downloaded same fabos awhile ago while switched still under support and now can't install them.
Upgrade some 300's running 7.4.2e to 7.4.2h

"firmwaredownload" is now disabled.
This product has passed its End of Support date and functionality has been restricted.
Please contact your Service Provider for further assistance.
 

Renat

Active Member
Jun 8, 2016
108
37
28
43
which one shows it? if 7.4.2h then you got a normal answer - product is EOS and no other public update.
Brocade has LW (long way) support versions for some models; plus, as I remember, even v7 FOS got TruFos support. and you won`t update without active support contract.

You can download any dd-image from other version working switches or even make a clean install from usb-flash.
 

adamvh

New Member
Sep 4, 2011
7
0
1
Brisbane
I thought I would be clever and mount the install image via nfs and run the script manually.
But it broke it opps!

sanswitch1:root> ./install SWBD71 release
INSTALL26: Installing Linux 2.6 ...
bootenv: Could not get requested variable serverip.
Firmware Install on /dev/hda
INSTALL26: INSTALL26ING for platform: SWBD71 revision: 2 package release
INSTALL26: Partitioning drive...
INSTALL26: Drive Size: BLOCKS=1893024 HALFMB=462 ENDMB=924
INSTALL26: Partition setup for /dev/hda ...
INSTALL26: Partition 1: 0 - 462
INSTALL26: Partition 2: 462 - 924
INSTALL26: Partition 3: 924 - 924
Disk geometry for /dev/hda: 0.000-924.328 megabytes
Disk label type: msdos
Minor Start End Type Filesystem Flags
1 0.031 462.164 primary ext3
2 462.164 923.835 primary ext3
INSTALL26: Creating ext3 file system on /dev/hda...
INSTALL26: /dev/hda3 not found, creating the file
mknod: invalid mode
INSTALL26: Warning - failed mknod -mode=666 /dev/hda3 b 8 3
mke2fs 1.38 (30-Jun-2005)
/dev/hda1 is mounted; will not make a filesystem here!
INSTALL26: Warning - failed mke2fs -g32768 -b4096 -j /dev/hda1
tune2fs 1.38 (30-Jun-2005)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds
mke2fs 1.38 (30-Jun-2005)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
118272 inodes, 118188 blocks
5909 blocks (5.00%) reserved for the super user
First data block=0
4 block groups
32768 blocks per group, 32768 fragments per group
29568 inodes per group
Superblock backups stored on blocks:
32768, 98304

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
tune2fs 1.38 (30-Jun-2005)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds
INSTALL26: Skipping the memory tests
INSTALL26: Mounting Primary FileSystem(/dev/hda1) on /mnt...
cp: `/lib/libtermcap.so.1.3' and `/mnt/lib/libtermcap.so.1.3' are the same file
INSTALL26: Warning - failed cp /lib/libtermcap.so.1.3 /mnt/lib
mkdir: cannot make directory `/mnt/SWBD71': File exists
INSTALL26: Installing RPMs from SWBD71/release.plist rooted at /mnt...
INSTALL26: Installing RPMs using rpm --root /mnt ...

cp: error while loading shared libraries: libc.so.6: cannot handle TLS data
cp: error while loading shared libraries: libc.so.6: cannot handle TLS data
/usr/sbin/chroot: error while loading shared libraries: libc.so.6: cannot handle TLS data
/usr/sbin/chroot: error while loading shared libraries: libc.so.6: cannot handle TLS data
 

Renat

Active Member
Jun 8, 2016
108
37
28
43
I never did it cause for me easily to make clone of image (have for 8g/16/g32g).

But you need read install script (usbboot label). It`s not so hard... similar to vdx series flash reinstall (netinstall)

And of course you need Boot switch with some kernel from firmware and only after make install process. (maybe only set envs USBBOOT=1 ATABOOT=0)

smth like:
--extract boot,kernel files to /BOOT/ folder on flash
--(set bootvar args: ipaddr serverip (this is your tftp server) gatewayip netmask)
--and by script: setup other args...
 

adamvh

New Member
Sep 4, 2011
7
0
1
Brisbane
I extracted zImage from kernel-2.6.14.2-760722855.ppc.rpm
and tried to tftpboot to that but but without luck.
Is it possible for you to share a Brocade 300 CF DD image and I just re-write the Card.
or if you have a DD image of a USB recovery that might work?

Boot PROM password has not been set.
=> tftpboot 0x300000 zImage
Waiting for PHY auto negotiation to complete. done
ENET Speed is 100 Mbps - FULL duplex connection (EMAC0)
ppc_4xx_eth0 initialized
Using ppc_4xx_eth0 device
TFTP from server 192.168.40.29; our IP address is 192.168.45.29
Filename 'zImage'.
Load address: 0x300000
Loading: T T T #################################################################
#################################################################
#################################################################
#################################################################
##############################################T T T ###################
###############################T T T ##################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
##############################################################
done
Bytes transferred = 4306523 (41b65b hex)
=> boot
Map file at LBA sector 0x18f378
do_bootm 171: load_addr 0x00300000 addr 0x00400000
do_bootm 174: ## Booting image at 00400000 load_addr 0x00300000 ...
Image Name: Linux-2.6.14.2
Image Type: PowerPC Linux Multi-File Image (uncompressed)
Data Size: 4306459 Bytes = 4.1 MB
Load Address: 00000000
Entry Point: 00000000
Contents:
Image 0: 3227782 Bytes = 3.1 MB
Image 1: 1078663 Bytes = 1 MB
do_bootm_linux 565: ## Current stack ends at 0x1FAE4A30 => set upper limit to 0x00C00000
## initrd at 0x007140D4 ... 0x0081B65A (len=1078663=0x107587)
Loading Ramdisk to 1f9dc000, end 1fae3587 ... OK
initrd_start = 1f9dc000, initrd_end = 1fae3587
## Transferring control to Linux (at address 00000000) ...
Start Autoneg
Installing Linux 2.6 Kernel
Attempting to find a root file system on hda1...
/sbin/initKernel panic - not syncing: Attempted to kill init!
: error while lo ading shared libraries: libc.so.6: cannot handle TLS data
 

Renat

Active Member
Jun 8, 2016
108
37
28
43
tftpboot only boot kernel to memory.
But your ata disk (hda) should has normal linux root-system.
actually this is all files (but for current swbd) extracted to root folder on 2 partitions.

(in case usb don`t know file systems).

you can use this document (PDF) on github project


you can write pm for dd-image: to copy on CF-card! not usb.
and how to calculate boot-address, described above.
 
  • Like
Reactions: adamvh

adamvh

New Member
Sep 4, 2011
7
0
1
Brisbane
Thanks for sharing the Git project it's almost worked but I now too have the Magic problem due to a bad checksum calc.

I have looked at your instructions to calc the checksum, I am just not sure what value you are refering too.
4. calculate
M1*8+S1 = O1 (decimal) - > convert to Hex
M2*8+S2 = O2 (decimal) -> convert to Hex

sum="0x"`xxd -g 4 bindata.bin | awk '{$2=strtonum("0x" $2);$3=strtonum("0x" $3);$4=strtonum("0x" $4);$5=strtonum("0x" $5);sum=sum+$2+$3+$4+$5} END {printf("sum: %08x\n",and(-(sum),0xffffffff))}' | awk '{$2=strtonum("0x" $2);$3=strtonum("0x" $3);$4=strtonum("0x" $4);$5=strtonum("0x" $5);sum=sum+$2+$3+$4+$5} END {printf("%08x\n",sum)}'`

I tried to debug the script of why the awk is failing but it just returns the following error.
awk: cmd. line:1: (FILENAME=- FNR=64) fatal: and: argument 1 negative value -3.13343e+09 is not allowed
Perhaps one for fohdeesha =)


Code:
Inode: 135   Type: regular    Mode:  0644   Flags: 0x0
Generation: 1873499222    Version: 0x00000001
User:     0   Group:     0   Size: 0
File ACL: 0
Links: 1   Blockcount: 0
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x66fff3e7 -- Fri Oct  4 13:55:51 2024
atime: 0x5c81caeb -- Fri Mar  8 01:52:43 2019
mtime: 0x66fff3e7 -- Fri Oct  4 13:55:51 2024
BLOCKS:

Inode: 32958   Type: regular    Mode:  0644   Flags: 0x0
Generation: 503404419    Version: 0x00000001
User:     0   Group:     0   Size: 0
File ACL: 0
Links: 1   Blockcount: 0
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x66fff3eb -- Fri Oct  4 13:55:55 2024
atime: 0x66fff107 -- Fri Oct  4 13:43:35 2024
mtime: 0x66fff3eb -- Fri Oct  4 13:55:55 2024
BLOCKS:
-------
Disk /dev/sde: 924.33 MiB, 969228288 bytes, 1893024 sectors
Disk model: CF SDDR-289
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x20202020

Device     Boot  Start     End Sectors   Size Id Type
/dev/sde1           63  946511  946449 462.1M 83 Linux
/dev/sde2       946512 1892015  945504 461.7M 83 Linux
 

Renat

Active Member
Jun 8, 2016
108
37
28
43
S1 and S2 is 63 and 946512

but debugfs has different view.

this is how on usb-card reader shows cf-card

debugfs: stat /boot/System.map
Inode: 35597 Type: regular Mode: 0644 Flags: 0x0
Generation: 3152623388 Version: 0x00000000
User: 0 Group: 3 Size: 550808
File ACL: 0
Links: 1 Blockcount: 1088
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x552e513d -- Wed Apr 15 14:53:33 2015
atime: 0x552e513d -- Wed Apr 15 14:53:33 2015
mtime: 0x552e513d -- Wed Apr 15 14:53:33 2015
BLOCKS:
(0):59395, (1):59849, (2-11):60000-60009, (IND):60010, (12-96):60011-60095, (97-134):60112-60149
TOTAL: 136

So here we take 59395.

But this is how looks like on local ssd

debugfs: stat xorg.conf.new
Inode: 15 Type: regular Mode: 0644 Flags: 0x80000
Generation: 1840463738 Version: 0x00000000:00000001
User: 0 Group: 0 Project: 0 Size: 1897
File ACL: 0
Links: 1 Blockcount: 8
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x5d57d176:0abbdda8 -- Sat Aug 17 13:05:42 2019
atime: 0x5ef84bbc:877262c0 -- Sun Jun 28 10:50:20 2020
mtime: 0x5d57cf4e:00000000 -- Sat Aug 17 12:56:30 2019
crtime: 0x5d57d176:0abbdda8 -- Sat Aug 17 13:05:42 2019
Size of extra inode fields: 32
EXTENTS:
(0):33855

And not sure if Extents===Blocks
 

broctst

New Member
Mar 17, 2025
1
3
3
"This product has passed its End of Support date and functionality ..." is been displayed if you upgrade your fabos after end of support is reached.

But there are few steps to get rid off this and get a full working switch (in my case a Brocade 300/Fabos v7.4.2j1):

1. switch to single user mode:

The system is coming up, please wait...

U-Boot 1.1.3 (Oct 17 2022 - 21:04:03), Build: jenkins-bsnfos-cce-v7.4.2jx_cce-3
...
Hit ESC to stop autoboot: 0

1) Start system.
2) Recover password.
3) Enter command shell.

Option? 3

Boot PROM password has not been set.

=> setenv OSLoadOptions "init=/bin/sh"
=> boot
...
At the end "sh-2.04#" comes up

sh-2.04#
sh-2.04# mount -o remount,rw,noatime /
sh-2.04# mount /dev/hda2 /mnt
sh-2.04# cd /var/config
sh-2.04# cp ttl ttl.orig
sh-2.04# od ttl
xxxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx
xxxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx
xxxxxxx xxxxxx xxxxxx 000000 000001 000000 000001 xxxxxx xxxxxx
xxxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx
xxxxxxx
sh-2.04# printf '\x00' | dd of=ttl bs=1 seek=43 count=1 conv=notrunc
sh-2.04# od ttl
xxxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx
xxxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx
xxxxxxx xxxxxx xxxxxx 000000 000001 000000 000000 xxxxxx xxxxxx
xxxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx
xxxxxxx
sh-2.04# cp /var/config/ttl /mnt/var/config/
sh-2.04# /sbin/passwddefault
sh-2.04# reboot -f

After the reboot has finished no "This product has passed its End of Support date and functionality ..." comes up.

A command "eos_check" finishes without a message.

Let me know if this procedure works on other switches, too.
 

Renat

Active Member
Jun 8, 2016
108
37
28
43
not work for 16G cause each boot time it reset bit and rewrite ttl,ttlV2 (8.2.3d)

better to set eeos license.. but probably mostly jumped to 32G and there is no members of forum with eeos and fabric os Upgrade switches.

need to change date and disable NTP
under "single" boot (or /init/sh) change date with hwclock command (nod early March 2017).
 
Last edited:
  • Like
Reactions: Didrik

ZFSZealot

Member
Aug 16, 2021
33
8
8
"This product has passed its End of Support date and functionality ..." is been displayed if you upgrade your fabos after end of support is reached.

But there are few steps to get rid off this and get a full working switch (in my case a Brocade 300/Fabos v7.4.2j1):

1. switch to single user mode:

The system is coming up, please wait...

U-Boot 1.1.3 (Oct 17 2022 - 21:04:03), Build: jenkins-bsnfos-cce-v7.4.2jx_cce-3
...
Hit ESC to stop autoboot: 0

1) Start system.
2) Recover password.
3) Enter command shell.

Option? 3

Boot PROM password has not been set.

=> setenv OSLoadOptions "init=/bin/sh"
=> boot
...
At the end "sh-2.04#" comes up

sh-2.04#
sh-2.04# mount -o remount,rw,noatime /
sh-2.04# mount /dev/hda2 /mnt
sh-2.04# cd /var/config
sh-2.04# cp ttl ttl.orig
sh-2.04# od ttl
xxxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx
xxxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx
xxxxxxx xxxxxx xxxxxx 000000 000001 000000 000001 xxxxxx xxxxxx
xxxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx
xxxxxxx
sh-2.04# printf '\x00' | dd of=ttl bs=1 seek=43 count=1 conv=notrunc
sh-2.04# od ttl
xxxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx
xxxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx
xxxxxxx xxxxxx xxxxxx 000000 000001 000000 000000 xxxxxx xxxxxx
xxxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx
xxxxxxx
sh-2.04# cp /var/config/ttl /mnt/var/config/
sh-2.04# /sbin/passwddefault
sh-2.04# reboot -f

After the reboot has finished no "This product has passed its End of Support date and functionality ..." comes up.

A command "eos_check" finishes without a message.

Let me know if this procedure works on other switches, too.
Many thanks. Confirming it works beautifully on the 6510. Was getting this and it wouldn't let me remove the previous owner's syslog servers. "syslogadmin --remove <IP ADDRESS>" gave the "This product has passed its End of Support date" message and then "RBAC permission denied". Poking that one zeroed byte into the "ttl" file fixed the problem.
 

ZFSZealot

Member
Aug 16, 2021
33
8
8
I don't suppose there's any chance anyone has v8.2.3c1_G5_MID.zip or v8.2.3c1_G5_MID.tar.gz? The 6510 switches I bought already have 8.2.3c1 but one of the two partitions one one of the switches seems corrupted and rather than try to figure out what exactly needs to be copied over from the good switch I'd rather just firmwarecleaninstall it. Right now it's saying it can't load a couple of modules and then it never comes up all the way with a full command set.

Or better yet v8.2.3d1_G5_MID.zip - I think after that they started needing some kind of enablement to get it to install. But I know v8.2.3e2 is there current end of the line for the Gen 5 stuff, so 8.2.3c1 is good enough.

I'd like to keep one and sell one but don't really want to do that until I know I have two of them that are 100%.
 

Renat

Active Member
Jun 8, 2016
108
37
28
43
everyone have 8.2.3c1 and 8.2.3d (not d1), even google.
ps without full copy you can just check md5sum for all files on both partitions (except /var)

but *e* only available with Certificate Upgrade License (lite version of TruFos for 32G).

*edited: resolveble for you if you can share 8.2.3e2 mid and entry
 
Last edited: