SATA? In an old world PCI Power Mac?! IMPOSSIBRU! (Updated 11/22/23)

dosdude1

Tinkerer
Jan 10, 2022
18
32
13
Hi, I have a card with Silicon Image SATALink Sil3112ACT144 bridge and an AM28F010 prom. I cannot flash it on my PowerMac G3.
Card in recognize in OS 9 but I could not use the flashrom updater as the computer freezes when I click “Flash”. I am under OS 9.2. Dosdude1, should I try with OS 9.1?
I tried with voidlinux Flashrom. The card is listed with lspci (see attached picture), but flashrom gives error
Error: No supported PCI device found.
Main difference between AM29F010 and AM28F010 is that it does use a 12V for programming.
Any idea?
Yeah, the AM28F010 is one of the EEPROMs that the OS 9 flashing utility doesn't like. You'll need to use Flashrom on a PC running under DOS or Linux to flash the card, or you can desolder the EEPROM and flash with a programmer.
 
  • Like
Reactions: AirplaneHome.com

Borgmac

Tinkerer
Dec 21, 2021
68
82
18
71
Richmond, KY
Yeah, the AM28F010 is one of the EEPROMs that the OS 9 flashing utility doesn't like. You'll need to use Flashrom on a PC running under DOS or Linux to flash the card, or you can desolder the EEPROM and flash with a programmer.
Unfortunately I do not have a PC.
Do you know why I cannot use flashrom from Linux either?
 
  • Like
Reactions: AirplaneHome.com

speakers

