BCF2000 is a good, cheap MIDI controller manufactured by Behringer. It can be used (and in fact is widely used) in live music industry, either by light technicians, DJs or musicians.
So one day I got a request to do lighting in a live show and needed my BCF2000 that was idle for a couple of months. Surprisingly, I came across a strange issue: some buttons were triggering other ones, causing multiple MIDI commands to be sent to the computer when I pushed a single button.
After tearing it down, I searched for bad capacitors but with no luck. Everything inside looked cool. The next step was to search for schematics online. Again, no luck for me. There are no electronic schematics available for these desks.
With multimeter, oscilloscope and a solder iron, let’s do some reverse engineering on the unit!
At this stage, my only choice was to grab my old multimeter and try to reverse engineer the schematics of the buttons interface. The silkscreen on the PCB was unexpectedly verbose and helped through the process.
There are few ways to interface a micro-controller with several buttons, being the keyboard matrix method one of the most used. This was the case of BCF2000 where buttons are scanned sequentially in columns and several rows are read in parallel as you can see in the following picture.
The transistors used to scan through the columns are also used to drive the LEDs on the buttons and the LCD screen on the top board.
The first thing to check was the transistor activation signals. They must be time multiplexed, so that only one transistor is activated at a time. With the oscilloscope, it was verified that every transistor was being activated and in a correct time.
Then I found that the buttons (both in the main board and in the top one) with the problem all shared the same transistor… Hmmm… Checked the collector of that transistor and the others and in fact the signal was very different. Although it was being activated on the correct time, the voltage remained higher that the other transistors when in OFF state. The obvious test was to change the transistor (BC327-25) with a new one… The problem persisted!
The next move was to disconnect the top board from the main one while watching the signal on the collector of that transistor. The OFF level dropped to “normal” values as soon as the board is disconnected. Testing the “faulty buttons” of the main board, now the problem has disappeared!!
Ok, so definitely the problem was somewhere in the top board.
Inspecting the top board
Down to the top board, all the electronics on the main board (flip-flops, transistors, capacitors, etc) were out of my suspections.
So this top board consists in a bunch of pushbuttons, indication LEDs, dual LED displays, rotary encoders, parallel in – serial out ICs and some discrete components, including the diodes of the buttons. The 2 ICs (74HC165D) were being used to catch the rotary encoders signals and send them in serial to the main board.
The first thing was to test continuity between the output of a faulty button and the output of a (wrongly) triggered button. No connection between the two.
I knew that diodes play a very important role in the correct identification of pressed buttons. Therefore, I tested every single diode for forward and backward continuity. Bad luck, the diodes were all ok
At this point, I was starting to feel frustrated by having such a simple board in front of me and not being able to track the origin of the problem.
With absolutely no hope, I started to inspect the 7 segments LED displays. You can do that by selecting the continuity check mode in the multimeter and activating a segment at a time. The polarity you test will make it possible to track the common side of the LEDs (anode or cathode) and the combinations will lead you the common pin numbers. It turns out that the BCF2000 includes two dual-digit (with dot point) Common-Anode (pins 5 and 10) multiplex drive – 10 pins total (see picture below).
Testing each segment individually revealed a problem in the left display: two segments were dead. As these were connected to the same matrix of the buttons (in fact one of the common pins shared the same transistor of the faulty column), I carefully removed the left display and ran the tests with the top board connected.
Then the second part came: find a display that can replace the faulty one as the references printed in the display lead to fake Chinese sites.
If you come across this problem, I’ve done all the hard work for you: Everlight ELD-426USOWA meets the strange pinout and dimensions of the display. I ordered some from Mouser and am currently waiting for them. (I’ll update as soon as I test it)
The BCF2000 is now up and running (for now, with just the last 2 digits)…
I received the LED Display from Mouser and unfortunately the pins are not as long as the original one. The result is on the photos below. If you look from the top, you won’t notice a difference… At least, IT’S READY TO HIT THE ROAD!