A VX-8DR GPS and audio interface board

What is it?

A multipurpose peripheral for the Yaesu VX-8DR and VX-8DE. Features include:
  • A GPS unit for the VX-8's inbuilt APRS function
  • A headset adaptor so that standard Yaesu Y1 headsets and hand-mics are directly usable
  • Experimental audio ADC/DAC hardware [pending firmware support and design validation]
The APRS and headset adapter works very well in the first build of this board, however the ADC/DAC features will take some time to materialize in firmware (if ever).

What are the advantages of this design?

  • Compact and lightweight
    • The board size is 25mm x 50mm (1" x 2")
    • Powered from the radio battery
  • Robust (hypothetically) - 
    • The radio cable is looped through retainer holes, so that strain on the cable is not transmitted to the solder joint. 
    • A through-hole TRRS jack is used (albeit, the jack is beside the cable input rather than opposite, meaning a much higher breakaway force if the headset is pulled away from the radio)
  • Low power (relatively) -
    • The MCU + GPS draw about 70ma combined. This can be reduced in software by using sleep modes and powering down the GPS
  • Low(ish) cost
  • Simple construction
    • This is a good first-timer SMD project, and uses the larger 0805 and SOT-23 packages
    • Colour-codes for the CT-M11 cable attachment are printed on both sides of the board
  • Hackable
    • Using the arduino studio, you can program this device however you want it
    • The functionality of the two buttons can be programmed as you desire
    • There's a USB port in the top of the Seeeduino and it is programmable as a serial adapter (ie, it can be a PC or phone interface)
    • The mic line is coupled to the Seeeduino DAC and the speaker is coupled to the ADC
      • It might be possible to program a whole TNC or AFSK modem in the chip
      • Or a morse-serial bridge
    • The Seeeduino is way-overresourced for the task at hand.
    • Unused IO pins as well as 3.3v and ground are broken out into solderable PCB pads
  • Fully opensource
    • You are free to adapt, extend, manufacture, and sell this product
    • However, there are no guarantees of any support, functionality, or future software or hardware releases

How do I build one?

Warning - There are no guarantees that this procedure will work for you. This is hacker hardware, and there's an expectation that either you will make mistakes or that there is bugs in the design, firmware, or pcb files. Where there are mistakes or bugs from any cause, it's you that's stuck with debugging the issue.

The main insurance against these risks is that the boards and basic components are cheap to acquire.