Tinkerer
Nov 5, 2021
98
76
18
San Jose, CA
peak-weber.net
The PowerPC version of Flashrom does not support satasil programmer mode.
The open-source flashrom project (https://www.flashrom.org/Flashrom) does indeed support satasil. I've used it many times to read and write cards under Debian 8 on several PCI Macs.

In fact, I've used it to patch the SeriTek OSX driver to accept other eprom types. But I could never work out how to do the same for Classic Mac OSes .. so I salute your accomplishment, dosdude1!

As to why Borgmac sees flashrom failing, I can't say. Perhaps other PCI cards are confusing it??
 
  • Like
Reactions: AirplaneHome.com

dosdude1

Tinkerer
Jan 10, 2022
18
32
13
The open-source flashrom project (https://www.flashrom.org/Flashrom) does indeed support satasil. I've used it many times to read and write cards under Debian 8 on several PCI Macs.

In fact, I've used it to patch the SeriTek OSX driver to accept other eprom types. But I could never work out how to do the same for Classic Mac OSes .. so I salute your accomplishment, dosdude1!

As to why Borgmac sees flashrom failing, I can't say. Perhaps other PCI cards are confusing it??
Interesting, someone mentioned PPC-compiled Flashrom didn't allow programming of these SATA cards. Must not have been accurate in that case.
 
  • Like
Reactions: AirplaneHome.com

Borgmac

Tinkerer
Dec 21, 2021
68
82
18
71
Richmond, KY
The open-source flashrom project (https://www.flashrom.org/Flashrom) does indeed support satasil. I've used it many times to read and write cards under Debian 8 on several PCI Macs.
Strange thing is that the card is recognized on my B&W G3 and G5 computers but flashrom is giving following error message which is the same as when there is no SATA card in the computer.
IMG_2165.jpeg

As to why Borgmac sees flashrom failing, I can't say. Perhaps other PCI cards are confusing it??
I just have the AGP video card and I have tried the SATA card in every slot, always same result
 
  • Like
Reactions: AirplaneHome.com

Borgmac

Tinkerer
Dec 21, 2021
68
82
18
71
Richmond, KY
After digging a little bit more, I realized that OS9 was actually recognizing the card as a 6112 card
IMG_2081.jpg

And that OpenFirmware also
IMG_2075.jpg

I found that lspci was giving me more information and that 6112 is the raid controller. See attached file for better reading.
IMG_2167.jpg

I remember and old video from dosdude1 , thanks again for all the job that you have been doing!!!) There was some issue with the card being RAID or IDE Mass Storage depending about the level of the pin 42 of the SIL3112.(around 10 min in the video)
I check that, unfortunately Pin 42 has 2.2 M Ohms to GND and 2.2 V while the computer is running.
Dosdude1, could the last picture with all the details means something to you? For me, I don not understand half of it but it could help us finding a reason why some cards cannot be flashed.
 

Attachments

  • IMG_2167 (1).jpeg
    IMG_2167 (1).jpeg
    257 KB · Views: 103
  • Like
Reactions: AirplaneHome.com

dosdude1

Tinkerer
Jan 10, 2022
18
32
13
After digging a little bit more, I realized that OS9 was actually recognizing the card as a 6112 card
View attachment 11097
And that OpenFirmware also
View attachment 11098
I found that lspci was giving me more information and that 6112 is the raid controller. See attached file for better reading.
View attachment 11100
I remember and old video from dosdude1 , thanks again for all the job that you have been doing!!!) There was some issue with the card being RAID or IDE Mass Storage depending about the level of the pin 42 of the SIL3112.(around 10 min in the video)
I check that, unfortunately Pin 42 has 2.2 M Ohms to GND and 2.2 V while the computer is running.
Dosdude1, could the last picture with all the details means something to you? For me, I don not understand half of it but it could help us finding a reason why some cards cannot be flashed.
Hmm, that could be why. Something in the PC ROM causes the device ID to change to "6112" on a Mac for some reason. If you boot the machine into Open Firmware, and run the following commands, the device ID should then be the correct "3112", and hopefully get detected properly by Flashrom. (This assumes your Sil3112 card is in location "@4", as shown in your image. You can run "dev / ls" to see, just replace the "@4" in the below commands with the correct value. Also, "pci" may need to be replaced with "pci1" on some systems).

Code:
dev pci/@4
: open true ;
" pci/@4" select-dev
h# 3112 encode-int " device-id" property
h# 3112 encode-int " subsystem-id" property
" pci1095,3112" encode-string " name" property

Then continue booting by entering "mac-boot" or "multi-boot". Rebooting or powering off the machine will revert these changes, as they're only done for the current session.
 
  • Like
Reactions: AirplaneHome.com

Borgmac

Tinkerer
Dec 21, 2021
68
82
18
71
Richmond, KY
Hmm, that could be why. Something in the PC ROM causes the device ID to change to "6112" on a Mac for some reason. If you boot the machine into Open Firmware, and run the following commands, the device ID should then be the correct "3112", and hopefully get detected properly by Flashrom. (This assumes your Sil3112 card is in location "@4", as shown in your image. You can run "dev / ls" to see, just replace the "@4" in the below commands with the correct value. Also, "pci" may need to be replaced with "pci1" on some systems).

Code:
dev pci/@4
: open true ;
" pci/@4" select-dev
h# 3112 encode-int " device-id" property
h# 3112 encode-int " subsystem-id" property
" pci1095,3112" encode-string " name" property

Then continue booting by entering "mac-boot" or "multi-boot". Rebooting or powering off the machine will revert these changes, as they're only done for the current session.
thanks a lot for all this information, from where do you know all this???
Do not have a lot of time this morning but I have tried this. Good and bad news.
good news is that 6112 has been replaced everywhere by 3112 in the listings.
bad news is that in voidlinux flashrom still does not recognize the card. I will try later OS9 and flash seritek.
 
  • Like
Reactions: AirplaneHome.com

Borgmac

Tinkerer
Dec 21, 2021
68
82
18
71
Richmond, KY
Hmm, that could be why. Something in the PC ROM causes the device ID to change to "6112" on a Mac for some reason. If you boot the machine into Open Firmware, and run the following commands, the device ID should then be the correct "3112", and hopefully get detected properly by Flashrom
Made some other tests, but result is the same.
Changes are done in the device properties, everything is at 3112 but flashrom still do not recognize the card.
Before changes
IMG_2184.jpeg

After changes
IMG_2185 (3).jpeg


Made tests on B&W G3 with voidlinux, card in slots 2 and 4
Made tests on G5 with voidlinux, same.
Attached a picture showing more details from lspci data
Any other idea?
 

Attachments

  • IMG_2175.jpeg
    IMG_2175.jpeg
    229.7 KB · Views: 79
  • Like
Reactions: AirplaneHome.com

dosdude1

Tinkerer
Jan 10, 2022
18
32
13
Made some other tests, but result is the same.
Changes are done in the device properties, everything is at 3112 but flashrom still do not recognize the card.
Before changes
View attachment 11121
After changes
View attachment 11124

Made tests on B&W G3 with voidlinux, card in slots 2 and 4
Made tests on G5 with voidlinux, same.
Attached a picture showing more details from lspci data
Any other idea?
Maybe it's the class code? Try setting that, and maybe the compatible property for good measure. Add the following to the previous commands:

Code:
h# 18000 encode-int " class-code" property
" pci1095,3112"(00)pci1095,3112"(00)pciclass,018000" encode-string " compatible" property
 
  • Like
Reactions: AirplaneHome.com

speakers

Tinkerer
Nov 5, 2021
98
76
18
San Jose, CA
peak-weber.net
For reference, here's what my B&W G3 reports for a flashrom-programmable PCI SATA card under Tiger:

1677458480017.png


And running Debian, I see:

root@blue:~# lspci 00:00.0 Host bridge: Motorola MPC106 [Grackle] (rev 40) 00:0d.0 PCI bridge: Digital Equipment Corporation DECchip 21154 (rev 02) 00:10.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Rage 128 GL PCI 01:00.0 FireWire (IEEE 1394): Texas Instruments PCILynx/PCILynx2 IEEE 1394 Link Layer Controller (rev 02) 01:01.0 IDE interface: Silicon Image, Inc. PCI0646 (rev 05) 01:02.0 Mass storage controller: Silicon Image, Inc. SiI 3112 [SATALink/SATARaid] Serial ATA Controller (rev 01) 01:03.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8169 PCI Gigabit Ethernet Controller (rev 10) 01:05.0 Unassigned class [ff00]: Apple Inc. Paddington Mac I/O 01:06.0 USB controller: OPTi Inc. 82C861 (rev 10) root@blue:~# lspci -vv -s 01:01.0 01:01.0 IDE interface: Silicon Image, Inc. PCI0646 (rev 05) (prog-if 8f [Master SecP SecO PriP PriO]) Subsystem: Silicon Image, Inc. PCI0646 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 (500ns min, 1000ns max) Interrupt: pin A routed to IRQ 26 Region 0: I/O ports at 1890 [size=8] Region 1: I/O ports at 1880 [size=4] Region 2: I/O ports at 1870 [size=8] Region 3: I/O ports at 1860 [size=4] Region 4: I/O ports at 1850 [size=16] Capabilities: [60] Power Management version 1 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=3 PME- Kernel driver in use: pata_cmd64x
 
  • Like
Reactions: AirplaneHome.com

dosdude1

Tinkerer
Jan 10, 2022
18
32
13
For reference, here's what my B&W G3 reports for a flashrom-programmable PCI SATA card under Tiger:

View attachment 11125

And running Debian, I see:

root@blue:~# lspci 00:00.0 Host bridge: Motorola MPC106 [Grackle] (rev 40) 00:0d.0 PCI bridge: Digital Equipment Corporation DECchip 21154 (rev 02) 00:10.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Rage 128 GL PCI 01:00.0 FireWire (IEEE 1394): Texas Instruments PCILynx/PCILynx2 IEEE 1394 Link Layer Controller (rev 02) 01:01.0 IDE interface: Silicon Image, Inc. PCI0646 (rev 05) 01:02.0 Mass storage controller: Silicon Image, Inc. SiI 3112 [SATALink/SATARaid] Serial ATA Controller (rev 01) 01:03.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8169 PCI Gigabit Ethernet Controller (rev 10) 01:05.0 Unassigned class [ff00]: Apple Inc. Paddington Mac I/O 01:06.0 USB controller: OPTi Inc. 82C861 (rev 10) root@blue:~# lspci -vv -s 01:01.0 01:01.0 IDE interface: Silicon Image, Inc. PCI0646 (rev 05) (prog-if 8f [Master SecP SecO PriP PriO]) Subsystem: Silicon Image, Inc. PCI0646 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 (500ns min, 1000ns max) Interrupt: pin A routed to IRQ 26 Region 0: I/O ports at 1890 [size=8] Region 1: I/O ports at 1880 [size=4] Region 2: I/O ports at 1870 [size=8] Region 3: I/O ports at 1860 [size=4] Region 4: I/O ports at 1850 [size=16] Capabilities: [60] Power Management version 1 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=3 PME- Kernel driver in use: pata_cmd64x
I would expect it to work properly there, as the card has already been flashed. This issue only arises when the card still has the PC BIOS ROM on it (at least, the issue of the incorrect device IDs and class code).
 
  • Like
Reactions: AirplaneHome.com

speakers

Tinkerer
Nov 5, 2021
98
76
18
San Jose, CA
peak-weber.net
I would expect it to work properly there, as the card has already been flashed. This issue only arises when the card still has the PC BIOS ROM on it (at least, the issue of the incorrect device IDs and class code).

indeed. Alas, I have no recollection of what device/class I saw when I originally flashed the card. It had BIOS firmware installed originally, but I guess it was advertising compatible IDs for flashrom to grok.
 
  • Like
Reactions: AirplaneHome.com

Borgmac

Tinkerer
Dec 21, 2021
68
82
18
71
Richmond, KY
Maybe it's the class code? Try setting that, and maybe the compatible property for good measure. Add the following to the previous commands:

Code:
h# 18000 encode-int " class-code" property
" pci1095,3112"(00)pci1095,3112"(00)pciclass,018000" encode-string " compatible" property
Thanks again for your help, but I still have the same flashrom error with this setting
IMG_2191.jpeg
 
  • Like
Reactions: AirplaneHome.com

dosdude1

Tinkerer
Jan 10, 2022
18
32
13
Thanks again for your help, but I still have the same flashrom error with this setting
View attachment 11129
Well, that's a much as you can do from Open Firmware. That is exactly how it should be for an unflashed Sil3112. Maybe try using a different version of Linux, such as Debian? If that still doesn't work, then I think you're just going to have to use a PC to flash, or flash the EEPROM externally with a programmer.
 
  • Like
Reactions: AirplaneHome.com

Borgmac

Tinkerer
Dec 21, 2021
68
82
18
71
Richmond, KY
And running Debian, I see:
Thanks a lot for this information.
Here are the differences:

Control: I/0+ Mem+, you have Men-
Status: Cap+ 66MHz+, you have 66MHz-
Latency: 16, Cache Line Size: 32 bytes, your's is different
Interrupt: pin A routed to IRQ 25, you have 26
Region A: I/0 ports at 1090 , you have 1890
Same for other regions, 10xx, you have 18xx
Capabilities: I601 Power Management version 2, you have version 1
Flags: PMECIk- DSI+, you have DSI-
Kernel driver in use: sata sil, you have pata_cmd64x

No idea what is important.
Several items are + while you have -

Does it make any sense for someone?

I might try to install Debian on my G5, which version do you have?
 
  • Like
Reactions: AirplaneHome.com

Borgmac

Tinkerer
Dec 21, 2021
68
82
18
71
Richmond, KY
Well, that's a much as you can do from Open Firmware. That is exactly how it should be for an unflashed Sil3112. Maybe try using a different version of Linux, such as Debian? If that still doesn't work, then I think you're just going to have to use a PC to flash, or flash the EEPROM externally with a programmer.
Again thanks a lot, I was thinking also to install Debian hoping it will make a difference
 
  • Like
Reactions: AirplaneHome.com

speakers

Tinkerer
Nov 5, 2021
98
76
18
San Jose, CA
peak-weber.net
Thanks a lot for this information.
Here are the differences:

Control: I/0+ Mem+, you have Men-
Status: Cap+ 66MHz+, you have 66MHz-
Latency: 16, Cache Line Size: 32 bytes, your's is different
Interrupt: pin A routed to IRQ 25, you have 26
Region A: I/0 ports at 1090 , you have 1890
Same for other regions, 10xx, you have 18xx
Capabilities: I601 Power Management version 2, you have version 1
Flags: PMECIk- DSI+, you have DSI-
Kernel driver in use: sata sil, you have pata_cmd64x

No idea what is important.
Several items are + while you have -

Does it make any sense for someone?

I might try to install Debian on my G5, which version do you have?

Oh .. my mistake .. I hit the wrong device. It should read:
01:02.0 Mass storage controller: Silicon Image, Inc. SiI 3112 [SATALink/SATARaid] Serial ATA Controller (rev 01) Subsystem: Silicon Image, Inc. SiI 3112 SATALink Controller 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: 16, Cache Line Size: 4 bytes Interrupt: pin A routed to IRQ 23 Region 0: I/O ports at 1840 [size=8] Region 1: I/O ports at 1830 [size=4] Region 2: I/O ports at 1820 [size=8] Region 3: I/O ports at 1810 [size=4] Region 4: I/O ports at 1800 [size=16] Region 5: Memory at 80881000 (32-bit, non-prefetchable) [size=512] Expansion ROM at 80900000 [disabled] [size=512K] Capabilities: <access denied> Kernel driver in use: sata_sil

On my B&W G3 I'm running:
$ uname -v #1 Debian 3.16.56-1+deb8u1 (2018-05-08)
 
  • Like
Reactions: AirplaneHome.com