SGI: Hardware

3com 996B eeprom dump?

You can really just write the entire dump nekonoko posted into any card. The serial number (SN) in there has no practical use. The start of the VPD section is apparently always 0x100 (= 256 dec). I've used the following script to call ethtool, hexsgivpd contains just the hex values, preceded by exactly one space each, as shown in the example below. Everything after byte 48 (the clear text part) is ignored. To actually execute this, remove the echo before ethtool.

Code: Select all

#!/bin/bash
o=256;
for i in `cat hexsgivpd  | cut -b 1-48 `; do
echo ethtool -E eth2 magic 0x669955aa offset 0x`(echo obase=16; echo $o) | bc` value 0x$i;
o=$[ $o + 1 ];
done

Code: Select all

82 20 00 53 47 49 20 47 69 67 61 62 69 74 20 45 . .SGI Gigabit E
74 68 65 72 6E 65 74 20 43 6F 6E 74 72 6F 6C 6C thernet Controll
65 72 00 90 5A 00 50 4E 07 39 32 31 30 32 38 39 er..Z.PN.9210289
45 43 04 30 30 30 32 53 4E 0A 57 45 43 52 46 46 EC.0002SN.WECRFF
36 41 38 39 4D 4E 04 31 30 42 37 52 56 32 78 00 6A89MN.10B7RV2x.
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

If you really think you have to adjust the serial number or anything else, you should fix the checksum as well. The checksum is called RV and besides the checksum istself, it is apparently used to pad the VPD to 96 bytes, so that you'll have to adjust the length of the RV field as well if you delete or add anything. The checksum itself is in the first payload byte, i.e. the second byte after RV, the first being the length. The checksum does not cover the clear text name of the device (e.g. "SGI Gigabit Ethernet Controller"), but everything after that, including the RV itself. The sum of all the bytes covered modulo 256 should be 0x00. I've used the shell code below to compute the checksum over the hexdump, this time just hex bytes with one space, no linebreaks etc.

Code: Select all

( echo obase=16
echo ibase=16
echo \(00 `cat hexsgi  | cut -b 1-$[3*16] `\)%100 | sed -e 's/ /+/g' | tr a-z A-Z  ) | bc
The original contents of the vpd of my HP NC7770 was:

Code: Select all

00000100  82 21 00 48 50 20 4e 43  37 37 37 30 20 47 69 67  |.!.HP NC7770 Gig|
00000110  61 62 69 74 20 53 65 72  76 65 72 20 41 64 61 70  |abit Server Adap|
00000120  74 65 72 00 90 59 00 50  4e 0a 32 38 34 36 38 35  |ter..Y.PN.284685|
00000130  2d 30 30 33 45 43 02 30  47 53 4e 0a 57 45 43 52  |-003EC.0GSN.WECR|
00000140  46 46 36 41 38 39 4d 4e  04 30 45 31 31 52 56 30  |FF6A89MN.0E11RV0|
00000150  cf 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
I doubt that upgrading the firmware will make any difference at all, most of the eeprom is just a PC Bios boot rom, and I'm certain that the irix driver brings along its own copy that matches the driver. The firmware itself is tiny, the largest for the tg3 driver in linux is less that 2000 bytes long.
Jan-jaap & Canavan:

Thanks for all the help! It's times like these I can't stop thinking of what if this forum didn't excist?
I owe you a beer when anyone of you happen to cross northern parts of Sweden. ;)

EDIT: I feel ridiculous. For whatever reason my brain had a meltdown the other day, but when Canavan shed some light on this it got clear.
:O3200: :Fuel: :Indy: :O3x02L:
canavan wrote: If you really think you have to adjust the serial number or anything else, you should fix the checksum as well. The checksum is called RV and besides the checksum istself, it is apparently used to pad the VPD to 96 bytes, so that you'll have to adjust the length of the RV field as well if you delete or add anything. The checksum itself is in the first payload byte, i.e. the second byte after RV, the first being the length. The checksum does not cover the clear text name of the device (e.g. "SGI Gigabit Ethernet Controller"), but everything after that, including the RV itself. The sum of all the bytes covered modulo 256 should be 0x00. I've used the shell code below to compute the checksum over the hexdump, this time just hex bytes with one space, no linebreaks etc.

Good stuff, thanks!
To accentuate the special identity of the IRIS 4D/70, Silicon Graphics' designers selected a new color palette. The machine's coating blends dark grey, raspberry and beige colors into a pleasing harmony. ( IRIS 4D/70 Superworkstation Technical Report )
Well, to sum things up a little bit around this thread, I hereby posting a complete solution to fix both issues; PCI-ID and cosmetic "OBSOLETE" message.

