The board provides the required interface but leaves off just short of a "full" product. The component designations of the resistors are covered by the parts. Seeing how there is plenty of room on the board, the designators (R1, R2, D1, ...) should be put somewhere you can see them when the parts are installed. Sometimes you're working in a 3.3V system and the resistor values for that environment (47 ohm) for the series resistors on the MIDI output would be a nice-to-have. I don't know that this could hurt performance, but there is a pull down resistor sometimes used in circuits for the provided opt-isolator pulling down that unused pin; I added a 10K pull down to pin that for good measure. Some of the resistors, with a fairly sharp bend in the leads, don't fit easily into the PCB. Again, with room on the board, the spacing should be ample for the insertion of the parts and not cramped for no reason.
I am currently trying to determine why the udev rule that I downloaded isn't working. It is not creating the symlink, which doesn't bother me too much (just set HRNGDEVICE=/dev/ttyACM0 in /etc/default/rng-tools). But because the rule does not appear to be firing, it isn't running the stty command, so the speed is very low.
user@host:~$ sudo dd iflag=fullblock if=/dev/ttyACM0 of=/dev/zero bs=64 count=4096 2340+46 records in 2340+46 records out 151223 bytes (151 kB) copied, 11.4995 s, 13.2 kB/s
You can see I took out the SYMLINK and I added MODE because of a suggestion by atoponce in the ubld.it forum. I thought it might help to remove this "Couldn't open device" in my lsusb output, as well as for some future work, but it didn't help with lsusb.
user@host:~$ ls -lsa /dev/ttyACM0 0 cr--r--r-- 1 root dialout 166, 0 Jan 20 10:07 /dev/ttyACM0
Here's the relevant part of my LSUSB -v output.
Bus 002 Device 002: ID 04d8:f5fe Microchip Technology, Inc. Couldn't open device, some information will be missing Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 2 Communications bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x04d8 Microchip Technology, Inc. idProduct 0xf5fe bcdDevice 3.02 iManufacturer 1 iProduct 2 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 67 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 2 Abstract (modem) bInterfaceProtocol 1 AT-commands (v.25ter) iInterface 0 CDC Header: bcdCDC 1.10 CDC ACM: bmCapabilities 0x02 line coding and serial state CDC Union: bMasterInterface 0 bSlaveInterface 1 CDC Call Management: bmCapabilities 0x00 bDataInterface 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x000a 1x 10 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 Unused bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0
Response from ubld.it Electronics | Jan. 26, 2016
The symlink is there because you may have multiple ttyACMx devices so we use the symlink to update which port it is upon insertion. It's fine to do it directly to the ACM0 device, but if you plug in other ttyACM0 devices that enumeration may get skewed.
Thanks for the update on the ^M issue, we fixed it before but it snuck back in somehow. I've updated the link on the web site to a non ^M version.
This device works perfectly once you make your computer see it. That's the problem. One requires a .inf file for Windows to know what to do with it, but although you can find a reference to such a file hidden in the depths of the "manual," the file itself is not included. I obtained one from from the company that makes the device when I complained about it. They were very quick to respond, and most of my troubles were, in fact, "pilot error," but they were kind about it.
I recommend this product without reservation. You do to need to know what you are doing, though, or be willing to find out.