Get a PCB or 5 (or 20)

  1. Open up the PCB file in EasyEDA-

    (you'll need to create a login at some stage in the process)

  2. In the EasyEDA fabrication menu, choose PCB Production file. It will ask you to perform a design rule check. You can then either take the gerber files and manufacture anywhere, or you can hit the Order at JLCPCB button.

  3. The default options at JLC and probably any pcb fab are going to be appropriate.

    - Use FR-4, not aluminum
    - Choose any colour board you like
    - Consider using Lead Free HASL (it's great not having to wash lead off your hands every time you solder)
    - I used 1.2mm PCB thickness / LeadFree HASL / Green solder mask as a lightweight, cheap, and environmentally-friendly combination. To get other colours, it'll either cost more, be heavier, or not lead-free.
    - Minimum board quantity is usually 5, but it's very cheap. If you build yours and it works, consider taking your leftover boards and spare components and selling or giving away sets.

  4. Get all excited when your PCBs arrive from China.

Get the components

Note, the R6 and R10 values used in the test build below are different to the values indicated on the schematic.
IDNameDesignatorFootprintQuantityLCSC Part#Substitute
Resistor2.2k R10*,R6*R08051C17520
N-Channel MosfetAO3400AQ1SOT-231C20917Many possible. See technical
ButtonSMD 6mm Tactile ButtonSW1,SW22C127509TL3301 series
button (gullwing)
MicrocontrollerSeeeduino XiaoXIAO1Amazon
TRRS JackPJ-320ACN1PJ320A1AmazonPJ-3200B-4A might work
GPS ModuleBN-220 GPS1AmazonAny 3.3v 9600bps NMEA module
Radio CableCT-M11H11Yaesu

The SM components on the list (resistors, capacitors, MOSFET and buttons) are all relatively easy to source via the usual suppliers (digikey, mouser, LCSC), but are likely to have minimum quantities far in excess of what you need. I bought 100 of each value resistor, 50 of the cap, 10 MOSFET, and 20 buttons, and most of the cost was still the shipping.

It's easy to drop and lose several SMD components during build - spares are good.

An alternative if you plan to do more SMD work is to buy an 0805-size SMD resistor kit. Considering some of the resistor values for the DAC/ADC are likely to need tweaking, this could be a reasonable path.

The expensive items on the board (the Xiao, the jack, and GPS module) I had to source from Amazon. The PJ-320 comes in an SMD and through-hole version (only differing in which direction the legs are bent). The through-hole version is used for rigidity.

The following are also useful

  • Small chisel tip solder iron
    (chisel tip is easier than point tip for this size SMD)
  • Small size wire strippers
    (the Yaesu cable requires you strip 7 conductors of 26 AWG / 0.40mm size)
  • Precision metal tweezers
    (SMD soldering without these is terrible)
  • USB-USB C cable
    (the Seeeduino has a USB C connector for programming)
  • Kapton tape
    (heat resistant tape that can be used to tape boards and components in place while soldering)
  • Flux core lead-free solder
    (kind on the environment - it all goes into the trash sooner or later)
  • Flux pen
    (don't have one, but lots of SMD soldering tutorials recommend either a flux pen or gel flux)
  • TTL USB Serial adaptor that supports 3.3v
    (useful for programming the GPS using uCenter)
  • Yaesu Y1 headset or handmic
    (to test the audio port)
  • A small square of foam-style double sided tape, or 1" diameter heatshrink tube
    (to hold the GPS to the main board)


Program the GPS module

TL;DR - Set the GPS to output GxGGA and GxRMC messages (where x is N for a multi-constellation receiver or P for a pure GPS receiver) at 9600bps. You can disable everything else.

U-Center for PC can be downloaded from uBlox, and allows configuration of a uBlox GPS module connected via a USB-UART adaptor.  Other chipsets may have similar software available from their vendors. 

  • Select the COM port under Receiver=>Connection, and the GPS's default baud rate under Receiver=>Baud
  • Check you're receiving NMEA data under View=>Text Console (F8). If you're not getting NMEA messages, check the port/baud settings.
  • Open the View=>Messages window (F9). Check that the GxGGA and GxRMC messages are enabled. If they are greyed out, right click them and choose enable. Either the GPGGA/GPRMC or the GNGGA/GNRMC submessages can be enabled. The software works for both. Optionally enable GxZDA, and disable any other messages to reduce the load on the MCU.
  • Under View=>Configuration View (Ctrl-F9) you can set the following
    • Baud rate of 9600 (if not set already) on the PRT screen
    • Measurement period of 1000ms and Navigation rate of 1, resulting in 1Hz position output from the GPS module
    • Hit save at the bottom of the window for each change made. Note changing the baud rate will require reconnection in the receiver menu
  • On the CFG tab, save these changes by clicking Save current configuration then Send


Go over to YouTube and learn how to SMD solder the following
Populated and unpopulated board layout. Note the GPS antenna is pointing outwards. Also note the cable retention on the CT-M11. Poor soldering because I had no flux on hand and plastic (melting) tweezers.

The soldering the components is probably easiest in this order:
  2. Resistors and Capacitors
  3. Seeeduino module
    (USB C connector to the edge of the board)
  4. The GPS cable
    (use the VCC/TX/RX/G pads under the worldmap. G is not circuit ground. G is MOSFET-switched ground connection to power/depower the GPS module. Ensure the orientation of the GPS connector so that the GPS antenna faces away from the board)
  5. The CT-M11 cable
    (The two holes allow the 7 wires inside the CT-M11 cable to be woven through the PCB for strength)
  6. The headset jack

Programming the Seeeduino

  • Download the Arduino IDE
  • Connect the Xiao via USB-C cable
  • Configure the Seeeduino libraries in the IDE (Steps 3 and 4 here)
  • Paste in the code from the ino file in the Extended Software release zip
  • Save the project (Ctrl-S), compile it (Ctrl-R), and upload it (Ctrl-U)


Basically, just plug in and power it on. The GPS module will likely take 10 minutes to first acquire the satellite constellation if it hasn't been powered up recently. Pre-lock status monitoring is yet to be programmed into the code, so this is in-the-blind unless your GPS module has status LEDs.

Grab the user manual for the radio, and start following the directions from page 76. 

  • Set APRS frequency in the B-Band (modem is not connected to A-Band)
  • [Menu] cycles through the GPS/APRS screens. On the Station List screen, hold [Menu] and set your callsign (item 20) as well as "GPS" in "My Position" (item 21). Set timezone in item 25. Enable the modem at 1200bps (item 4)
  • APRS beacons will only transmit when the satellite signal is locked