Skip to content

nm2107/Pioneer-DJM-850-driver-reverse-engineering

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Pioneer DJM-850 driver reverse engineering

This repository contains the study of the Pioneer DJM-850 Windows driver and setting utility. The aim of this study is to understand how the computer and the device are communicating hover USB, in order to support it on a GNU/Linux system, as Pioneer do not plan to write anything for this platform.

The reverse engineering process and results are exposed in this repository.

Pioneer DJM-850-S

Table of contents :

Roadmap

  • Windows DJM-850 Setting Utility :
    • Study the discussion when plugging in the device to the computer.
    • Study the discussion when plugging out the device from the computer.
    • Study the Mixer input tab and determine the communication for the available options.
    • Study the Mixer output tab and determine the communication for the available options.
    • Study the ASIO tab and determine the communication for the available options.
    • Explain the autolaunch behavior of the Setting Utility.
  • Plugged in idle behavior :
    • Study the transmitted messages when the mixer is plugged into the computer without being used (neither by user nor opened GUI software).
  • DVS (Digital Vinyl System) usage on Windows :
    • Determine how the timecode signal is sent to the computer, and how the computer sends music signal to the mixer.
    • Determine how the left and right audio channels are modelized in the digital audio signal.
    • Determine how the USB 1/2, 3/4, 5/6 and 7/8 signal routing is modelized.
    • Determine how the framerate is modelized and used.
    • Determine how the audio buffer is used.

I have no plans to study the behavior of MIDI communications (I'm mostly interested into DVS), so feel free to submit pull requests with your results. However, by looking a the USB device specifications, the MIDI interface (communicating on endpoint 7) does not seem to be a Vendor specific class, so MIDI may already be supported out of the box.

Linux support

The Linux kernel was updated to add support for this mixer :

You can now use the mixer on GNU/Linux and specify the USB output options (as on the Mixer output tab of the Setting Utility) via the alsamixer command :

Alsamixer

Notice that the controls are displayed on the Playback view even if they should be on the Capture view, but they are effective. This little bug is known across DJM devices support for Linux and should be adressed.

Firmware and driver versions

This reverse engineering process has been made by using a Pioneer DJM-850-S mixer with firmware version 1.10 (2013.07.31), and by using the Windows driver version 1.500 (2020.07.28).

See the firmware and driver versions on the official download page.

Thank yous

Thanks to the following people and groups for their advices :

Legal notices

  • Pionner, the Pioneer logo, Pioneer DJ and the Pioneer DJ logo are registered trademarks of Pioneer Corporation.
  • Windows is a registered trademark of Microsoft Corporation.
  • ASIO is a trademark and software of Steinberg Media Technologies GmbH.

About

Reverse engineering the Pioneer DJM-850 Windows driver.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published