Short instruction: Fire up a live-CD with Linux on some x86 box with the card installed. (even 32bit/33MHz slots works fine)
Make sure the live-CD has Ethtool installed and to verify things you need 'lspci' (PCI-UTILS package) to list the PCI cards in the machine.

Then, simply run this script:

Code: Select all

#!/bin/bash
ethtool -E eth0 magic 0x669955aa offset 0xa4 value 0x80
ethtool -E eth0 magic 0x669955aa offset 0xa5 value 0x11
ethtool -E eth0 magic 0x669955aa offset 0xa6 value 0x10
ethtool -E eth0 magic 0x669955aa offset 0xa7 value 0xa9
ethtool -E eth0 magic 0x669955aa offset 0x100 value 0x82
ethtool -E eth0 magic 0x669955aa offset 0x101 value 0x20
ethtool -E eth0 magic 0x669955aa offset 0x102 value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x103 value 0x53
ethtool -E eth0 magic 0x669955aa offset 0x104 value 0x47
ethtool -E eth0 magic 0x669955aa offset 0x105 value 0x49
ethtool -E eth0 magic 0x669955aa offset 0x106 value 0x20
ethtool -E eth0 magic 0x669955aa offset 0x107 value 0x47
ethtool -E eth0 magic 0x669955aa offset 0x108 value 0x69
ethtool -E eth0 magic 0x669955aa offset 0x109 value 0x67
ethtool -E eth0 magic 0x669955aa offset 0x10A value 0x61
ethtool -E eth0 magic 0x669955aa offset 0x10B value 0x62
ethtool -E eth0 magic 0x669955aa offset 0x10C value 0x69
ethtool -E eth0 magic 0x669955aa offset 0x10D value 0x74
ethtool -E eth0 magic 0x669955aa offset 0x10E value 0x20
ethtool -E eth0 magic 0x669955aa offset 0x10F value 0x45
ethtool -E eth0 magic 0x669955aa offset 0x110 value 0x74
ethtool -E eth0 magic 0x669955aa offset 0x111 value 0x68
ethtool -E eth0 magic 0x669955aa offset 0x112 value 0x65
ethtool -E eth0 magic 0x669955aa offset 0x113 value 0x72
ethtool -E eth0 magic 0x669955aa offset 0x114 value 0x6E
ethtool -E eth0 magic 0x669955aa offset 0x115 value 0x65
ethtool -E eth0 magic 0x669955aa offset 0x116 value 0x74
ethtool -E eth0 magic 0x669955aa offset 0x117 value 0x20
ethtool -E eth0 magic 0x669955aa offset 0x118 value 0x43
ethtool -E eth0 magic 0x669955aa offset 0x119 value 0x6F
ethtool -E eth0 magic 0x669955aa offset 0x11A value 0x6E
ethtool -E eth0 magic 0x669955aa offset 0x11B value 0x74
ethtool -E eth0 magic 0x669955aa offset 0x11C value 0x72
ethtool -E eth0 magic 0x669955aa offset 0x11D value 0x6F
ethtool -E eth0 magic 0x669955aa offset 0x11E value 0x6C
ethtool -E eth0 magic 0x669955aa offset 0x11F value 0x6C
ethtool -E eth0 magic 0x669955aa offset 0x120 value 0x65
ethtool -E eth0 magic 0x669955aa offset 0x121 value 0x72
ethtool -E eth0 magic 0x669955aa offset 0x122 value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x123 value 0x90
ethtool -E eth0 magic 0x669955aa offset 0x124 value 0x5A
ethtool -E eth0 magic 0x669955aa offset 0x125 value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x126 value 0x50
ethtool -E eth0 magic 0x669955aa offset 0x127 value 0x4E
ethtool -E eth0 magic 0x669955aa offset 0x128 value 0x07
ethtool -E eth0 magic 0x669955aa offset 0x129 value 0x39
ethtool -E eth0 magic 0x669955aa offset 0x12A value 0x32
ethtool -E eth0 magic 0x669955aa offset 0x12B value 0x31
ethtool -E eth0 magic 0x669955aa offset 0x12C value 0x30
ethtool -E eth0 magic 0x669955aa offset 0x12D value 0x32
ethtool -E eth0 magic 0x669955aa offset 0x12E value 0x38
ethtool -E eth0 magic 0x669955aa offset 0x12F value 0x39
ethtool -E eth0 magic 0x669955aa offset 0x130 value 0x45
ethtool -E eth0 magic 0x669955aa offset 0x131 value 0x43
ethtool -E eth0 magic 0x669955aa offset 0x132 value 0x04
ethtool -E eth0 magic 0x669955aa offset 0x133 value 0x30
ethtool -E eth0 magic 0x669955aa offset 0x134 value 0x30
ethtool -E eth0 magic 0x669955aa offset 0x135 value 0x30
ethtool -E eth0 magic 0x669955aa offset 0x136 value 0x32
ethtool -E eth0 magic 0x669955aa offset 0x137 value 0x53
ethtool -E eth0 magic 0x669955aa offset 0x138 value 0x4E
ethtool -E eth0 magic 0x669955aa offset 0x139 value 0x0A
ethtool -E eth0 magic 0x669955aa offset 0x13A value 0x57
ethtool -E eth0 magic 0x669955aa offset 0x13B value 0x45
ethtool -E eth0 magic 0x669955aa offset 0x13C value 0x43
ethtool -E eth0 magic 0x669955aa offset 0x13D value 0x52
ethtool -E eth0 magic 0x669955aa offset 0x13E value 0x46
ethtool -E eth0 magic 0x669955aa offset 0x13F value 0x46
ethtool -E eth0 magic 0x669955aa offset 0x140 value 0x36
ethtool -E eth0 magic 0x669955aa offset 0x141 value 0x41
ethtool -E eth0 magic 0x669955aa offset 0x142 value 0x38
ethtool -E eth0 magic 0x669955aa offset 0x143 value 0x39
ethtool -E eth0 magic 0x669955aa offset 0x144 value 0x4D
ethtool -E eth0 magic 0x669955aa offset 0x145 value 0x4E
ethtool -E eth0 magic 0x669955aa offset 0x146 value 0x04
ethtool -E eth0 magic 0x669955aa offset 0x147 value 0x31
ethtool -E eth0 magic 0x669955aa offset 0x148 value 0x30
ethtool -E eth0 magic 0x669955aa offset 0x149 value 0x42
ethtool -E eth0 magic 0x669955aa offset 0x14A value 0x37
ethtool -E eth0 magic 0x669955aa offset 0x14B value 0x52
ethtool -E eth0 magic 0x669955aa offset 0x14C value 0x56
ethtool -E eth0 magic 0x669955aa offset 0x14D value 0x32
ethtool -E eth0 magic 0x669955aa offset 0x14E value 0x78
ethtool -E eth0 magic 0x669955aa offset 0x14F value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x150 value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x151 value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x152 value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x153 value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x154 value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x155 value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x156 value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x157 value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x158 value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x159 value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x15A value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x15B value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x15C value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x15D value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x15E value 0x00
ethtool -E eth0 magic 0x669955aa offset 0x15F value 0x00

