Beware of EMC switches sold as Mellanox SX6XXX on eBay

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

Stephan

Well-Known Member
Apr 21, 2017
1,013
781
113
Germany

Rand__

Well-Known Member
Mar 6, 2014
6,643
1,778
113
My 6036 should be a Lenovo model iirc, so happy to extract what u need if you point me over to how.
 

Labs

Member
Mar 21, 2019
88
16
8
My 6036 should be a Lenovo model iirc, so happy to extract what u need if you point me over to how.
Stephan already posted the procedure to make a backup of the EEPROM on the previous page.

Code:
Read backplate_fru and cpu_fru EEPROMs:

/opt/tms/bin/mellaggra _read_fru 1 0x51 1000 fru_backplate.bin or
/opt/tms/bin/mellaggra _read_fru 8 0x51 1000 fru_backplate.bin
/opt/tms/bin/mellaggra _read_fru 0 0x50 1000 fru_cpu.bin

Copy them off to safety (TFTP server):

tftp 192.168.128.100 -m binary -c put fru_backplate.bin
tftp 192.168.128.100 -m binary -c put fru_cpu.bin
I also sent to Stephan and dodgy route the EEPROMs from an OEM 6036 but I am not sure how to modify the script. My programming skills are NULL. From what I saw looking at the OEM EEPROM and the IBM EEPROM it seems to be the part number that is modified but I cannot say 100% if this is all. SGS member which posted first scripts was not online since January 2021...
 

RedX1

Active Member
Aug 11, 2017
134
147
43
Hello Stephan,

Do you have a script to patch the EEPROM for the 6036? I have an IBM branded one and I would like to make it OEM.

Thanks!

Hello

If you have a real IBM SX6036, it should be already running MLNX-OS or (Possibly ONYX-OS).

The Web GUI may look something like this.
Capture 1.PNGCapture 1.PNG


You may also be interested in Appendix 3 of the v1.12 document in post #1,115 of this thread.

I hope this helps and have fun.


RedX1
 
  • Like
Reactions: flamozzle

klui

༺༻
Feb 3, 2019
919
526
93
The original and proper dumps are needed to know how best to convert one to the other. Since it's frowned upon to distribute the real file, the editing is done this way to avoid copyright infringement.

