Skip to content

Pinout Image and Readme.md additions #29

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 5 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 36 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,26 @@ You can watch the videos of the *Temporarily Offline* and *HAM RADIO DUDE* YouTu
[![All In One Cable AIOC - Ham Nuggets Season 4 Episode 8 S04E08](http://img.youtube.com/vi/RZjoPNe634o/0.jpg)](http://www.youtube.com/watch?v=RZjoPNe634o "All In One Cable AIOC - Ham Nuggets Season 4 Episode 8 S04E08")
[![Your BAOFENG Programming Cable Sucks! - Get This! - AIOC All in One Cable](http://img.youtube.com/vi/xRCmXQYRLE0/0.jpg)](http://www.youtube.com/watch?v=xRCmXQYRLE0 "Your BAOFENG Programming Cable Sucks! - Get This! - AIOC All in One Cable")

## 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)
# Features #
- Based on easy-to-hack STM32F302 with internal ADC/DAC (Programmable via USB bootloader using [DFU](#how-to-program))
- Can support Dual-PTT HTs

## Compatibility
- Easy to upload firmware updates and changes
- Easy to solder custom connectors
- Cheap & Hackable, compact and durable design (DIY overmolded enclosure is currently TBD)
### Standard Interface Firmware ###
- Digital mode USB interface (similar to digirig, mobilinkd, etc...)
- Programming Cable Function via virtual Serial Port
- No annoying prolific drivers or tinkering required. Just plug in, and go.
- CAT Control for radios if paired with custom connector
- Dual PTT Support
### *NEW* Virtual VOX / Automatic PTT Firmware ###
- Easy, plug & play setup (no confusing COM ports)
- Automatically triggers PTT when audio is detected (similar to a SignaLink)
- Compatible with APRSDroid
- Does **not** support radio programming or cat control
- Currently a 10ms hardcoded timeout (after 10ms of no digital fsk audio from PC, it drops PTT)
- Currently in early beta and is a work in progress

# Compatibility #
### Software
- [Direwolf](#notes-on-direwolf) as AX.25 modem/APRS en+decoder/...
- [APRSdroid](#notes-on-aprsdroid) as APRS en+decoder
Expand All @@ -33,15 +45,21 @@ You can watch the videos of the *Temporarily Offline* and *HAM RADIO DUDE* YouTu
### Tested Radios (so far)
- Wouxun UV-9D Mate (CHIRP + APRS)
- Baofeng UV-5R (CHIRP + APRS)
- BTECH 6X2 (CHIRP)
- BTECH 6X2 (CHIRP)
- Quansheng UV-K5 (CHIRP + APRS)

## Future Work ##
- Overmolded enclosure design (DIY using 3D-Printed mold and Resin/Hotglue)
- Possible a console or the something similar to change settings such as CM108 style vs Automatic PTT style firmware on the fly.
- Maybe integrate a TNC Modem with KISS interface? (I am not sure if that is worth the effort)
- "High-Performance" VOX emulation with advanced features (e.g. pre-triggered VOX to activate PTT a few milliseconds before data, reduced tail time)

![Top side of PCB](doc/images/k1-aioc-photo.jpg?raw=true "Top side of PCB")

## Buy a pre-made AIOC
[![Buy the AIOC](https://i.imgur.com/0zJsVmk.png)](https://w1btr.com/index.php/product-category/accessories/ "Purchase an AIOC from Lucas W1BTR")

Lucas W1BTR sells AIOCs with tons of options and some chosen accessories on his website https://w1btr.com

## 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)
Expand Down Expand Up @@ -81,28 +99,27 @@ For building the firmware, clone the repository and initialize the submodules. C
## 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.
- **Short outermost pins on the programming header**. This will set the device into bootloader mode in the next step (not required for firmware updates).
- 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:
````
dfu-util -a 0 -s 0x08000000 -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](https://yeswolf.github.io/dfu) (*DFuSe Utility and dfu-util*). On other operating systems (e.g. Linux, MacOS), this just works ™ (provided libusb is installed on your system).
__Note__ that a ``libusb`` driver is required for this. On Windows there are additional steps required as shown [here](https://yeswolf.github.io/dfu) (*DFuSe Utility and dfu-util*). On other operating systems (e.g. Linux, MacOS), this just works ™ (provided libusb and dfu-util is installed on your system).
- 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
````
dfu-util -d 1209:7388 -a 0 -s 0x08000000:leave -D aioc-fw-x-y-z.bin
````
__Note__ Updating requires firmware version >= 1.2.0. For older firmwares, the initial programming sequence above including shorting the outermost pins is required for updating the firmware.

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
__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``).
Expand Down Expand Up @@ -143,14 +160,13 @@ APRSdroid support has been added by AIOC by implementing support for the fixed 2
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.
To send data, the beta Automatic PTT firmware must be used, as APRSDroid does not support PTT control so sending data is not possible with the standard firmware.

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.
This limitation is shared with the Digirig and other similar interfaces until PTT support is added to APRSDroid - 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.

## 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.
CHIRP is a very popular 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
Expand All @@ -159,5 +175,4 @@ Download:

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

- That's it!
Binary file added doc/images/AIOC Pinout.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.