Reverse engineering PCI/PCIX/PCIe-424 configuration protocol?
Posted: Fri Jan 05, 2024 6:41 pm
Has anyone done this, or is aware of an open-source project that has done this? For example, a third-party configuration app alternative to MOTU's own "PCI Audio Setup" and/or "CueMix" apps?
I have a system with four 24 I/O interfaces attached to a PCIe-424.
As a Windows developer myself, I am aware that the PCI Audio Setup and Cue Mix apps both use the Windows API function DeviceIoControl() to communicate with the PCI card and connected interfaces. I can watch these calls (using an API monitoring program), but I have no idea what the format of the buffers of information sent back/forth is. I wonder if anyone has already figured it out? I had hoped the format might be deciphered by watching the DeviceIoControl() buffer contents whilst making configuration changes with the MOTU apps, but so far the format has not been easily apparent.
My interest here: I would love to determine (or obtain) the format and then write my own configuration app -- mainly to implement a "grid-style" UI for routing inputs/outputs, to make it much easier/intuitive (IMO) to use my bank of 24 I/O units as one big virtual patch bay.
Cheers for any info or thoughts.
I have a system with four 24 I/O interfaces attached to a PCIe-424.
As a Windows developer myself, I am aware that the PCI Audio Setup and Cue Mix apps both use the Windows API function DeviceIoControl() to communicate with the PCI card and connected interfaces. I can watch these calls (using an API monitoring program), but I have no idea what the format of the buffers of information sent back/forth is. I wonder if anyone has already figured it out? I had hoped the format might be deciphered by watching the DeviceIoControl() buffer contents whilst making configuration changes with the MOTU apps, but so far the format has not been easily apparent.
My interest here: I would love to determine (or obtain) the format and then write my own configuration app -- mainly to implement a "grid-style" UI for routing inputs/outputs, to make it much easier/intuitive (IMO) to use my bank of 24 I/O units as one big virtual patch bay.
Cheers for any info or thoughts.