TL;DR: USB PID mismatch, see section Workaround below
I've gotten an Enttec Open DMX compatible USB-DMX device. It's based on an FTDI chip.
The device works without issues with QLC+ on Windows. I connect it via USB, QLC+ detects it, I can drive my lights, all is great.
Problem
When I tried the same under Linux however things were different. The device would not be discovered by QLC+. It would not show up on the DMX USB device list.
I checked dmesg, the device was detected and identified:
Code: Select all
[pią cze 21 00:03:10 2024] usb 1-4: New USB device found, idVendor=0403, idProduct=6001, bcdDevice=10.00 00:06:23 [1359/1941]
[pią cze 21 00:03:10 2024] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[pią cze 21 00:03:10 2024] usb 1-4: Product: FT230X Basic UART
[pią cze 21 00:03:10 2024] usb 1-4: Manufacturer: FTDI
[pią cze 21 00:03:10 2024] usb 1-4: SerialNumber: D30CCAIR
[pią cze 21 00:03:10 2024] ftdi_sio 1-4:1.0: FTDI USB Serial Device converter detected
[pią cze 21 00:03:10 2024] usb 1-4: Detected FT-X
[pią cze 21 00:03:10 2024] usb 1-4: FTDI USB Serial Device converter now attached to ttyUSB0
I looked into the files that QLC+ package installed on my Linux system and found there some udev rules and found this one for USB devices:
Code: Select all
# Generic FTDI Products
SUBSYSTEM=="usb*", ACTION=="add|change", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0666"
I checked the manufacturer ID: 0403, that checks out.
What about the product ID?
And here's the problem. QLC+ expects all FTDI devices to have a product id of 6001, but my interface has a product ID of 6015...
Workaround
Long story short, I've installed ftx-prog, an open-source programmer for the FTDI chips, and flashed a different Product ID to my interface using this command:
Code: Select all
ftx_prog --new-pid 0x6001
And now it works with QLC+ on Linux.
I don't know why QLC+ on Windows had no problem with the device reporting product ID of 6015 and accepted it regardless.
Or rather - I don't understand why it does not accept it on Linux.
May I kindly ask for some kind of fix