Chasing the Sony CX20084 speed chip for D6C walkman

Discussion in 'Tech talk' started by rcpilot23, Jan 17, 2022.

  1. LeKos

    LeKos New Member

    Messages:
    5
    Trophy Points:
    3
    Location:
    Russia, Moscow
    Here is corrected gerber files, as I promised. And some little more detailed W&F measurements with quartz lock on, and pictures of replacement board from infrared camera after playing a tape about half on an hour. BOM and assembly drawing is not ready yet, will post them later with installation instruction witch I'm currently working on.
     

    Attached Files:

  2. LeKos

    LeKos New Member

    Messages:
    5
    Trophy Points:
    3
    Location:
    Russia, Moscow
    Thank you! Actually, I have two units - D6 and D6C, and W&F is the same on both of them, mayby slightly better on D6 because of it's small usage. D6C has significantly signs of wear - I think, it's really been used by journalist, because pause button surface is polished.
     
    Hn14197 likes this.
  3. -LV-

    -LV- New Member

    Messages:
    29
    Trophy Points:
    3
    Location:
    EU
    Great work, thanks for sharing :)
     
    Hn14197 and LeKos like this.
  4. Nicu Rusu

    Nicu Rusu New Member

    Messages:
    17
    Trophy Points:
    3
    Location:
    london
    Anyone Screenshot_20250801_181642_eBay.jpg looking for an original chip?:)
     
  5. Valentin

    Valentin Well-Known Member

    Messages:
    1,998
    Trophy Points:
    113
    Location:
    Europe
    That's funny, that sealed IC has only sentimental value if one wants to collect it. Is there anyone collecting NOS parts (without the intetion of ever using it) ? I wonder...
    For everyone else, donors can be bought much cheaper (remember donor doesn't have to be a D6C), then it's the new Chinese board alternative and the BA6301 solution presented by @LeKos.
    With 3 significantly cheaper options available, I honestly fail to see any value at all in this listing apart from potentially being a collector's item.
    Even a couple of years ago when I could still get these genuine NOS CX20084 ICs, they used to cost less than 1/10 with shipping included.
     
    Last edited: Aug 1, 2025
  6. LeKos

    LeKos New Member

    Messages:
    5
    Trophy Points:
    3
    Location:
    Russia, Moscow
    Making an instruction actually took more time than I suspect. Now I think it`s ready, but maybe I missed something, so if you have any questions, I will try to help. So…

    Desolder:
    Components within blue line.
    Wires from motor (red and white).
    Wires from FG coil.
    Brown wire #15.
    Blue wire #17.

    Also remove R603, R604.
    R604 need to be replaced by 300k resistor, R603 need to e replaced by 330k resistor.

    Existing wires soldering:
    Red wire from motor solder to the same place as brown wire #18.
    Wires from FG coil connect to "FG+" and "FG-" pads on replacement board.
    Blue wire #17 and brown wire #15 connect to "Blue" and "Brown" pads on replacement board.
    White wire from motor connect to "M-" pad on replacement board.

    And there are some new wires needed:
    Wire from "GND" pin on replacement board solder to the same place as black wires #4, 25, 43, 44.
    Wire from "+10V8" pin on replacement board connect to the same place as orange wires #14, 11.
    Wire from "+5V" pin on replacement board connect to pad for pin 5 of IC601.
    Wire from "To pin 4 of CX20084" connect to pad for pin 4 of IC601.

    And you need to add a 270p cap between pins 5 and 8 of IC701 on Auto OFF board for proper working of quartz lock mode.

    After installation adjust RV603 with speed tune set to on and RV602 on center position.

    Adjust RV601 according to minimum W&F with speed tune set to off. This is the same adjustment as described in "Tape speed adjustment" in service manual, but I`m not sure about proper speed. In my unit, with "Tape speed" solder joint removed, I have speed about 3240 Hz on 3000 Hz test tape. Be careful - instead of original, in my current schematic this adjustment have smaller area, in witch PLL lock works properly and stable. If you can't obtain stable small W&F, try to increase R715 on Auto OFF board, decreasing additional capacitor's value from 270p. I have the same stable results with R715 changed to 3.3 MOhm and 120p capacitor. Also you can try to increse a value of R603 and decrease RV601 - theoretically it should simplify the adjustment.
    All of this is more tricky than original procedure, and I can`t guaranty that it will work. In my case it works perfectly, but if in you case it don't, just replace R603 by 300k, remove "Tape speed" solder joint and adjust speed by RV601 to obtain correct tape speed. Quartz lock will be disabled, but unit should work stable.

    In attachment there are pictures with instructions, BOM and gerber-files. Gerber files are the same as before, attached them here so that everything - instructions and gerbers - was in one place.
     

    Attached Files:

  7. Chip Spencer

    Chip Spencer New Member

    Messages:
    8
    Trophy Points:
    3
    Location:
    Florida
    I recently purchased a wm-d6c specifically for a restoration project when I retire in July. It is exhibiting the speed related issues that point to the CX20084 I being bad. I won't know for sure until I dig into it. But, I prefer to be prepared for the inevitable. Is anyone producing these boards or have one they could sell me? I looked up the guy on ebay who used to sell these modules, and he's not coming up on a seller search. Conversely, if anyone who regularly refurbishes these units, do you have an actual CX20084 that they could part with? I've got the full rubber kit and pinch roller coming from FixYourAudio. And some alignment tapes coming.

    Thanks.
     
  8. Valentin

    Valentin Well-Known Member

    Messages:
    1,998
    Trophy Points:
    113
    Location:
    Europe
    There is also a Chinese board available, but you need to remove quite a few components from the board to install it.
    It's available here, you will need a proxy like SuperBuy: https://www.goofish.com/item?&id=766454209480

    This is a something you can buy directly, but a bit harder to install compared to the BA6301.
    Not sure if this BA6301 board is available to buy (you can ask) or you need to make one yourself.

    I am also considering to design something with discrete components, but that would need to be tested first. So it may take a while.
     
  9. Chip Spencer

    Chip Spencer New Member

    Messages:
    8
    Trophy Points:
    3
    Location:
    Florida
    I'm actually tinkering around with the STM32G0B1 microcontroller as a possibility.
     
  10. Valentin

    Valentin Well-Known Member

    Messages:
    1,998
    Trophy Points:
    113
    Location:
    Europe
    There are many possibilities of implementing this, including a digital control loop with microcontroller.
    With this approach there are some things that have to be taken into consideration: it can't run a bootloader (the time to load it would be too high) and the code itself must be efficient not creating any delays in the control loop.
    It would be nice to implement such a solution, but in my opinion it's not the easiest approach (despite it looks that way at first glance).

    Found another interesting Chinese replacement, different than the first: https://www.goofish.com/item?&id=1052384295216
     
  11. Chip Spencer

    Chip Spencer New Member

    Messages:
    8
    Trophy Points:
    3
    Location:
    Florida
    I'm looking at the STM32G0B1KBT6. The STM32G0B1 is an exceptionally fast-starting microcontroller for this application. From the moment power reaches the VDD pin, the internal HSI16 oscillator — a 16 MHz RC oscillator built into the silicon — begins running within microseconds, requiring no external crystal and no oscillator stabilization wait time. The PLL locks onto HSI16 and ramps the core to 64 MHz in under 200 microseconds. From there, the bootloader checks the BOOT0 pin state, confirms the flash is not empty, and jumps to the user application in one clean step — no negotiation, no USB enumeration delay, nothing that adds meaningful time.

    The servo initialization code configures TIM2 for FG input capture, sets up the DAC output, enables the ADC for pot scanning, and enters the main control loop. All of that together — power-on to active servo loop running — takes approximately 2 milliseconds.

    This matters because the WM-D6C's capstan motor M901 takes roughly 300 milliseconds to spin up from rest to operating speed after the play button is pressed. The STM32 is therefore sitting in its control loop, reading FG pulses, and actively managing motor current for the final 298 milliseconds of that spin-up ramp — the most critical phase where the original CX20084 was applying servo correction to achieve a smooth, flutter-free lock to target speed. The replacement not only matches the original's behavior, it improves on it: the digital PLL can apply a precisely tuned PI control algorithm from the very first FG pulse, whereas the analog CX20084 required its own RC time constants to settle.

    The net result is that tape speed locks to the correct value faster and holds it more tightly than the original circuit, with no perceptible delay from power-on.
     
    Deb64 and Valentin like this.
  12. Chip Spencer

    Chip Spencer New Member

    Messages:
    8
    Trophy Points:
    3
    Location:
    Florida
    The firmware runs directly on the metal — no operating system, no HAL abstraction layer, no middleware stack consuming clock cycles and flash between the control loop and the hardware registers. Every microsecond of execution time is accounted for and intentional.

    The core servo loop is written in minimal C, compiled with GCC for ARM with full optimization enabled (-O2 or -Os), which on a Cortex-M0+ produces tight, predictable machine code with none of the overhead that higher-level abstractions introduce. The C code maps directly to the STM32G0B1's peripheral registers through simple pointer dereferences — writing a value to the DAC output register, for example, is a single 32-bit store instruction in the compiled output, executing in one clock cycle at 64 MHz. There are no driver layers, no callback chains, no interrupt-driven peripheral frameworks sitting between the algorithm and the hardware.

    The timing-critical sections — specifically the TIM2 input capture interrupt service routine that timestamps each FG pulse and computes the instantaneous period — are written to be as short as possible. The ISR reads the capture register, computes the period delta, updates the PI accumulator, writes the new DAC value, and exits. On a Cortex-M0+, interrupt entry and exit overhead is fixed at 15 clock cycles. At 64 MHz that is 234 nanoseconds of unavoidable latency.

    The actual ISR body adds perhaps another 20-30 instructions — call it 500 nanoseconds total from FG edge to updated motor drive voltage. The capstan motor and its mechanical load have a time constant measured in tens of milliseconds.

    The servo is therefore responding roughly 50,000 times faster than the system it is controlling, which is why the digital implementation achieves tighter speed stability than the original analog circuit.

    The PI coefficients — the proportional gain Kp and integral gain Ki — are stored as fixed-point integers scaled to avoid floating point entirely. The Cortex-M0+ has no hardware floating point unit, and a software float multiply would cost 20-40 cycles versus a single-cycle integer multiply. Using Q15 or Q16 fixed-point arithmetic keeps the entire control calculation inside 10-15 clock cycles, maintaining the ISR's deterministic execution time regardless of operating conditions. This is the same approach used in professional motor control ICs — it is not a compromise, it is the correct implementation for this class of problem.

    The USB CDC stack for live tuning runs entirely in the main loop between servo interrupts. It is non-blocking, checking for received characters and updating PI coefficients or target period registers in place. Because the servo loop runs from hardware interrupts and the USB handling runs in the background main loop, there is no scheduling complexity — the control loop always preempts, always runs on time, and the tuning interface gets whatever cycles are left over, which at 64 MHz is the vast majority of them.

    The result is a firmware image that fits comfortably within 32 KB of the 128 KB flash — leaving the remaining 96 KB entirely unused — and a RAM footprint measured in hundreds of bytes rather than kilobytes. The machine runs one job, runs it perfectly, and does so with the kind of deterministic real-time behavior that a 1990 Sony professional field recorder deserves.
     
    Deb64 and Valentin like this.
  13. Valentin

    Valentin Well-Known Member

    Messages:
    1,998
    Trophy Points:
    113
    Location:
    Europe
    Sounds very good, I think what you stated is an excellent starting point. If you don't mind, when done please share the project with the community or sell the complete PCB.

    One other thing I think is important is external component count and MCU package footprint. The LQFP32 is a bit big for this application, BGA being a better option but that would require automatic assembly.
    The important aspect is for the replacement PCB to be as small as possible and requiring as little modifications to the original PCB as possible (so even DIYers can install it).

    It is clear that one way or the other, we will need reliable alternatives to the original CX20084, since those are no longer viable from a cost point of view.
    This MCU solution you proposed seems by far the best one as far as performance goes, if it can tick the other boxes (cost, footprint, ease to install) it is the winner.
     
    Chip Spencer likes this.
  14. Chip Spencer

    Chip Spencer New Member

    Messages:
    8
    Trophy Points:
    3
    Location:
    Florida
    I have set up a Github project for this. I have some information in place including a block diagram and a 30 page module Datasheet.

    This is a fully open source and open hardware project. Schematics are being developed in KiCad and will be made available when I have them roughed in.

    I truly would like everyone to take time to look thru the repo and comment, offer suggestions and such. Much of it is placeholder, but the block diagram and module datasheet are available now.

    https://github.com/ChipCreates/wmd6c-servo
     
    Last edited: May 29, 2026
    -LV- and Valentin like this.
  15. Chip Spencer

    Chip Spencer New Member

    Messages:
    8
    Trophy Points:
    3
    Location:
    Florida
    There's only 2mm difference in chip dimensions between the two. Additionally, for the DIYer who likes to assemble their own boards, the tiny BGA chip is a serious challenge.
     
    Valentin likes this.
  16. Hn14197

    Hn14197 New Member

    Messages:
    11
    Trophy Points:
    3
    Location:
    Vietnam
    Let's be real here, many folks overhype microprocessors, thinking that flashing a perfect PID script will automatically make an MCU crush the D6C’s vintage analog chip. But the truth is, there are fatal hardware flaws baked into the laws of physics that no amount of genius coding can ever fix. First off, an MCU needs a crystal oscillator ticking away at Megahertz speeds to function, and that high-frequency switching creates a nasty cloud of digital EMI. The D6C's playback head is basically a super-sensitive antenna; it will suck up that digital noise and dump a permanent high-pitched whine straight into your headphones—and no line of code can magically filter out physical RF interference. On top of that, while the stock analog circuit feeds the motor a silky-smooth continuous current, a digital chip has to break everything down into "steps," even if you throw a high-res 16-bit DAC at it. When those digital steps hit the D6C's coreless motor, which is insanely twitchy and lacks any mechanical inertia to smooth out the bumps, the motor ends up micro-shuddering constantly, blurring the soundstage and stripping away the details. Finally, you can't beat the near-zero latency of analog. An MCU always takes a finite amount of time to wait for the FG edge, trigger an interrupt, crunch the math, and output a signal. That inherent processing lag means the digital loop is always playing catch-up, causing microscopic speed hunting that code can never outrun. Long story short, forcing a noisy, "stepped" digital brain to drive a fluid, ultra-sensitive analog motor is a conceptual mismatch—the sonic failure is a flaw of physics, not a bug in the software.
     
    Last edited: Jun 17, 2026 at 5:13 AM
  17. Valentin

    Valentin Well-Known Member

    Messages:
    1,998
    Trophy Points:
    113
    Location:
    Europe
    While there are some things that have to be taken into consideration when designing a digital control loop, the proposed design adresses all of them.
    Yes, at the end of day, some of the limitations are mechanical and one cannot bring W&F to zero by using a better servo. But this is also not the point.

    In my opinion, main points of any new design is to satisfy some criteria at the same time:
    1. Have a reasonable cost (30-50$). If it costs as much as a CX20084 chip or a donor (or more), its only advantage will become higher availability.
    2. Requiring minimal modifications to the original board. If you need to desolder 20 components and 10 wires just to install it, makes the repair involved and costly (if someone else is going to do it for you).
    3. Having similar W&F, speed stability and drift performance to the original servo. Better is a bonus, but not a requirement.

    The EMI thing is something that has to be taken into consideration. But this can be adressed with careful PCB design, it's not an inherent limitation.

    As far as DACs go, keep in mind that despite the typical output is a staircase-like signal, this gets filtered by an anti-aliasing filter, making the signal silky-smooth.
    In practice, even PWM control will work with careful design, but there will be more EMI-related problems in that case.

    So have to disagree, a digital control loop isn't inherently flawed. It has many advantages (mentioned on the GitHub project on digital-pll-servo.md):
    - zero drift (parameters are stored in flash, don't depend on component values);
    - loop parameters can be changed by re-flashing the microcontroller, hence tuning for motor wear etc. becomes just a firmware update;
    - higher update rate, higher resolution;
    Only thing that can be argued in this regard is cost vs how much these improvements are really needed (since original servo already obtains excellent values).
    If these improvements can be brought without added cost (same cost as a Chinese replacement PCB for example), then it's prefferable.
    However adding a lot of features, such as USB-C with PD will add significant cost. The proposed IP2721 costs $10 without considering any of the extra components needed.

    As a sidenote, reverse polarity protection does exist in the Chinese modules. Protection circuit can be added to existing unit with good CX20084, hence why wouldn't consider that a significant improvement.
    Also the CP304 DC-DC converter is used for part of audio circuits only (preamp, mic amp, muting, line amp, rec amps) and has nothing to do with the motor servo (which operates on 6V).
    It's not true that this is a potted module which cannot be repaired, it's a rather simple repair which is prefferable to replacing it (usually only one NPN transistor and one inductor fail). https://fixyouraudio.com/wm-d6c-dc-dc-converter-fixed/
    However using that space for the new module can be a good compromise if it adresses point 2. But then adding a new DC-DC will add even more cost.

    At the end of day it really comes down to scale. If such project is meant to help a lot of people, it has to meet the 3 criteria. If it's a one-off project which only some tech savvy will do, performance is the only thing that matters.
     
    Last edited: Jun 17, 2026 at 10:06 AM

Share This Page