Skip to the content
PCBKitNew board
2 layers21 × 31.5 mmK1-aioc, the printed circuit board in 3D

Ham Radio All-in-one-Cable

Size
21 × 31.5 mm
Copper layers
2
Thickness
1.2 mm
Parts
50
Nets
61
Pads
180
Tracks, vias
487, 88
Pours
9
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
5 Oct 2022
Updated
2 Nov 2025

Overview

K1-aioc is an open-source printed circuit board by skuep, from the skuep/AIOC repository on GitHub, published under the MIT licence. It is a 2-layer board of 21 × 31.5 mm with 50 parts on 61 nets, routed with 487 tracks and 88 vias.

It is built around the MIC5330-SSYML, BC847BS and USB4105-GF-A. Its parts include 19 resistors, 16 capacitors, 4 diodes, 2 ICs and 2 connectors. It belongs with the radio and wireless boards and the STM32 boards of this library.

Main components

3

README

README.md

ko-fi

AIOC

This is the Ham Radio All-in-one-Cable. It has been in testing stage for a long time, but so far no dealbreaking issues have been found so it is pretty safe to build it. Still, please read this README carefully before ordering anything.

AIOC with Wouxun and Direwolf

What does it do?

The AIOC is a small adapter with a USB-C connector that enumerates itself as a sound-card (e.g. for APRS purposes), a virtual tty ("COM Port") for programming and asserting the PTT (Push-To-Talk) as well as a CM108 compatible HID endpoint for CM108-style PTT (new in firmware version 1.2.0).

You can watch the videos of the Temporarily Offline and HAM RADIO DUDE YouTube channels below.

All In One Cable AIOC - Ham Nuggets Season 4 Episode 8 S04E08 Your BAOFENG Programming Cable Sucks! - Get This! - AIOC All in One Cable

There is also a German 4-part article with instructions here.

Features

  • Cheap & Hackable Digital mode USB interface (similar to digirig, mobilinkd, etc...)
  • Programming Cable Function via virtual Serial Port
  • Compact form-factor (DIY overmolded enclosure is currently TBD)
  • Based on easy-to-hack STM32F302 with internal ADC/DAC (Programmable via USB bootloader using DFU)
  • Can support Dual-PTT HTs
  • Supports all popular OSes (Linux, Windows and MacOS)

Compatibility

Software

Tested Radios (so far)

  • Wouxun UV-9D Mate (CHIRP + APRS)
  • Baofeng UV-5R (CHIRP + APRS)
  • BTECH 6X2 (CHIRP)
  • Quansheng UV-K5 (Quansheng Dock, Egzumer or regular)

Top side of PCB

How To Fab

  • Go to JLCPCB.com and upload the GERBER-k1-aioc.zip package (under kicad/k1-aioc/jlcpcb)
    • Select PCB Thickness 1.2mm (that is what I recommend with the TRS connectors I used)
    • You may want to select LeadFree HASL
    • Select Silkscreen/Soldermask color to your liking
  • Check "PCB Assembly"
    • PCBA Type "Economic"
    • Assembly Side "Top Side"
    • Tooling Holes "Added by Customer"
    • Press Confirm
    • Click "Add BOM File" and upload BOM-k1-aioc.csv
    • Click "Add CPL File" and upload CPL-k1-aioc.csv
    • Press Next
    • Look Through components, see if something is missing or problematic
    • Make sure that all listed components are selected and press Next
    • Check everything looks roughly good (rotations are already baked-in and should be correct). Save to Cart

This gives you 5 (or more) SMD assembled AIOC. The only thing left to do is soldering on the TRS connectors (see here). The total bill should be around 60$ US for 5 pieces plus tax and shipping from China.

Note that the following message from JLCPCB is okay and can be ignored.

text
The below parts won't be assembled due to data missing.
H1,H2 designators don't exist in the BOM file.
J2,D3,D4,R17 designators don't exist in the CPL file.

Note for people doing their own PCB production: I suggest using the LCSC part numbers in the BOM file as a guide on what to buy (especially regarding the MCU). Despite the STM32F373 in the BOM, the firmware currently only supports the STM32F302 as given in the LCSC ordering information.