You can use the man page of dd to get an understanding of what the if, of (input, output file), count (copy how many input blocks), conv (notrunc--do not truncate file), skip (skip # blocks from input file), seek (skip # blocks from output file) mean. The UNIX utility hexdump can be used to inspect the output file for every command to get a clear understanding of what it does.

$1 is the input file. $2 is the output, patched file.

Use the following simpler files to see what the commands are doing:
Code:
dd if=/dev/zero bs=16 count=256 of=ddout
tr '\000' '\377' <ddout >ddin
ddin will have all FFs; ddout will have all 00s
Code:
~
bash> hexdump -C ddin
00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00001000
~
bash> hexdump -C ddout
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
Every time the dd command is run the program starts from the beginning of $1 and does something to $2 or if there is no $1, it takes input from the printf command, which prints out a bunch of hexadecimal values through the \x format string.

The first command creates a hex-zeroed 4K file from /dev/zero (read from /dev/zero and write 16 bytes each time, 256 times)

Then it reads and writes the first 192 bytes (16 bytes 12 times) from $1 to $2. Notice that hexdump appears to only show the first 16 bytes changed but the * that follows means the pattern is repeated until 000000bf and at 000000c0 the pattern changes to all 00s until the end of the file at 00001000. Use some method to convert hexadecimal to decimal.
Code:
~
bash> dd if=ddin bs=16 count=12 of=ddout conv=notrunc
12+0 records in
12+0 records out
192 bytes copied, 0.0058357 s, 32.9 kB/s
~
bash> hexdump -C ddout
00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000
Read and write 16 bytes 5 times (80 bytes) from $1 to $2, but get the values starting at 000000c0 (16 * 12 [skip]) from the input file and place in the output file starting at 000000e0 (16 * 14 [seek] = 224 = 0xe0). Here I've created a file with all 03s as input for some clarity.
Code:
~
bash> dd if=dd003 bs=16 count=5 of=ddout skip=12 seek=14 conv=notrunc
5+0 records in
5+0 records out
80 bytes copied, 0.0058606 s, 13.7 kB/s
~
bash> hexdump -C ddout
00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000000e0 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 |................|
*
00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000
The rest just replaces bytes in output file using printf statements at the corresponding locations. I've replaced some values so it is easier to identify.
Code:
~
bash> printf "\x20" | dd of=ddout bs=1 seek=1 count=1 conv=notrunc
1+0 records in
1+0 records out
1 byte copied, 0.0003106 s, 3.2 kB/s
~
bash> hexdump -C ddout
00000000 ff 20 ff ff ff ff ff ff ff ff ff ff ff ff ff ff |. ..............|
00000010 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000000e0 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 |................|
*
00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000
~
bash> printf "\x21" | dd of=ddout bs=1 seek=5 count=1 conv=notrunc
1+0 records in
1+0 records out
1 byte copied, 0.0003142 s, 3.2 kB/s
~
bash> hexdump -C ddout
00000000 ff 20 ff ff ff 21 ff ff ff ff ff ff ff ff ff ff |. ...!..........|
00000010 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000000e0 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 |................|
*
00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000
~
bash> printf "\x05\x0E\x02\x14\x06\x16\x07" | dd of=ddout bs=1 seek=15 count=7 conv=notrunc
7+0 records in
7+0 records out
7 bytes copied, 0.0004122 s, 17.0 kB/s
~
bash> hexdump -C ddout
00000000 ff 20 ff ff ff 21 ff ff ff ff ff ff ff ff ff 05 |. ...!..........|
00000010 0e 02 14 06 16 07 ff ff ff ff ff ff ff ff ff ff |................|
00000020 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000000e0 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 |................|
*
00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000
~
bash> printf "\xFE\x1A\x00\x03\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFE" | dd of=ddout bs=1 seek=192 count=32 conv=notrunc
32+0 records in
32+0 records out
32 bytes copied, 0.0007791 s, 41.1 kB/s
~
bash> hexdump -C ddout
00000000 ff 20 ff ff ff 21 ff ff ff ff ff ff ff ff ff 05 |. ...!..........|
00000010 0e 02 14 06 16 07 ff ff ff ff ff ff ff ff ff ff |................|
00000020 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
000000c0 fe 1a 00 03 05 00 00 00 00 00 00 00 00 00 00 00 |................|
000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fe |................|
000000e0 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 |................|
*
00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000
~
bash> printf "\xFD\x12\x00\x01\x06\x00\x00\x00\x00\x01\x00\x00\x02\x88\x04\x04\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0A\x00\x01\x07\x00\x00\x00\x00\x02\x10\x00\x00\x00\x00\xFD" | dd of=ddout bs=1 seek=320 count=48 conv=notrunc
48+0 records in
48+0 records out
48 bytes copied, 0.0009937 s, 48.3 kB/s
~
bash> hexdump -C ddout
00000000 ff 20 ff ff ff 21 ff ff ff ff ff ff ff ff ff 05 |. ...!..........|
00000010 0e 02 14 06 16 07 ff ff ff ff ff ff ff ff ff ff |................|
00000020 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
000000c0 fe 1a 00 03 05 00 00 00 00 00 00 00 00 00 00 00 |................|
000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fe |................|
000000e0 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 |................|
*
00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000140 fd 12 00 01 06 00 00 00 00 01 00 00 02 88 04 04 |................|
00000150 02 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000160 00 0a 00 01 07 00 00 00 00 02 10 00 00 00 00 fd |................|
00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000
~
bash> printf "\x4D\x53\x58\x36\x30\x31\x32\x46\x2D\x32\x42\x46\x53\x00" | dd of=ddout bs=1 seek=64 count=14 conv=notrunc
14+0 records in
14+0 records out
14 bytes copied, 0.0005051 s, 27.7 kB/s
~
bash> hexdump -C ddout
00000000 ff 20 ff ff ff 21 ff ff ff ff ff ff ff ff ff 05 |. ...!..........|
00000010 0e 02 14 06 16 07 ff ff ff ff ff ff ff ff ff ff |................|
00000020 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00000040 4d 53 58 36 30 31 32 46 2d 32 42 46 53 00 ff ff |MSX6012F-2BFS...|
00000050 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
000000c0 fe 1a 00 03 05 00 00 00 00 00 00 00 00 00 00 00 |................|
000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fe |................|
000000e0 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 |................|
*
00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000140 fd 12 00 01 06 00 00 00 00 01 00 00 02 88 04 04 |................|
00000150 02 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000160 00 0a 00 01 07 00 00 00 00 02 10 00 00 00 00 fd |................|
00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000
 

Labs

Member
Mar 21, 2019
88
16
8
Hello

If you have a real IBM SX6036, it should be already running MLNX-OS or (Possibly ONYX-OS).

RedX1
It is already running MLNX-OS but I want it debranded. Appendix 3 is not related to my post and what I want to achieve.
 

Labs

Member
Mar 21, 2019
88
16
8
The original and proper dumps are needed to know how best to convert one to the other. Since it's frowned upon to distribute the real file, the editing is done this way to avoid copyright infringement.

You can use the man page of dd to get an understanding of what the if, of (input, output file), count (copy how many input blocks), conv (notrunc--do not truncate file), skip (skip # blocks from input file), seek (skip # blocks from output file) mean. The UNIX utility hexdump can be used to inspect the output file for every command to get a clear understanding of what it does.

$1 is the input file. $2 is the output, patched file.

Use the following simpler files to see what the commands are doing:
Code:
dd if=/dev/zero bs=16 count=256 of=ddout
tr '\000' '\377' <ddout >ddin
ddin will have all FFs; ddout will have all 00s
Code:
~
bash> hexdump -C ddin
00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00001000
~
bash> hexdump -C ddout
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
Every time the dd command is run the program starts from the beginning of $1 and does something to $2 or if there is no $1, it takes input from the printf command, which prints out a bunch of hexadecimal values through the \x format string.

The first command creates a hex-zeroed 4K file from /dev/zero (read from /dev/zero and write 16 bytes each time, 256 times)

Then it reads and writes the first 192 bytes (16 bytes 12 times) from $1 to $2. Notice that hexdump appears to only show the first 16 bytes changed but the * that follows means the pattern is repeated until 000000bf and at 000000c0 the pattern changes to all 00s until the end of the file at 00001000. Use some method to convert hexadecimal to decimal.
Code:
~
bash> dd if=ddin bs=16 count=12 of=ddout conv=notrunc
12+0 records in
12+0 records out
192 bytes copied, 0.0058357 s, 32.9 kB/s
~
bash> hexdump -C ddout
00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000
Read and write 16 bytes 5 times (80 bytes) from $1 to $2, but get the values starting at 000000c0 (16 * 12 [skip]) from the input file and place in the output file starting at 000000e0 (16 * 14 [seek] = 224 = 0xe0). Here I've created a file with all 03s as input for some clarity.
Code:
~
bash> dd if=dd003 bs=16 count=5 of=ddout skip=12 seek=14 conv=notrunc
5+0 records in
5+0 records out
80 bytes copied, 0.0058606 s, 13.7 kB/s
~
bash> hexdump -C ddout
00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000000e0 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 |................|
*
00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000
The rest just replaces bytes in output file using printf statements at the corresponding locations. I've replaced some values so it is easier to identify.
Code:
~
bash> printf "\x20" | dd of=ddout bs=1 seek=1 count=1 conv=notrunc
1+0 records in
1+0 records out
1 byte copied, 0.0003106 s, 3.2 kB/s
~
bash> hexdump -C ddout
00000000 ff 20 ff ff ff ff ff ff ff ff ff ff ff ff ff ff |. ..............|
00000010 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000000e0 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 |................|
*
00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000
~
bash> printf "\x21" | dd of=ddout bs=1 seek=5 count=1 conv=notrunc
1+0 records in
1+0 records out
1 byte copied, 0.0003142 s, 3.2 kB/s
~
bash> hexdump -C ddout
00000000 ff 20 ff ff ff 21 ff ff ff ff ff ff ff ff ff ff |. ...!..........|
00000010 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000000e0 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 |................|
*
00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000
~
bash> printf "\x05\x0E\x02\x14\x06\x16\x07" | dd of=ddout bs=1 seek=15 count=7 conv=notrunc
7+0 records in
7+0 records out
7 bytes copied, 0.0004122 s, 17.0 kB/s
~
bash> hexdump -C ddout
00000000 ff 20 ff ff ff 21 ff ff ff ff ff ff ff ff ff 05 |. ...!..........|
00000010 0e 02 14 06 16 07 ff ff ff ff ff ff ff ff ff ff |................|
00000020 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000000e0 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 |................|
*
00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000
~
bash> printf "\xFE\x1A\x00\x03\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFE" | dd of=ddout bs=1 seek=192 count=32 conv=notrunc
32+0 records in
32+0 records out
32 bytes copied, 0.0007791 s, 41.1 kB/s
~
bash> hexdump -C ddout
00000000 ff 20 ff ff ff 21 ff ff ff ff ff ff ff ff ff 05 |. ...!..........|
00000010 0e 02 14 06 16 07 ff ff ff ff ff ff ff ff ff ff |................|
00000020 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
000000c0 fe 1a 00 03 05 00 00 00 00 00 00 00 00 00 00 00 |................|
000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fe |................|
000000e0 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 |................|
*
00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000
~
bash> printf "\xFD\x12\x00\x01\x06\x00\x00\x00\x00\x01\x00\x00\x02\x88\x04\x04\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0A\x00\x01\x07\x00\x00\x00\x00\x02\x10\x00\x00\x00\x00\xFD" | dd of=ddout bs=1 seek=320 count=48 conv=notrunc
48+0 records in
48+0 records out
48 bytes copied, 0.0009937 s, 48.3 kB/s
~
bash> hexdump -C ddout
00000000 ff 20 ff ff ff 21 ff ff ff ff ff ff ff ff ff 05 |. ...!..........|
00000010 0e 02 14 06 16 07 ff ff ff ff ff ff ff ff ff ff |................|
00000020 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
000000c0 fe 1a 00 03 05 00 00 00 00 00 00 00 00 00 00 00 |................|
000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fe |................|
000000e0 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 |................|
*
00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000140 fd 12 00 01 06 00 00 00 00 01 00 00 02 88 04 04 |................|
00000150 02 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000160 00 0a 00 01 07 00 00 00 00 02 10 00 00 00 00 fd |................|
00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000
~
bash> printf "\x4D\x53\x58\x36\x30\x31\x32\x46\x2D\x32\x42\x46\x53\x00" | dd of=ddout bs=1 seek=64 count=14 conv=notrunc
14+0 records in
14+0 records out
14 bytes copied, 0.0005051 s, 27.7 kB/s
~
bash> hexdump -C ddout
00000000 ff 20 ff ff ff 21 ff ff ff ff ff ff ff ff ff 05 |. ...!..........|
00000010 0e 02 14 06 16 07 ff ff ff ff ff ff ff ff ff ff |................|
00000020 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00000040 4d 53 58 36 30 31 32 46 2d 32 42 46 53 00 ff ff |MSX6012F-2BFS...|
00000050 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
000000c0 fe 1a 00 03 05 00 00 00 00 00 00 00 00 00 00 00 |................|
000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fe |................|
000000e0 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 |................|
*
00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000140 fd 12 00 01 06 00 00 00 00 01 00 00 02 88 04 04 |................|
00000150 02 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000160 00 0a 00 01 07 00 00 00 00 02 10 00 00 00 00 fd |................|
00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000
Thanks Klui. I will try to figure it out. :)
 

jmsq

Member
Dec 30, 2019
33
29
18
For those still trying to get the stock fans to calm down, the method mentioned in the sx6036 thread also works with the sx6012 with some minor tweaks (from a fresh CLI login):

Code:
enable
conf t
sh fan
fae mlxi2c set_fan /MGMT/FAN1 1 28
sh fan
This avoids having to go through the trouble of modifying and replacing the tc binary. Granted this is only good for the current boot unless it's inserted into a startup script, but I expect to be rebooting the switch infrequently enough to just apply the tweak manually after boot.
 

Stephan

Well-Known Member
Apr 21, 2017
1,013
781
113
Germany
@jmsq This isn't permanent right? So modifying rc.local is still better.

On the issue of fan noise, I just got all the parts in. I'm designing a small circuit I am calling "SlowerFan" because I have the problem with slow fans (Noctua 80mm) being misdetected as being "broken" also with a Netapp DS4246 disk shelf [1]. The controller will multiply the incoming fan speed by a configurable factor. So 400 rpm of a 120mm fan might be put out x10 as 4000. Mellanox happy.

Parts are through-hole, because I am that guy. Yes I know about JLCPCB being dirt cheap. Call me old. Left as an exercise to the reader. Circuit is rather simple: 78L05 to step down 12V to 5V with two filter caps on input and output, µC is an ATtiny85a AVR running on internal clock, a BC547 npn transistor for the outgoing open collector circuit, two resistors, and an alarm/signal beeper. Worst parts to obtain were the angled 4-pin fan plugs/sockets/pins (top row in picture), since I want everything pluggable. I had to resort to Aliexpress and wait two weeks. Input/output RPM will ideally be in the range of 1 to 30.000 rpm. A bit tricky to get right. I'll write everything in C and put the project on Github.

For your amusement here are the parts for ten SlowerFans:
PXL_20220602_145738083.jpg

[1] Slight tangent: Original Netapp DS4246 SAS controllers, which everyone dislikes because of the QSFP to 8088 cable they require, have this ominous, undocumented "ACP" ethernet out-of-band connectivity. I inspected the PCB and extracted the firmware, turns out this is a PowerPC 403 with Linux, and... a populated 16-pin BDI 2000 JTAG connector right next to it. For which I already got all the hardware from rescuing SX6012s. Netapp later abandoned the concept and moved to inband SAS enclosure services. Will see if I can do anything useful with this interface.
 
  • Like
Reactions: gb00s and tinfoil3d

Cutha

Member
Sep 24, 2016
75
7
8
50
Canada
I followed the guide by dodgy route to convert my EMC switch to an SX6018 and all seems to be good except that the web interface is terribly slow. The CPU usage is between 40% and 100% with nothing going on. I saw the below comments and when I tried the "mlxi2c update_bootstrap166" command I got:
Code:
% Unrecognized command "mlxi2c".
Which is the same response I get when trying the following even though it worked fine in the upgrade process:
Code:
mlxi2c show fru /CPU
I'm pretty sure I'm missing something simple but for the life of me I can't figure it out.

Use "imd 0x50 0 0x100 0 0x100 2 0 0x100" command from the bootloader.

The output of the command should begin with an:
" 86 82 96 1a d9 80 0 e0 c0 8 23 50 d 5 0 0" for the 166 MHz mem speed
or with " 86 82 96 19 b9 80 0 e0 c0 8 23 50 d 5 0 0 " for the 200 MHz mem speed (can be overclocked!)
or just update bootstrap using "mlxi2c update_bootstrap166" or "mlxi2c update_bootstrap200" command from the shell.
 

sbonikowske

New Member
Aug 1, 2022
6
0
1
I have a 6036 (from mellanox I believe) and I am trying to set the fan speeds. I can get PS1 to set, but the fans won't set.

I am running 3.6.8012 and have used the fae commands.

(config) # fae mlxi2c set_fan /FAN1/FAN 1 30
Aug 17 20:47:54 INFO LOG: Initializing SX log with STDOUT as output file.
-E- mlxi2c: Failed to locate device /FAN1/FAN : MLXI2C_NOT_EXIST_DEV (19)

and I have tried the commands from inside bash:
~]#
7 set_max uint8 50_module string "/MGMT/FAN4" fan_number int8 1 fan_speed int8 2
Return code: 1
Return message: Action failed

