linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Getting Backpack USB drives to work - looking for lost firmware
@ 2022-06-18 17:35 Ondrej Zary
  2023-01-23 20:02 ` Ondrej Zary
  0 siblings, 1 reply; 2+ messages in thread
From: Ondrej Zary @ 2022-06-18 17:35 UTC (permalink / raw)
  To: linux-usb, linux-kernel

Hello,
I'm trying to get Micro Solutions Backpack USB CD-RW to work and maybe write a simple firmware loader module. It's based on Cypress EZ-USB FX2 so it should be easy (the loading code is already present in the kernel for other devices).

Micro Solutions released firmware and load scrips for Linux - it used to be called bpck-usb-firmware-1.1.tgz but seems to have vanished from the web, even archive.org does not have it. Frugalware distro used to include a package bpck-usb-firmware-1.1-1-i686.fpm until version 1.7 (it was removed in 1.8) but I was not able to find it anywhere (even tried Frugalware developers).

At least the load script can be found here:
https://www.linuxquestions.org/questions/linux-hardware-18/external-usb-backpack-cd-rewriter-problem-212360/
Firmware filenames extracted from the script:
BP1SCAN.HEX, BP2SCAN.HEX (scan firmwares)
BP1CD5.HEX, BP1CD6.HEX, BP1HD5.HEX, BP1HD6.HEX (for USB 1 chips)
BP2CD5.HEX, BP2CD6.HEX, BP2HD5.HEX, BP2HD6.HEX (for USB 2 chips)
BPINTCD.HEX, BPINTHD.HEX (for internal USB 2 chips)

So there seems to be two kinds of external USB adapters/cables - with FX (USB 1) and FX2 (USB 2) chips. First, a "scan" firmware is loaded that identifies the drive type and changes the ID appropriately. Then a final firmware is loaded, depending on the chip type, drive version (5 or 6) and drive type (CD or HDD).
The latest devices have integrated USB support - no scanning is needed, just a CD or HDD firmware is loaded, depending on the ID.

My device (model 222011 with integrated USB) identifies as 0ac9:0010. Once the firmware is loaded, the identification changes to 0ac9:1234. I've tested it in Windows and extracted the firmware from usbsnoop dump. After loading using fxload, the ID changed but the device still reports vendor specific class. Probably the firmware for Windows is not the same as for Linux and is not fully USB mass storage compatible :( 

lsusb output (before loading firmware):
Bus 002 Device 002: ID 0ac9:0010 Micro Solutions, Inc. BACKPACK
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x0ac9 Micro Solutions, Inc.
  idProduct          0x0010 BACKPACK
  bcdDevice            1.82
  iManufacturer           1 Micro Solutions
  iProduct                3 Micro Solutions BACKPACK
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0020
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xc0
      Self Powered
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x88  EP 8 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0000
  (Bus Powered)

After loading firmware, only idProduct changes to 0x1234. Everything else remains.

-- 
Ondrej Zary

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Getting Backpack USB drives to work - looking for lost firmware
  2022-06-18 17:35 Getting Backpack USB drives to work - looking for lost firmware Ondrej Zary
@ 2023-01-23 20:02 ` Ondrej Zary
  0 siblings, 0 replies; 2+ messages in thread
From: Ondrej Zary @ 2023-01-23 20:02 UTC (permalink / raw)
  To: linux-usb; +Cc: linux-kernel

On Saturday 18 June 2022 19:35:01 Ondrej Zary wrote:
> Hello,
> I'm trying to get Micro Solutions Backpack USB CD-RW to work and maybe write a simple firmware loader module. It's based on Cypress EZ-USB FX2 so it should be easy (the loading code is already present in the kernel for other devices).
> 
> Micro Solutions released firmware and load scrips for Linux - it used to be called bpck-usb-firmware-1.1.tgz but seems to have vanished from the web, even archive.org does not have it. Frugalware distro used to include a package bpck-usb-firmware-1.1-1-i686.fpm until version 1.7 (it was removed in 1.8) but I was not able to find it anywhere (even tried Frugalware developers).
> 
> At least the load script can be found here:
> https://www.linuxquestions.org/questions/linux-hardware-18/external-usb-backpack-cd-rewriter-problem-212360/
> Firmware filenames extracted from the script:
> BP1SCAN.HEX, BP2SCAN.HEX (scan firmwares)
> BP1CD5.HEX, BP1CD6.HEX, BP1HD5.HEX, BP1HD6.HEX (for USB 1 chips)
> BP2CD5.HEX, BP2CD6.HEX, BP2HD5.HEX, BP2HD6.HEX (for USB 2 chips)
> BPINTCD.HEX, BPINTHD.HEX (for internal USB 2 chips)
> 
> So there seems to be two kinds of external USB adapters/cables - with FX (USB 1) and FX2 (USB 2) chips. First, a "scan" firmware is loaded that identifies the drive type and changes the ID appropriately. Then a final firmware is loaded, depending on the chip type, drive version (5 or 6) and drive type (CD or HDD).
> The latest devices have integrated USB support - no scanning is needed, just a CD or HDD firmware is loaded, depending on the ID.

Finally found the lost firmware files!

There's a Frugalware Linux 0.6 DVD 1 ISO at PC World Poland which contains the bpck-usb-firmware-1.1-1-i686.fpm file:
https://www.pcworld.pl/ftp/pobierz/linux/1582.html

-- 
Ondrej Zary

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-01-23 20:18 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-18 17:35 Getting Backpack USB drives to work - looking for lost firmware Ondrej Zary
2023-01-23 20:02 ` Ondrej Zary

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).