Bluetooth Minidisc Remote

From Hackstrich

The Bluetooth Minidisc Remote will be a remote for portable Sony MD players that also transmits their audio over Bluetooth.


  • 2023-03-21: Stencil and PCBs arrived back in October/November, then had no time to work on anything. Parts all ordered, display has arrived from Mouser and the rest of the parts should be here today from Digi-Key.
  • 2023-09-30: Corrected a few board outline issues, did CAM runs and submitted to OSH Park and OSH Stencils. Started writing firmware skeleton.
  • 2023-09-24: Completed silkscreen and ran through an initial checklisting, want to take a close look over everything (especially the BGA footprint) before I start gerbering.
  • 2023-09-23: Completed routing the board over the past week, still need to finish silkscreen and run through the checklist.
  • 2023-09-16: Swapped out the fuel gauge IC, as the original one was in a WLP-9 package which is way too small to deal with. Completed initial component placements on PCB, started routing.
  • 2023-09-10: Completed the last footprint, started laying out components on the PCB
  • 2023-09-09: Completed most of the footprints.
  • 2023-09-06: Checklist run without any changes require. BOM checker run against DigiKey BOM, found one mismatch which has been fixed. Ready to start footprinting.
  • 2023-09-05: Added attenuation into the audio path, and added all required test points. Still need to run the checklist on the schematic, then will be time to start drawing footprints for a few parts that don't have them yet.
  • 2023-09-04: Fixed several design issues with play/pause logic, added the BT module, codec, and a fuel gauge, and all the misc. glue to stick it all together. Schematic and design are mostly done at this point, next time I'll add the test points and clean up the schematic layout, then it'll be done and ready for checklisting. Note for next time: I have line-level audio going right into the codec, probably need to attenuate that!
  • 2023-09-03: Finished design/schematic for all UI inputs, including the weird/complicated logic for the play/pause button and the hold switch, which had to get changed to DP3T to handle play/pause properly. Need to re-review the play/pause button's logic with all the level shifting and everything tomorrow to make sure it all looks reasonable.
  • 2023-09-02: Finished schematic capture/BOM for the UI parts. Re-architected everything for separate MCU and BT TX, as the integrated one didn't end up having enough I/O to be practical. Now using a PIC18 for control and a TI chipset for Bluetooth. This also comes with better power specs overall and eliminates the 3V rail, everything now runs on the 1.8V rail except the OLED drive voltage of 16.5V.
  • 2023-08-30: Finished schematic capture/BOM for the charging circuitry. Made good progress starting to lay out the schematic for the logic.
  • 2023-08-27: Figured out the shutdown requirements and put together the design/schematic for the 3 rails' converters plus most of the charging circuitry.
  • 2023-08-22: Started putting ideas together after getting back from a trip where I used a Bluetooth transmitter dongle connected to an RM-MC11EL a whole bunch.

Design Goals

  • Same basic functionality you'd have on a regular Sony remote, though with an OLED screen
  • Ability to remap buttons, if you want to use it with different portables or you want different controls in different places
  • Ability to lock ("hold") all the controls except volume, since I've always wished remotes allowed this
  • Bluetooth audio transmission to BT Classic endpoints (A2DP SBC)
  • Ability to play/pause the MD device via the play/pause button on the Bluetooth receiver
  • Transmitter will stop sending audio when nothing is playing (rather than sending silence like 3.5mm BT transmitters do)
  • At least 8 hours of battery life on a charge hopefully (since with Bluetooth and an OLED, the remote will need its own internal battery)
  • Custom 3D-printed enclosure that will hopefully not be that much bigger in L/W than the flat rectangular remotes for Kenwood portables, though will be a bit thicker because of the amount of stuff I'm trying to fit in

Design Overview

  • Microchip PIC18LF47K42T MCU
  • Panasonic PAN1326C Bluetooth transceiver module (based on TI CC2564C)
  • Fujitsu ELW2106AA OLED display
  • DA7218 codec chip
  • Internal battery, charged via USB-C

Power Planning


  • Input power
    • Li-poly pack, 3.0 - 4.2V
  • OLED
    • OLED Drive - 15.5 - 17.5V (16.5V nom)
    • Logic - 1.65 - 3.5V (3V nom)
  • MCU
    • Logic - 1.8 - 3.6V
  • BT
    • VDD_IN - 2.2 - 4.8V (connect direct to battery, shutdown draw is 1uA)
    • VDD_IO - 1.62 - 1.92V (1.8V nom)
  • Codec
    • Core - 1.7 - 2.65V
    • IO - 1.5 - 3.6V

Required rails:

  • Logic - 1.8V (shut down when not connected to a MD device, fed via TLV62568 buck converter)
  • OLED - 16.5V (switchable, fed via AP3012 boost converter)
  • Vremote - 2-3V (supplied from remote connector)
  • Vbatt - 3-4.2V (direct from battery)

Shutdown Planning

When not connected to a player, ideally should be drawing <10uA so the battery will last a long time. Slight chicken and egg problem though, as the buttons are connected through the MCU, but the MCU won't be running when the player isn't providing power so it can't relay button presses to the player to get it to power up. I think the current plan is to have the play/pause button connected directly through a resistor to the remote pin on the jack, but through an analog switch controlled by the MCU. When everything is powered down the button will send a resistance directly to the jack, but once the remote is powered up the switch will open and let the MCU control everything.

  • Disconnected from player (or connected but player off)
    • Logic rail shut down as remote is not receiving voltage from the player
    • BT transmitter shut down as nSHDN pin pulled down by resistor and not pulled up by logic rail
    • Current draw
      • Analog switch running directly off battery - 4uA
      • Level shifter for analog switch running directly off battery - 1uA
      • Shut down logic rail buck converter - 2uA
      • Shut down BT transmitter - 1uA
      • Shut down OLED rail boost converter - 1uA
      • Shut down fuel gauge - 0.5uA
      • Total current draw when idle - 9.5uA
        • Will mean only drawing ~7mAh from the battery in a month of being idle, which is reasonable
  • Connected to player with player power on
    • Analog switch opens to allow play/pause button to route through MCU instead of directly controlling
    • Logic rail powered up as remote is receiving voltage from the player
    • BT TX powered up as remote is receiving voltage from player

MCU I/O Planning

  • Power management - 1 GPIO (OLED rail enable)
  • OLED - SPI + 1 GPIO (reset)
  • Buttons - 12-ish GPIOs
  • Codec - I2C + 1 GPIO (IRQ)
  • BT TX - 2-wire UART
  • Fuel gauge - I2C + 1 GPIO (Alert)
  • Remote interface analog switches - I2C (digipot) + 2 GPIO (isolate digipot, play/pause routing)
  • Totals:
    • I2C (3 devices, shared bus)
    • SPI (1 device)
    • 18x GPIO(ish)


  • Rev001
    • A - Correct missing control of 16V5_EN
      • Cut trace between OLED_FR test pad and OLED connector
      • Attach wire between left side of R10 and OLED_FR test pad
      • RB3 now controls 16V5_EN (and OLED_FR can't be used but for Rev001 that's okay, it just might mean some screen tearing is visible sometimes)
    • B - Correct missing Vdd supply for OLED
      • Attach wire between left side of C11 and 1v8 test pad
    • C - Correct missing pullup on nMCLR
      • Purchase a 10k 0402 resistor and solder between nMCLR and 1v8 pads on programming connector