Jump to content
Tuts 4 You

Question about rebuilding a windows xp Media class driver for windows 11.


12264447666.william.ashley

Recommended Posts

12264447666.william.ashley

So I have an old hardware device that was built for windows 2000 / xp - it still is almost as new. Akai MPD16 however the device doesn't work via USB only through its midi 5 din cables.   I've looked at the .inf and .sys, and the .inf seems easy enough to modify from win32 xp to windows 11 as not much has changed for driver install locations as far as I am aware. 

I've taken a look at the .sys in CFF explorer and Hex Editor Neo, and chatted with chatgpt and provided data on it.

My understanding is that the .sys file is split into different sections and involves sending midi instructions part of the mpd16 midi sysex instructions that seem more or less standard akai midi sysex hex instructions.  

There are things like C:\Akai\Z48\tools\USBCode\DriverSourceV2\objfre_wxp_x86\i386\BulkUsb.pdb   and a registry entry for the device and its parameters.     Also a big ascii readable blurb  nul s removed 

�DhD

ExAllocatePoolWithTagExFreePool�ObfDereferenceObject�KeWaitForSingleObjectwIoIsWdmVersionAvailable�KeSetEvent7ExfInterlockedInsertTailList KfReleaseSpinLockKfAcquireSpinLock:ExfInterlockedRemoveHeadList�KeInitializeSpinLock�IofCompleteRequestKeQueryPerformanceCounter

PsTerminateSystemThread=InterlockedDecrement�KeClearEvent�KeWaitForMultipleObjectsOIoBuildSynchronousFsdRequest?InterlockedIncrement�KeInitializeEventaZwClose�ObReferenceObjectByHandlePsCreateSystemThreadvZwSetValueKey9RtlInitUnicodeStringxIoOpenDeviceInterfaceRegistryKey�IoSetDeviceInterfaceState{IoRegisterDeviceInterface4RtlFreeUnicodeStringSIoCreateDevice�IofCallDriverMIoBuildDeviceIoControlRequestKIoAttachDeviceToDeviceStack]IoDeleteDevice_IoDetachDeviceeIoFreeMdldIoFreeIrp5RtlGUIDFromStringPIoCancelIrpNIoBuildPartialMdlHIoAllocateMdlGIoAllocateIrpBRtlQueryRegistryValues�memmove�wcslenPoCallDriverPoStartNextPowerIrpPoRequestPowerIrpNTOSKRNL.EXEHAL.DLLPRtlUnwindUSBD_ParseConfigurationDescriptorUSBD_CreateConfigurationRequestUSBD_GetUSBDIVersionUSBD.SYS�KsPinPropertyHandler�KsTopologyPropertyHandler�KsPropertyHandlerks.sys�0�  H`E 4VS_VERSION_INFO���?�StringFileInfo\040904b0v/CommentsAKAIpro MPD16 MS Windows USB Driver for akSys.LCompanyNameAKAI Professional LLCJFileDescriptionMPD16 USB Driver0FileVersion2.0.0.0:

InternalNameMPD16USB.sys�.LegalCopyright(C) Copyright 2000-2006 AKAI Professional LLC(LegalTrademarksB

OriginalFilenameMPD16USB.sys PrivateBuildf#ProductNameAKAI professional MPD16 USB Driver4ProductVersion2.0.0.0 SpecialBuildDVarFileInfo$Translation �            

 

I am guessing the hexcode that is gibberish is probably the insturction sets that can be disassebled -- seems like instructions for the electronics and midi instruction type template as the code used seems to be the akai sysex that is interacting with the device.

I am wondering what all is involved in updating the driver to 64 bit from 32 bit and how this would be doable to update the driver from windows xp x86 32 bit to windows 11 x64 64bit.   I have attached the inf and sys files. This page explains it a bit more Inside the Akai MPD16 USB/MIDI Pad - R-Massive  https://zine.r-massive.com/inside-the-akai-mpd16-usb-midi-pad/

 

Curious if anyone can provide some information on what resources and information I would need to transfer the 32 bit code to run in windows 11 either as 32 bit code or by updating it to 64 bit code. 

Seems that the assembly that shows itself when disassembled is maybe just midi instructions more or less not sure. I don't have much knowledge of ASM. Running disassembler on this in Neo gives all the asm data so it doesn't seem to be "made difficult" by being encrypted, I am just not sure how to map the assembly instructions in the file from windows xp instructions to windows 11.   Also not sure if things like the pbd module snippets etc.. have changed. 

 

What all needs to be changed to update a win2000/xp driver to modern one. Like the change of chicago to windowsnt etc..  also objfre_wxp_x86\i386\BulkUsb.pdb not sure if i386 intel sets would still be used in windows 11 still but I would think the pbd is probably more or less the same.

 

Anywho any infos is much appreciated as I'd really like to get this device working through its USB connection again as hardware wise it is still working and works using its midi out into another devices midi in but it makes no sense why this device doesn't have drivers as it seems technically simple to make a new driver for it, nothing in the device seems difficult like I am brand new to reverse engineering and most of this stuff seems clear I just lack the technical skills and knowledge to translate the driver from 32bit xp to match windows 11 but companies write new drivers all the time to update devices to new versions of windows this can't be super complex.

 

I think this "might" be the controller.

24AA01/24LC01B 1K I2C™ Serial EEPROM (microchip.com) http://www.microchip.com/downloads/aemDocuments/documents/MPD/ProductDocuments/DataSheets/24AA01-24LC01B-24FC01-1K-I2C-Serial-EEPROM-20001711N.pdf

 

MPD16USB.inf MPD16USB.sys

Edited by 12264447666.william.ashley
Link to comment
Share on other sites

2 hours ago, 12264447666.william.ashley said:

I am wondering what all is involved in updating the driver to 64 bit from 32 bit and how this would be doable to update the driver from windows xp x86 32 bit to windows 11 x64 64bit.

I'll try to give you a brief summary of what would be involved in that process.

Step #1 - understanding how the existing driver works.
The page you mentioned ( https://zine.r-massive.com/inside-the-akai-mpd16-usb-midi-pad/ ) explicitly tells that there is no driver for modern OS. It gives a really high-level overview about how the driver communicates with the software, but - as always - devil is in the details.
So, one will need to disassemble the driver (it contains ~100 methods), decompile each method to obtain approximate C/C++ code and then make sense of it. After making sense of it, a proper documentation should be made.
Also, one will need to debug parts of the driver to confirm the analysis. For that, a functioning Akai MPD16 device is very much required.
There are ~100 methods of different size and complexity in the driver, and decompiled code is ~3000 lines of pseudo-C code. So I would estimate this step could take around 40 hours.

Step #2 - implementing the same functionality in a new 64-bit driver.
Considering how much the operating system architecture has changed in last 20 years, it will likely be necessary to write a new driver totally from scratch, using analysis from step #1.
In new operating systems, a driver must pass very strict security checks from Microsoft and must be signed with a special digital certificate that only few companies have access to.

In a very best case scenario, you're looking at another 40 hours of development + certification process.

Step #3 - even if you get the driver working, the utility software might be incompatible with Windows 10/11 as well.
Since you didn't mention the software at all, I can't make even a rough estimate of that step.
 

To sum it up - you will need to find a person with a very specific knowledge in the driver development field, that specific hardware, and ready to invest 80-200 work hours.
Given the average salary of Windows Driver Developer in USA is ~110k/year, you're looking at the minimum project costs of $10k.
That old piece of hardware is just not worth it.

 

Of course, you might get lucky and find someone who'll be happy to do that for free in his/her spare time just for fun.
Good luck with that! :)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...