These things: https://bitcointalksearch.org/topic/announcement-block-erupter-usb-195004
So ... this means I should get around to converting the last old driver to direct USB - the Icarus driver - so that then all the old drivers are direct USB.
Could anyone with a Lancelot or a Cairnsmore1 post a linux "sudo lsusb -v" of either of them for me please?
Thus when I have the code ready I can simply add the small definition required to detect each of them also.
Would also be good if (in a week or two when it's done) someone with each of the boards would be around to test the modified code.
I may also require a little more help with each if the USB chips are unusual in them or different to the Icarus (to get the correct initialisation commands) since I don't have either of those cards ...
Thanks to any who can help with this.
For a Cairnsmore1:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0403 Future Technology Devices International, Ltd
idProduct 0x8350
bcdDevice 8.00
iManufacturer 1 FTDI
iProduct 2 Cairnsmore1
iSerial 3 FTVIUPKW
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 101
bNumInterfaces 4
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 100mA
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 2 Cairnsmore1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 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
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 2 Cairnsmore1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 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 0x04 EP 4 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 2 Cairnsmore1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x85 EP 5 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 0x06 EP 6 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 2 Cairnsmore1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x87 EP 7 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 0x08 EP 8 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 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)
You might want to check for the code supporting dynamic clocking for Cairnsmore1 in bfgminer or the Modular-Python-Bitcoin-Miner. Cairnsmore1 with the dynamic clock firmware (maybe the most used out there) defaults at 150MHz although most of them can run between 210 and 220MHz (bfgminer limits it to 210 ). You probably don't want to allow more than 230MHz in the code to protect the hardware and might want to have a lower configurable max with a warning in the FPGA-README.
Cairnsmore1 have USB stability problems (seems really picky about the voltage stability from what I could understand): occasionally they disappear from the USB chain to reappear moments later (I have 2 here one does that less than once per week, the other several times per day).
bfgminer tries repeatedly to reopen the dev file (probably similar/same code that is in cgminer) until it reappears, MPBM regularly polls the USB chain for hotplugging new devices so it doesn't have any specific code to circumvent that.
bfgminer doesn't work correctly on p2pool with Cairnsmore1 (doesn't seem to restart work when asked to) and gets less hashes out of my 4xIcarus (compared to both cgminer and MPBM), so I use ModularPythonBitcoinMiner for all my FPGAs currently.
I'll pledge 1BTC for dynamic clocking support and the ability to reactivate a board that disappear and reappear (I probably won't get much out of my 2x Cairnsmore1, but it would simplify all my scripts if I could only use cgminer for all my rigs).