the command gets a little garbled with copy and past. This is the command I am trying:
/opt/tms/bin/mdreq action /system/chassis/actions/set-fan-speed fan_module string "/MGMT/FAN1" fan_number int8 1 fan_speed int8 27 set_max uint8 50

Any ideas what I am doing wrong, or how I can find the correct devices?

Thanks!
 

andvalb

Member
Feb 15, 2021
27
25
13
Ulyanovsk, Russian Federation
I have a 6036 (from mellanox I believe) and I am trying to set the fan speeds. I can get PS1 to set, but the fans won't set.

I am running 3.6.8012 and have used the fae commands.

(config) # fae mlxi2c set_fan /FAN1/FAN 1 30
Aug 17 20:47:54 INFO LOG: Initializing SX log with STDOUT as output file.
-E- mlxi2c: Failed to locate device /FAN1/FAN : MLXI2C_NOT_EXIST_DEV (19)

and I have tried the commands from inside bash:
~]#
7 set_max uint8 50_module string "/MGMT/FAN4" fan_number int8 1 fan_speed int8 2
Return code: 1
Return message: Action failed

the command gets a little garbled with copy and past. This is the command I am trying:
/opt/tms/bin/mdreq action /system/chassis/actions/set-fan-speed fan_module string "/MGMT/FAN1" fan_number int8 1 fan_speed int8 27 set_max uint8 50