And that's all there is to it - nothing more, nothing less.

I've successully done three cards so far and that covered my needs, atleast for the time beeing.
:O3200: :Fuel: :Indy: :O3x02L:
ramq wrote: Then, simply run this script:

.......

And that's all there is to it - nothing more, nothing less.

I've successully done three cards so far and that covered my needs, atleast for the time beeing.


Hi there, very useful indeed, but sadly I end up with a bad checksum :(

The cards I used were HP NC7770 PCI-X 284848-001 from here http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=380144771142&ssPageName=STRK:MEWNX:IT

Maybe someone is interested since they are selling for 6,99 Euro each (plus shipping)

Here's the output of lspci -vv on a linux machine.

Code: Select all

04:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5701 Gigabit Ethernet (rev 15)
Subsystem: Silicon Graphics, Inc. Gigabit Ethernet (Copper)
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64 (16000ns min), Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 16
Region 0: Memory at febf0000 (64-bit, non-prefetchable) [size=64K]
Expansion ROM at f0000000 [disabled] [size=64K]
Capabilities: [40] PCI-X non-bridge device
Command: DPERE- ERO+ RBC=512 OST=1
Status: Dev=ff:1f.1 64bit+ 133MHz+ SCD- USC- DC=simple DMMRBC=512 DMOST=1 DMCRS=8 RSCEM- 266MHz- 533MHz-
Capabilities: [48] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=1 PME-
Capabilities: [50] Vital Product Data
Product Name: SGI Gigabit Ethernet Controller
Read-only fields:
[PN] Part number: 9210289
[EC] Engineering changes: 0002
[SN] Serial number: WECRFF6A89
[MN] Manufacture ID: 31 30 42 37
[RV] Reserved: checksum bad, 49 byte(s) reserved
Read/write fields:
[YA] Asset tag: Hewlett Packard
[RW] Read-write area: 103 byte(s) free
End
Capabilities: [58] MSI: Mask- 64bit+ Count=1/8 Enable-
Address: b676091b09465720  Data: 3cc3
Kernel driver in use: tg3
Kernel modules: tg3


And my fuel won't recognise the card in IRIX (the card is there in the hinv with correct PCI-IDs. It also shows up correctly in the prom hinv) .

Also my Octane won't recognise the card. Says something like "cannot connect to tg1". Can lookup the exact message when I get back home.

Also the card doesn't show up with "ifconfig -a" or "tgcmd inventory" (on both machines).

Could someone help me with the checksum here since I've tried the

I've used the shell code below to compute the checksum over the hexdump, this time just hex bytes with one space, no linebreaks etc.

Code: Select all

( echo obase=16
echo ibase=16
echo \(00 `cat hexsgi  | cut -b 1-$[3*16] `\)%100 | sed -e 's/ /+/g' | tr a-z A-Z  ) | bc


from above but get a

Code: Select all

(standard_in) 2: parse error

with bc under fedora 11 and I don't have a clue how to fix (calculate) it ? Would be great.

The output of

Code: Select all

cat test.dump | cut -b 1-$[3*16] |sed -e 's/ /+/g' | tr a-z A-Z
is

Code: Select all

66+99+55+AA+08+00+00+00+00+00+03+21+00+00+02+00+


I've attached the whole dump, though.

And maybe someone could send me the if_tg.o for IP35 via PM if he/she has it handy. Would be great,too.

Best regards

McBlack
:Onyx2R: :Octane2: :O2: :Indigo2IMP: :1600SW: :1600SW:
A few points:

* I've seen those checksum failures myself. But IRIX doesn't seem to care.

* I believe that script creates a checksum over the entire EEPROM, but there's a VPD checkum as well, and that's what you see in the Linux 'lspci' trace.

* If you 'hack' the card, you don't need to hack the driver so I don't understand your request for driver binaries
To accentuate the special identity of the IRIS 4D/70, Silicon Graphics' designers selected a new color palette. The machine's coating blends dark grey, raspberry and beige colors into a pleasing harmony. ( IRIS 4D/70 Superworkstation Technical Report )
jan-jaap wrote:
* If you 'hack' the card, you don't need to hack the driver so I don't understand your request for driver binaries


I had hacked the driver before. But havn't made a backup. So I need a vanilla IP35 if_tg.o or a way to extract it from the install media.

For the octane I've made a backup. I'll test this file when I'm back home.
:Onyx2R: :Octane2: :O2: :Indigo2IMP: :1600SW: :1600SW:
mcblack wrote: a way to extract it from the install media.

Look at the -U option of inst:

Code: Select all

Run the tool in extract_mode, useful for recreating a source tree from a set of images produced by gendist(1M).

You could also reinstall eoe, or perform a dummy install to a different location (-r option)
To accentuate the special identity of the IRIS 4D/70, Silicon Graphics' designers selected a new color palette. The machine's coating blends dark grey, raspberry and beige colors into a pleasing harmony. ( IRIS 4D/70 Superworkstation Technical Report )
Just found my Octane if_tg.o backup.

And yes, as I hacked the driver, I've changed exactly the "8011" PCI-ID . :? :roll:

So just forget my post.

Thanks anyway.
:Onyx2R: :Octane2: :O2: :Indigo2IMP: :1600SW: :1600SW:
mcblack wrote: The output of

Code: Select all

cat test.dump | cut -b 1-$[3*16] |sed -e 's/ /+/g' | tr a-z A-Z
is

Code: Select all

66+99+55+AA+08+00+00+00+00+00+03+21+00+00+02+00+

Apparently, my instructions weren't clear enough. There needs to be one leading space, and no trailing spaces in hexsgi, then the snippet above will generate a vaild input for bc. Alternatively, you could swap the \(00 and \) to \( and 00\).
I am ressurecting the thread as i got my hands into a 3com 996B.
Is there somewhere a dump i can use to flash my card?
:Octane2: 2XR12K 400Mhz 2GB V8 Card Cage :Indy: R4400 200Mhz 256MB
Read the posts above.
:O3200: :Fuel: :Indy: :O3x02L:
I have done the procedures described above and at first the card seemed to worked as expected.
Today though after changing some network settings i got a pci bridge alert and some assorted messages that were followed by a reboot.
From then on i cannot boot the machine with the card inside the pci cage.
Any thoughts?
Can i somehow figure out that the pci card cage is working without any compatible pci card laying around?
:Octane2: 2XR12K 400Mhz 2GB V8 Card Cage :Indy: R4400 200Mhz 256MB
svizi wrote: Can i somehow figure out that the pci card cage is working without any compatible pci card laying around?
You might take a look at the syslog and core dump <if one was created>. If you're not already familiar with the diagnostic info a core dump might contain, "man icrash", "man savecore" and/or "man cvdump" will give you some basic background info how to access it <and enable it if needed>.
***********************************************************************
Welcome to ARMLand - 0/0x0d00
running...(sherwood-root 0607201829)
* InfiniteReality/Reality Software, IRIX 6.5 Release *
***********************************************************************
I booted the machine checking the console through a serial connection and i get the following

XIO Slot Reset Failure *FAILED*

Check or replace: XIO device 11

Any thoughts?
:Octane2: 2XR12K 400Mhz 2GB V8 Card Cage :Indy: R4400 200Mhz 256MB