The stubborn Hercules
The problem - a misbehaving navigator knob
I recently picked up a used Hercules DJControl Inpulse 500 DJ controller on Vinted (opens in new tab). It arrived in one piece and looked great on the outside. To see how it holds up in action, I hooked it up to my computer, loaded the built-in mapping in the Mixxx DJ software, and twisted and pushed every knob and button on it.
When I got to the rotary encoder (opens in new tab) used for browsing between tracks, I got the feeling the controller was trolling me.
Turned it right: the cursor went down. Turned it left: the cursor went down. Right again: it stayed put. Left: it bounced up and down. The box mentioned some kind of assistant and an "AI" in the official software that figures out the "energy level" of each track, but I didn't expect it to disapprove my taste in music this hard.
It's not the most important control on the device, since you can easily change tracks on the laptop too, but I still didn't want to let it slide.
Troubleshooting - eavesdropping on the MIDI traffic
First, I wanted to find out whether the problem was in the Mixxx mapping or in the hardware.
The controller part of these DJ decks is really just a simple MIDI controller. Think of a basic MIDI keyboard or pad controller, just with pots instead of keys.
To listen in on the MIDI chatter going on in the background, I utilized the aseqdump (opens in new tab) Linux command from the alsa-utils (opens in new tab) package.
Its job is simple: it dumps the events arriving at the ALSA sound system to the screen in raw form. This way you can see exactly which CC messages the Hercules sends when you turn the knob.
Before I could ask it anything, I had to figure out which port the controller shows up on. That's what aseqdump -l is for. It lists which virtual or physical device is listening on which port:
[learnforeffect]$ aseqdump -l
Port Client name Port name
0:0 System Timer
0:1 System Announce
14:0 Midi Through Midi Through Port-0
36:0 DJControl Inpulse 500 DJControl Inpulse 500 MIDI 1
Now that we know its address is 36:0, we can finally look at the events it sends with aseqdump -p 36:0.
[learnforeffect]$ aseqdump -p 36:0
Waiting for data. Press Ctrl+C to end.
Source Event Ch Data
36:0 Control change 0, controller 1, value 1
36:0 Control change 0, controller 1, value 127
36:0 Control change 0, controller 1, value 1
36:0 Control change 0, controller 1, value 1
36:0 Control change 0, controller 1, value 127
36:0 Control change 0, controller 1, value 1
36:0 Control change 0, controller 1, value 127
36:0 Control change 0, controller 1, value 127
36:0 Control change 0, controller 1, value 1
36:0 Control change 0, controller 1, value 1
36:0 Control change 0, controller 1, value 127
36:0 Control change 0, controller 1, value 1
36:0 Control change 0, controller 1, value 1
36:0 Control change 0, controller 1, value 1
...
Here's what this output tells us: "the device on port 36:0 is sending MIDI CC messages on channel zero. The value of CC#1 is sometimes 1, sometimes 127". A value of 1 means "increase by one step", and 127 means "decrease by one step" (127 most likely comes from the signed binary representation of -1). That settled it: Mixxx was innocent, the hardware was the culprit. I was turning the knob slowly in one direction only, clockwise, yet it reported both directions.
The most common place you'll run into this type of rotary encoder is the scroll wheel of your computer mouse. Those often act up the same way: one flick of the wheel and the page scrolls both up and down. Usually it's not a faulty part. Over time the contacts oxidize, or collect enough dust and lint to mess with the timing. A simple cleaning does the job usually.
I figured it was worth a shot here too. Maybe that would be enough and I wouldn't have to reach out for the soldering iron.
Disassembly and repair
So I grabbed the device and put it on the operating table.
Whatever I was going to do, the encoder cap had to come off first. So off it came. If I'd been lucky, there would have been enough room between the encoder shaft and the housing to blow in some air and contact cleaner. As the conditional tense probably gave away, there wasn't.
I pulled off all the caps and removed the four Torx screws on each side of the center panel. I used a T9 driver for this.
With that, the center panel came right off. It's a thin, painted steel plate, BTW.

At first glance it looked like I hadn't made much progress, because there's a plastic plate of the same size under the metal one, but one small thing did change: I could now remove the diffuser ring around the browse knob.
This finally gave me full access to the encoder under the knob. I blew there some compressed air, gave the inside a quick spritz of contact spray, then turned and pressed it plenty of times. (If you try a similar repair, make sure to use a spray made for electronics that won't dissolve plastic and evaporates without any trace.)
Testing and reassembly
To see if anything changed, I plugged it back into the laptop, ran the same command again, and lo and behold: turning it right gave me a nice, consistent stream of ones.
[learnforeffect]$ aseqdump -p 36:0
Waiting for data. Press Ctrl+C to end.
Source Event Ch Data
36:0 Control change 0, controller 1, value 1
36:0 Control change 0, controller 1, value 1
36:0 Control change 0, controller 1, value 1
36:0 Control change 0, controller 1, value 1
36:0 Control change 0, controller 1, value 1
36:0 Control change 0, controller 1, value 1
36:0 Control change 0, controller 1, value 1
36:0 Control change 0, controller 1, value 1
...
(Turning it the other way gave nothing but 127s, but I'll spare you another wall of logs. You get the idea.)
The surgery was a success, so I quickly put it back together. Nothing exciting here, just the disassembly in reverse: ring back on, plate back on, screws back in, done.
Wrapping up
I've put quite a few hours of practice on it since then and tested every control thoroughly. It has kept the beats flowing reliably, without a single hiccup.
All in all, it feels like a sturdy, durable piece of gear, and there's no shortage of features either. It could be an ideal pick for beginner and intermediate DJs alike.