Any ideas what I am doing wrong, or how I can find the correct devices?

Thanks!
mlxi2c show devs - this command shows available devices
On the sx6012 this is this list:
/MAIN_SW
/SX
/CPLD_TOR
/QSFP_TEMP1
/QSFP_TEMP2
/QSFP_TEMP3
/BOARD_MONITOR
/CURR_MONITOR
/FRU_EEPROM
/CPU_BOARD_MONITOR
/MGMT/FAN1
/MGMT/FAN2
/MGMT/FAN3
/MGMT/FAN4
/MGMT/PS1
/MGMT/PS2
/FW_DEV
/CPU/FRU_EEPROM
 
  • Like
Reactions: klui

MgDuke

New Member
Aug 5, 2022
2
0
1
Hi.

Bought a switch for VPI. Trying to unlock Ethernet with no luck, please PM me a "secret key" to get Ethernet working.
I tried to follow instructions, but could not find secret string in binary :(
Should I decode it somehow ?

Thanks.
 

cy384

New Member
Aug 19, 2022
21
21
3
cy384.com
hoping to pick one of these up (anyone selling a spare sx6012? let me know!), but one question about speeds after the ethernet gateway license is enabled:

do the FDR10 models support 40Gb ethernet? or only the FDR versions? I can't tell if there's any difference between them other than the 56gb speeds.
 
Last edited:

NablaSquaredG

Bringing 100G switches to homelabs
Aug 17, 2020
1,591
1,051
113
hoping to pick one of these up (anyone selling a spare sx6012? let me know!), but one question about speeds after the ethernet gateway license is enabled:

do the FDR10 models support 40Gb ethernet? or only the FDR versions? I can't tell if there's any difference between them other than the 56gb speeds.
If you have the proper license (i.e. license does not only contain gateway license, but also speed license), all speeds from 1G to 56G will work.
 
  • Like
Reactions: cy384

abpplo

New Member
Jan 22, 2018
6
4
3
44
I have a 6036 (from mellanox I believe) and I am trying to set the fan speeds. I can get PS1 to set, but the fans won't set.

I am running 3.6.8012 and have used the fae commands.

(config) # fae mlxi2c set_fan /FAN1/FAN 1 30
Aug 17 20:47:54 INFO LOG: Initializing SX log with STDOUT as output file.
-E- mlxi2c: Failed to locate device /FAN1/FAN : MLXI2C_NOT_EXIST_DEV (19)

and I have tried the commands from inside bash:
~]#
7 set_max uint8 50_module string "/MGMT/FAN4" fan_number int8 1 fan_speed int8 2
Return code: 1
Return message: Action failed

the command gets a little garbled with copy and past. This is the command I am trying:
/opt/tms/bin/mdreq action /system/chassis/actions/set-fan-speed fan_module string "/MGMT/FAN1" fan_number int8 1 fan_speed int8 27 set_max uint8 50

Any ideas what I am doing wrong, or how I can find the correct devices?

Thanks!
use: fae mlxi2c --master-mode set_fan /FAN/FAN 1 65, I had test.