Note As of 2025-09-25, the current hardware version is 1.2. The minimum firmware version for this hardware version is 1.4.0. The following features have been added.

  • Support for an external hardware input (e.g. for COS)
  • A split pad for the PTT/UART contact, so in case you would like to use the AIOC hardware for another purpose than a K1-style connector, you can separate these two signals that are otherwise connected to the same TRS contact.
  • Adjustable input and output audio levels (line-level, mic-level)
  • A fox hunt mode, where the AIOC operates as a simple morse code beacon

How To Assemble

This is the process I use for building. See photographs in images folder.

  • You need to use Monacor PG-204P and PG-203P or compatible TRS connectors (2 solder lugs and a big tab for the sleeve connection). Adafruit products 1800 and 1798 are confirmed to work as well.
  • Cut the 2.5mm and 3.5mm TRS sleeve tab where the hole is located
  • Put both TRS connectors into the 3d-printed solder guide (or a cheap HT that you don't mind potentially damaging). Make sure, that they are seated all the way in. If the holes in the solder guide are too small, you can ream them using a 2.5mm and 3.5mm drill bit.
  • Insert the AIOC PCB into the solder guide
  • Solder sleeve tab on the back side for both TRS connectors first
  • Turn around PCB and solder remaining solder lugs
  • Optionally you can 3D print a case for your AIOC. This model has been designed by a third party but is confirmed to work with the AIOC.

Note It is unfortunately quite common that the TRS connectors have intermittent contact after soldering the ring or tip tabs. In this case, it helps to re-melt the solder joint, then using e.g. tweezer slightly assert some sideways force onto the contact and let the solder joint solidify while applying the pressure on the contact. This will keep some tension on the area where the tab internally connects to the barrel and thus give a solid (spring loaded) connection.

How To Build

For building the firmware, clone the repository and initialize the submodules. Create an empty workspace with the STM32CubeIDE and import the project.

  • git clone <repositry url>
  • git submodule update --init
  • Start STM32CubeIDE and create a new workspace under <project-root>/stm32
  • Choose File->Import and import the aioc-fw project in the same folder without copying
  • Select Project->Build All and the project should build. Use the Release build unless you specifically want to debug an issue

How To Program

Initial programming

The following steps are required for initial programming of the AIOC:

  • Short outermost pins on the programming header. This will set the device into bootloader mode in the next step. Shorting pins for bootloader mode
  • Connect USB-C cable to the AIOC PCB
  • Use a tool like dfu-util to program the firmware binary from the GitHub Releases page like this:
    text
    dfu-util -a 0 -s 0x08000000:leave -D aioc-fw-x-y-z.bin
    Note that a libusb driver is required for this. On Windows there are additional steps required as shown here (DFuSe Utility and dfu-util). On other operating systems (e.g. Linux, MacOS), this just works ™ (provided libusb is installed on your system). On Linux (and MacOS), your user either needs to have the permission to use libusb (plugdev group) or you might need to use sudo.
  • Remove short from first step, unplug and replug the device, it should now enumerate as the AIOC device

Firmware updating

Once the AIOC has firmware loaded onto it, it can be re-programmed without the above BOOT sequence by following these steps.

Note This requires firmware version >= 1.2.0. For older firmwares, the initial programming sequence above is required for updating the firmware.

  • Run dfu-util like this
    text
    dfu-util -d 1209:7388 -a 0 -s 0x08000000:leave -D aioc-fw-x-y-z.bin

This will reboot the AIOC into the bootloader automatically and perform the programming. After that, it automatically reboots the AIOC into the newly programmed firmware.

Note Should you find yourself with a bricked AIOC, use the initial programming sequence above

How To Use

The serial interface of the AIOC enumerates as a regular COM (Windows) or ttyACM port (Linux) and can be used as such for programming the radio as well as PTT (Asserted on DTR=1 and RTS=0).

Note before firmware version 1.2.0, PTT was asserted by DTR=1 (ignoring RTS) which caused problems with certain radios when using the serial port for programming the radio e.g. using CHIRP.

The soundcard interface of the AIOC gives access to the audio data channels. It has one mono microphone channel and one mono speaker channel and currently supports the following baudrates:

  • 48000 Hz (preferred)
  • 32000 Hz
  • 24000 Hz
  • 22050 Hz (specifically for APRSdroid, has approx. 90 ppm of frequency error)
  • 16000 Hz
  • 12000 Hz
  • 11025 Hz (has approx. 90 ppm of frequency error)
  • 8000 Hz

Since firmware version 1.2.0, a CM108 style PTT interface is available for public testing. This interface works in parallel to the COM-port PTT. Direwolf on Linux is confirmed working, please report any issues. Note that currently, Direwolf reports some warnings when using the CM108 PTT interface on the AIOC. While they are annoying, they are safe to ignore and require changes in the upstream direwolf sourcecode. See https://github.com/wb2osz/direwolf/issues/448 for more details.

Since firmware version 1.3.0, a HID interface is also available, that allows reconfiguration of the AIOC from the PC. There are code snippets in the Release Notes for various features. There is also a command-line utility by Hrafnkell Eiríksson available here.

For advanced use of the AIOC, refer to this pinout image.

Notes on Direwolf

  • Follow the regular setup guide with Direwolf to determine the correct audio device to use. For the serial and CM108 PTT interfaces on Linux, you need to set correct permissions on the ttyACM/hidraw devices. Consult Direwolf manual.
  • Configure the device as follows
    text
    [...]
    ADEVICE plughw:<x>,0  # <- Linux
    ADEVICE x 0           # <- Windows
    ARATE 48000
    [...]
    PTT CM108             # <- Use the new CM108 compatible style PTT interface
    PTT <port> DTR -RTS   # <- Alternatively use an old school serial device for PTT
    [...]

Notes on AllStarLink (ASL3)

Once your cable is emulating a CM108, it becomes quite simple to plug into your HT and setup a simple simplex AllStarLink node that talks to your favorite repeater or node.

In asl-menu, set:

  • Device type: usbradio (menu sections: 2 > A1 > N4 > I2)
  • Duplex type: 1 (menu sections: 2 > A1 > N5)

Edit usbradio.conf (menu sections: 6 > H) (for a Puxing PX-888 cheap Chineese HT)

  • rxboost = 0
  • rxsqhyst = 500
  • carrierfrom = usbinvert
  • ctcssfrom = no
  • rxdemod = speaker
  • txprelim = no
  • invertptt = no

Notes on APRSdroid

APRSdroid support has been added by AIOC by implementing support for the fixed 22050 Hz sample rate that APRSdroid requires. It is important to notice, that the exact sample rate can not be achieved by the hardware, due to the 8 MHz crystal. The actual sample rate used is 22052 Hz (which represents around 90 ppm of error). From my testing this does not seem to be a problem for APRS at all.

However, since APRSdroid does not have any PTT control, sending data is currently not possible using the AIOC except using the radio VOX function. See https://github.com/ge0rg/aprsdroid/issues/324. My previous experience is, that the Android kernel brings support for ttyACM devices (which is perfect for the AIOC) so implementing this feature for APRSdroid should theoretically be no problem.

Ideas such as implementing a digital-modes-spefic VOX-emulation to workaround this problem and let the AIOC activate the PTT automatically are currently being considered. Voice your opinion and ideas in the GitHub issues if this seems interesting to you.

Notes on CHIRP

CHIRP is a very popuplar open-source programming software that supports a very wide array of HT radios. You can use CHIRP just as you would like with a regular programming cable.

Download:

  • Start CHIRP
  • Select Radio->Download from Radio
  • Select the AIOC COM/ttyACM port and start

Upload:

  • Select Radio->Upload to Radio
  • That's it

Notes on VaraFM

Select "DTR only" for PTT Pin, so that the correct RTS/DTR sequence is generated for PTT

Known issues

There are known issues with EMI, when using a handheld radio with a monopole (i.e. stock) antenna. In this case, the USB cable will (inadvertently) work as a tiger-tail (counterpoise) and thus, high RF currents go through the USB lines which cause issues with the USB connection. Some people have connected cables between the radio and the AIOC and put a ferrite core on those wires, which seems to reduce those issues. I am trying to find out, which of the wires between the radio and the AIOC produce the problem, so that we might add SMD ferrites on the AIOC in the future

As a workaround, you can try to reduce the transmit power or use a tiger-tail (counterpoise). Additionally, a good solution is to use a balanced antenna, such as my EZ-Dipole.

Parts

50
QtyValueFootprintReferences
74.7u/10V/X5RCapacitor_SMD:C_0603_1608MetricC4, C5, C6, C7, C10, C13, C14
61.5KResistor_SMD:R_0603_1608MetricR1, R4, R10, R11, R18, R19
6100nCapacitor_SMD:C_0603_1608MetricC3, C8, C9, C12, C15, C16
5100RResistor_SMD:R_0603_1608MetricR3, R8, R9, R15, R17
55.1KResistor_SMD:R_0603_1608MetricR5, R6, R7, R14, R16
222RResistor_SMD:R_0603_1608MetricR12, R13
222p/NP0Capacitor_SMD:C_0603_1608MetricC1, C2
2600R@100MHzInductor_SMD:L_0603_1608MetricFB1, FB2
2N.M.LED_SMD:LED_0603_1608MetricD3, D4
2ToolingHoleAIOC:TOOLING-HOLEH1, H2
14.7KResistor_SMD:R_0603_1608MetricR2
14.7n/NP0Capacitor_SMD:C_0603_1608MetricC11
18MHz/20pFAIOC:Crystal_SMD_5032-2Pin_5.0x3.2mmY1
1BC847BSPackage_TO_SOT_SMD:SOT-363_SC-70-6Q1
1Conn_01x07_MaleConnector_PinHeader_1.27mm:PinHeader_1x07_P1.27mm_VerticalJ2
1GREENLED_SMD:LED_0603_1608MetricD1
1MIC5330-SSYMLAIOC:Micrel_MLF-8-1EP_2x2mm_P0.5mm_EP0.6x1.2mmU1
1REDLED_SMD:LED_0603_1608MetricD2
1STM32F373CBTxPackage_QFP:LQFP-48_7x7mm_P0.5mmU2
1USB4105-GF-AAIOC:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_HorizontalJ1

The 49 most common of 50 parts.

Questions

How big is the K1-aioc PCB?

It measures 21 × 31.5 mm and has 2 copper layers, 1.2 mm thick.

What parts does the K1-aioc use?

50 parts, built around the MIC5330-SSYML, BC847BS and USB4105-GF-A. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the K1-aioc KiCad files?

From the skuep/AIOC repository on GitHub, at the commit this page was made from: the board is kicad/k1-aioc/k1-aioc.kicad_pcb and its schematic kicad/k1-aioc/k1-aioc.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the K1-aioc design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 4 layers98.7 × 104 mmFlight Controller, the printed circuit board in 3D

    Flight Controller

    ThaoMinhHoang/350_Flight_controller

    ECTE350 storage room for Locus team

    233 parts3
  • 2 layers58 × 110 mmVco core, the printed circuit board in 3D

    Vco core

    shmoergh/moduleur

    Fully analog DIY-friendly modular synth

    146 parts222
  • 2 layers215 × 100 mmCore, the printed circuit board in 3D

    Core

    shmoergh/hog

    Fully analog two-voice monophonic synth for live performances

    370 parts124
  • 2 layers196 × 104 mmHack fft, the printed circuit board in 3D

    Hack fft

    hack-apollo/hack_spectrum

    a music spectrum use esp32-pico-d4 and ws2812b.

    611 parts28GPL-3.0
  • 2 layers66.7 × 85.7 mmOpentaxus, the printed circuit board in 3D

    Opentaxus

    OpenTaxus/opentaxus

    Opentaxus is a permissively licensed set of hardware, software, and tooling to help as a starting point for customized conference badges.

    54 parts19
  • 2 layers144 × 143 mmVco, the printed circuit board in 3D

    Vco

    polykit/vco-8

    Analog Octo Voltage Controlled Oscillator VCO Kicad PCB and schematics

    385 parts18
  • 2 layers63 × 56 mmReceiver test, the printed circuit board in 3D

    Receiver test

    simonyiszk/open-hf-sdr

    126 parts3
  • 2 layers40.5 × 56 mmE28 tx, the printed circuit board in 3D

    E28 tx

    R4ynor/ExpressLRS_HW_stuff

    28 parts2