AI prompts
base on Allows the Quansheng UV-K5 radio to be controlled by a PC. # **Quansheng Dock** V 0.32.22q
# This project does **NOT** I repeat not work with CHIRP and it's likely it never will. That's just the way it is, either accept it or move on. I don't want to constantly chase after other projects every time they update and break compatibility.
# Requires firmware 0.32.21q - I mean it.
https://github.com/nicsure/quansheng-dock-fw/releases/tag/0.32.21q
There are some considerable configuration changes and it may break previous configs. I'm sorry if this happens but it's unlikely I caught every potential conflict. Clearing the config may help any issues, in your Documents folder, look for QuanshengDock folder and either delete it, or rename it to clear the previous config.
You may find that presets/channels in the XVFO now have a different mode than before. Again sorry about this, but was unavoidable.
# A WPF Windows app that allows remote operation of the Quansheng UV-K5 (and equivalent) hand-held radios via the programming cable.
- If upgrading from a version before 0.27.3q the new version will likely have HUGE text on the LCD screen. This is because I had to change the way the "F Stretch" feature worked. If this happens open up your settings and change "F Stretch" to a value around 0.20
**Features**
- Enhanced preset/channel scanner.
- Hardware level VFO (experimental)
- Enhanced LCD display cloning. Font and color selection.
- Channel Editor with ability to adjust multiple channels simultaneously.
- RepeaterBook Integration.
- Spectrum Analyzer with monitor mode.
- Waterfall display.
- Audio passthrough.
**Recent Changes**
- Further changes will be listed in the release notes instead of here
- Messenger
- XVFO CW Mode
- CHIRP Fix
- Preset selector wheel
- Watch and Respond feature
- Mutiple VFOs A, B, C and D added
- Mouse wheel changes XVFO freq by set step when pointer is over jog wheel.
- Individual digit adjustment with mouse wheel
- XVFO Scanner facelift
- XVFO preset scanner (very early design, functional but ugly. Just like me)
- Fixed two erroneous DCS codes
- Added Ultra Wide and Ultra Low bandwidth settings, not sure how useful they'll be though. (XVFO)
- Fixed bug in channel editor preventing entry of negative offset frequency.
- Auto Squelch (XVFO).
- Channel import to XVFO Presets.
- Mic Gain (XVFO).
- RX CTCSS/DCS Implemented (XVFO).
- XVFO TX implemented as well as other features.
**TO DO**
- Plenty
**Download**
: A pre-compiled release is available here
https://github.com/nicsure/QuanshengDock/releases/tag/0.32.22q
: You also need .NET 6 runtime
https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-6.0.418-windows-x64-installer
**Installation**
: The app is essentially portable and can be placed anywhere. If installing from the release build, just unzip it to a location of your choice and run the "QuanshengDock.exe" inside the folder.
You will also need to program the radio with the accompanying firmware found here : https://github.com/nicsure/quansheng-dock-fw
**Demonstration**
: You can find a demo video here: https://www.youtube.com/watch?v=UwTz5wricmY
# Hardware Requirements
The app will work with just the programming cable but you won't be able to hear the radio's audio as the programming cable cuts out the main speaker. You also won't be able to properly transmit as it cuts out the radio's microphone too. So to get audio in and out of the radio you'll need some extra hardware.
**AIOC (Recommended)**
I STRONGLY recommend using the excellent AOIC cable with this software.
- You can find the AIOC GitHub page here https://github.com/skuep/AIOC
- A guide for configuring the AIOC with Quansheng Dock can be found on my YouTube channel here https://www.youtube.com/watch?v=IrnzWVdOlu8
**Makeshift Audio Interface (Not Recommended)**
In order to hear the audio you can make a simple wiring harness. I made mine from 2.5mm/3.5mm stereo Y cable adapters, a 47k resistor and a 3.5mm stereo patch cable.
- Cut one of the tails of the 2.5mm adapter in half and isolate the inner conductors on both sides, there will be three, An outer shield which is ground, and two wires, one of which carries the audio and the other carries the serial TX.
- Determine which of these is the audio. It is the wire connecting to the tip (end) of the 2.5mm jack plug, you can use a multi-meter in continuity mode to do this.
- Cut back and isolate the audio wire on the tail side (non radio side) as this is not used.
- On the radio side connect a 47k resistor to the audio wire.
- Cut off one of the ends of the patch cable and isolate the inner conductors, there will be three, an outer shield for ground and two inner wires which carry the left and right audio channels.
- Connect the inner wires together and then connect this combined wire to the other side of the resistor.
- Connect both sides of the tail grounds (outer shield) back together and connect those to the patch cable's outer shield.
- Connect the tail's TX data lines back together.
![](./WiringMod2.png)
![](./WiringSchematic.png)
You may be wondering why you can't just use an external speaker, the reason is because the audio needs to be converted to high-impedance to prevent the audio bleeding over the serial data. If you just connect a low impedance speaker (like in a speaker microphone) and the programming cable using the Y adapters, when there's any audio from the radio, the serial line gets flooded with garbage data.
**Hardware Configuration**
: As previously mentioned you can just use a programming cable alone without any audio, but if you're using the wiring harness
- plug the programming cable's 3.5mm jack into either of the 3.5mm Y cable's tails.
- The programming cable's 2.5mm jack should be plugged into the **UNMODIFIED** tail of the 2.5mm Y adapter.
- The microphone's 2.5mm jack should be plugged into the **MODIFIED** tail.
- Plug the microphone's 3.5mm jack into the remaining tail.
- Plug both Y adapter's jacks into the radio.
- Connect the 3.5mm patch lead to your PC's line input or you may use any device that can accept audio line input.
![](./WiringOverview2.png)
# **Manual**
Please take a look at the [Online Manual (see Wiki)](https://github.com/nicsure/QuanshengDock/wiki) for instructions, tips and more
* [First impression...](https://github.com/nicsure/QuanshengDock/wiki)
* [Basic idea and operation](https://github.com/nicsure/QuanshengDock/wiki/10-%E2%80%90-Basic-idea-and-operation)
* [The radio firmware](https://github.com/nicsure/QuanshengDock/wiki/20-%E2%80%90-The-radio-firmware)
* [Connection between radio and PC](https://github.com/nicsure/QuanshengDock/wiki/30-%E2%80%90-Connection-between-radio-and-PC)
* [Q‐Dock program on PC](https://github.com/nicsure/QuanshengDock/wiki/40-%E2%80%90-Q%E2%80%90Dock-program-on-PC)
* [Specific Functions explained](https://github.com/nicsure/QuanshengDock/wiki/50-%E2%80%90-Specific-Functions-explained)
* [Integrating QD with other programs](https://github.com/nicsure/QuanshengDock/wiki/60-%E2%80%90-Integrating-QD-with-other-programs)
* [Tips & Tricks and Known Issues](https://github.com/nicsure/QuanshengDock/wiki/70-%E2%80%90-Tips-&-Tricks-and-Known-Issues)
* [Reviews on Youtube](https://github.com/nicsure/QuanshengDock/wiki/80-%E2%80%90-Reviews-on-Youtube)
# **Support**
I have been asked several times if there is any way to support me financially. Yes, you can do so by sending BitCoin to the following address.
Please DO NOT send what you cannot afford. I of all people understand the cost of living under the current economical disaster and I'm struggling to live just like everyone else. So please, only donate if you can afford to do so.
Bitcoin: 3FJEy42F6WUnjtxWwgSYxDHmjVFooLKCDH
<img src='./btc qr.png' width='100' />
", Assign "at most 3 tags" to the expected json: {"id":"6799","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"