Немного индивидуальности не повредит

Сегодня с утра возился с решением забавной проблемы. Началось всё с того, что вчера Katy, наш администратор, обрадовала меня, сообщив что пришли заказанные диски и FireWire контейнеры для них. К концу дня радость немного поугасла, так как выяснилось, что оба диска одновременно работать отказываются. Т.е. любой из них по отдельности работал как часы, а вот при подключении второго ничего не происходило. Диск не появлялся. :-(

Немного поискав в интернете, я наконец нашел вот эту страничку, которая рассказывала о аналогичной проблеме. Рецепт оказался прост:


Two big clues were (1) a posting on the Coolmax forum, and (2) the following entry from one of the readme’s for Prolific firmware.

02/24/2003 - 
1. Fix the problem of 'Unique ID with 1394 Serial No.' 
For two or more same PL-3507 IDE device on the same 1394 bus, the EUID64 should be unique. 
The 1394 Serial No. is now used in the EEPROM to construct the unique EUID64 bytes (64bits = 8 bytes). 
bytes #0 ~2 : Company ID (00 50 77 for Prolific) 
bytes #3 : Device Type (HD/CD-ROM/DVD/MO...) 
bytes #4~7 : 1394 Serial No. (modified by PL3507 EEPROM Writor) 

Note: Must use PL-3507 EEPROM Writer V 0.0.0.6. 

Of course this “EEPROM Writer” was nowhere to be found. But in the process of doing a firmware update, I noted that the updater utility had an option to save the current firmware to a “.bin” file. To make a long story short, what I eventually figured out is that this .bin file included everything, INCLUDING THE SECTION WITH THE “1394 Serial No.” above. I further determined that this Serial No. was IDENTICAL on all my enclosures. The manufacturer had NOT serialized the chips. (This is like buying several ethernet boards, all with the same mac address assigned - a no-no.)

On a hunch, I used a hex editor and modified the serial number in the .bin file, and reflashed the firmware. Low and behold now my system ‘saw’ that enclosure at the same time as one of the unmodified enclosures!

My hunch was confirmed - the top portion of the flash is used to hold data, including this serial number. The normal firmware updates do not disturb this portion, but if you update with the previously saved .bin file, it allows you to overwrite the entire flash, including this data.

So for people with improperly serialized PL-3507 based enclosures, there is a way to ‘fix’ this, if you are sufficiently brave and willing to manually patch your firmware image.

Get the firmware updater. The current version is at http://www.prolific.com.tw/support/files//IDE%20Storage/PL-3507/Firmware/fw_pl3507B_d042006.zip The zip includes both the most recent firmware and the updater utility. Please note the following from Prolific web-site:

fw_pl3507B_d042006.zip 2006/5/19 108 KB 

PL-3507B Firmware Update F/W Version: 2006.04.20.149 [Checksum 4D6F] For Chip B and above versions only (w/ ICP Support) Warning: This firmware is intended ONLY for Prolific customers and not for end-users. If you are an end-user and still want to use this, use at your own risk. Use ICP v2.0.4 and firmware 09/22/2004 first if your current firmware is older than 04/10/2003.

  1. Update your flash to the current version using this.
  2. Use the updater to save a copy of your flash to a .bin file.
  3. Using a hex editor on the .bin, look after offset 0x7400 for the above signature - 00 50 77
  4. The next byte is the device type, the next four bytes are the serial number.
  5. Patch the serial number (increment one of the bytes)
  6. Save the modified .bin
  7. Use the firmware updater to reflash, using the .bin file

Do this for each of your enclosures, giving each a unique serial number.


Каждое из устройств, подключенных по FireWire должно иметь уникальный идентификатор. В данном случае речь шла некоем “1394 Serial No.”. Этот номер хранится в прошивке ATAPI-to-FireWire контроллера.

Дальнейшее было бы делом техники, если бы не одна маленькая деталь – утилита для записи прошивки напрочь отказывалась работать с одном из контейнеров, однако без проблем работала с другим. В результате я нашел и опробовал штук пять разных вариантов этой утилиты. Ни один не заработал со «счастливым контейнером». С другим работали последние три версии.

Здраво рассудив, что чтобы серийные номера были разными, достаточно поменять лишь один из них, я решил попробовать. Перекрестившись, закачал текущую версию прошивки, нашел в ней серийный номер по трем байтам производителя (00 50 77 для Prolific) и поменял 1394 Serial No.

Попутно выяснилось, что заветная последовательность “00 50 77” встречается в прошивке два раза. Решив, что менять сразу два бита будет через чур, залил прошивку с одним исправленным номером. Выключил, включил назад – ура, ура! - список устройств пополнился двумя “SBP2 Compliant IEEE 1394 device”. Впрочем один из дисков по прежнему не был виден. :-( Перезагрузился, показались оба диска.

Наконец-то!

comments powered by Disqus