{"id":1593,"date":"2026-06-05T10:02:26","date_gmt":"2026-06-05T10:02:26","guid":{"rendered":"https:\/\/g1lro.uk\/?p=1593"},"modified":"2026-07-20T20:51:58","modified_gmt":"2026-07-20T20:51:58","slug":"setting-up-an-allstar-node-with-the-aioc-all-in-one-cable-and-asl3","status":"publish","type":"post","link":"https:\/\/g1lro.uk\/?p=1593","title":{"rendered":"Building an AllStar3 Node with the G1LRO AIOC and ASL3"},"content":{"rendered":"\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-20959078 wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/g1lro.uk\/?product=new-aioc-with-perfect-cos-the-red-one-built-and-tested\">Buy Online<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Earlier this year I <a href=\"https:\/\/g1lro.uk\/?p=1549\">announced a refresh of the AIOC hardware<\/a> \u2014 new hardware COS circuitry, improved voltage regulation, and a promise of a definitive how-to guide and setup script for ASL3. This is that guide.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The new G1LRO AIOC board stays true to the original form factor while adding proper hardware COS support \u2014 both speaker bias (for Baofeng-class HTs) and logic-level (for radios like the Tidradio H3 and SA818-based builds). Combined with firmware 1.3 or later and native AIOC support in ASL3, the setup process is now cleaner than it has ever been: <strong>no CM108 ID remapping, no Python scripts, no manual file editing<\/strong>.<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><strong>This guide also works for older and other AIOC variants and the URC.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#8217;ve built an ASL3 node from an older guide \u2014 including earlier posts on this blog \u2014 the approach has changed significantly. ASL3 now supports the AIOC natively, and the new setup script handles all the configuration automatically.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">What&#8217;s New About This Setup<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>PC-based config<\/strong> \u2014 everything done through a browser and the Raspberry Pi imager; no Linux expertise needed<\/li>\n\n\n\n<li><strong>One copy\/paste command<\/strong> completely configures ASL3 for the AIOC<\/li>\n\n\n\n<li><strong>Specific support for the G1LRO dual-COS AIOC<\/strong> \u2014 hardware COS for reliable, professional-grade performance<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">Quick Jump Menu:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"#step1\">Create ASL3 SD Image<\/a> &#8211; Skip if you have a working ASL3 node<\/li>\n\n\n\n<li><a href=\"#step2\">Initial ASL3 Setup<\/a> &#8211; Skip if you have a working ASL3 node<\/li>\n\n\n\n<li><a href=\"#step3\">AIOC Hardware COS<\/a> <\/li>\n\n\n\n<li><a href=\"#step4\">AIOC Settings Configuration<\/a> <\/li>\n\n\n\n<li><a href=\"#step5\">ASL3 Custom Script<\/a> <\/li>\n\n\n\n<li><a href=\"#step6\">Tune ASL3<\/a><\/li>\n\n\n\n<li><a href=\"#vcos\">VCOS option<\/a><\/li>\n\n\n\n<li><a href=\"#flash\">Re-Flash your AIOC<\/a> firmware<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">What You&#8217;ll Need<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Item<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td><strong>ASL3 Registration<\/strong><\/td><td>You&#8217;ll need a node number and password \u2014 registration not covered here<\/td><\/tr><tr><td><strong>PC with Chrome browser and SD card slot<\/strong><\/td><td>Needed for flashing ASL3, AIOC setup and programming over USB<\/td><\/tr><tr><td><strong>Internet access<\/strong><\/td><td>For both the PC and the Raspberry Pi<\/td><\/tr><tr><td><strong>Raspberry Pi<\/strong><\/td><td>Zero 2W or better \u2014 Model 3B is ideal<\/td><\/tr><tr><td><strong>USB data lead<\/strong><\/td><td>Make sure it&#8217;s not a charge-only cable<\/td><\/tr><tr><td><strong>Ferrite cores<\/strong><\/td><td>To wrap the USB lead \u2014 optional but recommended<\/td><\/tr><tr><td><strong>Micro SD card<\/strong><\/td><td>16GB minimum, V30 speed rating or better<\/td><\/tr><tr><td><strong>G1LRO AIOC<\/strong><\/td><td>Dual-COS version \u2014 firmware 1.3.0 pre-installed. You can user other AIOC.<\/td><\/tr><tr><td><strong>HT radio for the node<\/strong><\/td><td>Baofeng\/Quansheng class work well<\/td><\/tr><tr><td><strong>Second HT radio<\/strong><\/td><td>To call, test and use the node<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The Process at a Glance<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The setup follows six straightforward stages:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"434\" src=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-1024x434.png\" alt=\"\" class=\"wp-image-1598\" srcset=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-1024x434.png 1024w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-300x127.png 300w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-768x325.png 768w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-1536x651.png 1536w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-600x254.png 600w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image.png 1631w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"step1\" class=\"wp-block-heading\">Step 1 \u2014 Create the ASL3 SD Image<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Everything starts on your PC.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Install Raspberry Pi Imager 1.8.3*<\/strong> Download it from: <code><a href=\"https:\/\/github.com\/raspberrypi\/rpi-imager\/releases\/download\/v1.8.3\/imager-1.8.3.exe\">https:\/\/github.com\/raspberrypi\/rpi-imager\/releases\/download\/v1.8.3\/imager-1.8.3.exe<\/a><\/code><\/li>\n\n\n\n<li><strong>Download the ASL3 image<\/strong>* <br><a href=\"https:\/\/repo.allstarlink.org\/images\/pi\/allstar3-arm64-3.0.20.img.xz\">https:\/\/repo.allstarlink.org\/images\/pi\/allstar3-arm64-3.0.20.img.xz<\/a><\/li>\n\n\n\n<li><strong>Burn the &#8220;Custom&#8221; image<\/strong> using Pi Imager. When prompted, click <strong>Yes<\/strong> to apply OS customisation settings:\n<ul class=\"wp-block-list\">\n<li><strong>General tab:<\/strong> set your Wi-Fi network name and password<\/li>\n\n\n\n<li><strong>Services tab:<\/strong> enable SSH and set a password<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Burn the image to your SD card.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">*Note the Pi Imager and ASL3 versions are not latest as there are login issues with later versions.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"775\" height=\"577\" src=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-1.png\" alt=\"\" class=\"wp-image-1599\" srcset=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-1.png 775w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-1-300x223.png 300w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-1-768x572.png 768w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-1-600x447.png 600w\" sizes=\"auto, (max-width: 775px) 100vw, 775px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"735\" height=\"739\" src=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-6.png\" alt=\"\" class=\"wp-image-1610\" srcset=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-6.png 735w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-6-298x300.png 298w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-6-150x150.png 150w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-6-600x603.png 600w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-6-100x100.png 100w\" sizes=\"auto, (max-width: 735px) 100vw, 735px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"763\" src=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-3.png\" alt=\"\" class=\"wp-image-1601\" srcset=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-3.png 768w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-3-300x298.png 300w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-3-150x150.png 150w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-3-600x596.png 600w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-3-100x100.png 100w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Note:<\/strong> Setting Wi-Fi credentials here means your Pi will connect automatically on first boot \u2014 no keyboard or monitor needed.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"step2\" class=\"wp-block-heading\">Step 2 \u2014 Initial ASL3 Setup<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Install the SD card and power up the Pi and give it a minute or two to boot.<\/li>\n\n\n\n<li>Browse to the host name set earlier e.g. <strong>asl3.local<\/strong> \u2014 you&#8217;ll see the ASL3<strong> <\/strong>server page, select the  <strong> Web Admin Portal<\/strong>.<\/li>\n\n\n\n<li>If the hostname is not reachable, you&#8217;ll need to find the Pi&#8217;s IP Address and browse to that. Use a tool like <code>nmap<\/code> and additional help <a href=\"https:\/\/www.digikey.com\/en\/maker\/tutorials\/2023\/how-to-find-the-ip-address-of-your-headless-raspberry-pi\" data-type=\"link\" data-id=\"https:\/\/www.digikey.com\/en\/maker\/tutorials\/2023\/how-to-find-the-ip-address-of-your-headless-raspberry-pi\">here<\/a>)<\/li>\n\n\n\n<li>Bypass any browser security warning and log in with the username and password you set in Pi Imager.<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code><\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"843\" src=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-5-1024x843.png\" alt=\"\" class=\"wp-image-1607\" srcset=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-5-1024x843.png 1024w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-5-300x247.png 300w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-5-768x632.png 768w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-5-600x494.png 600w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-5.png 1242w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"626\" src=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-06-154731-1024x626.png\" alt=\"\" class=\"wp-image-1611\" srcset=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-06-154731-1024x626.png 1024w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-06-154731-300x183.png 300w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-06-154731-768x469.png 768w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-06-154731-1536x939.png 1536w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-06-154731-600x367.png 600w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-06-154731.png 1592w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">asl-menu Quick Steps<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Go to <strong>Terminal<\/strong> in the web interface and type:<\/p>\n\n\n\n<pre class=\"wp-block-code has-tertiary-background-color has-background\"><code>\nsudo asl-menu\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">here we work through the menu steps as follows:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Select 1 : Node settings<\/li>\n\n\n\n<li>Select 1  : Allstar Node Setup Menu\n<ul class=\"wp-block-list\">\n<li>Enter your <strong>node number<\/strong><\/li>\n\n\n\n<li>Enter your <strong>node password<\/strong><\/li>\n\n\n\n<li>Set <strong>duplex type 1<\/strong> \u2014 half duplex hotspot<\/li>\n\n\n\n<li>Select <strong>SimpleUSB<\/strong> as the channel driver<\/li>\n\n\n\n<li>Enter your <strong>callsign<\/strong><\/li>\n\n\n\n<li>Restart Asterisk<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>When you reach the tune menu, <strong>quit out<\/strong> (option 0)\u2014 don&#8217;t tune yet<\/li>\n\n\n\n<li>Follow the process to exit the ASL-tune menus<\/li>\n\n\n\n<li><strong>Leave the terminal open<\/strong> \u2014 you&#8217;ll need it again shortly<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"690\" height=\"743\" src=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-06-161306.png\" alt=\"\" class=\"wp-image-1608\" srcset=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-06-161306.png 690w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-06-161306-279x300.png 279w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-06-161306-600x646.png 600w\" sizes=\"auto, (max-width: 690px) 100vw, 690px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"step3\" class=\"wp-block-heading\">Step 3 \u2014 Enable Hardware COS on the AIOC<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The G1LRO dual-COS AIOC has two COS jumper pads on the PCB. Bridge the correct one with a small solder blob for your radio type:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Radio type<\/th><th>Jumper to bridge<\/th><\/tr><\/thead><tbody><tr><td>Tidradio H3 with new firmware, SA818, logic-level COS<\/td><td><strong>LOGIC COS<\/strong><\/td><\/tr><tr><td>Standard Baofeng, Quansheng type radio, speaker output<\/td><td><strong>SPK COS<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Once bridged, connect the AIOC to your Raspberry Pi \u2014 the lights will flash to confirm it&#8217;s been recognised.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"747\" height=\"341\" src=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-9.png\" alt=\"\" class=\"wp-image-1616\" srcset=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-9.png 747w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-9-300x137.png 300w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-9-600x274.png 600w\" sizes=\"auto, (max-width: 747px) 100vw, 747px\" \/><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Different AIOC?<\/strong> If your AIOC, URC or radio doesn&#8217;t support a useable Hardware COS option, Virtual COS (VCOS) can be used as a last resort \u2014 see the <a href=\"#vcos\">VCOS <\/a>section below. Be aware that VCOS can clip the beginning or end of transmissions and drop mid-stream during quiet moments in speech. Hardware COS is strongly preferred.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"step4\" class=\"wp-block-heading\">Step 4 \u2014 Configure the AIOC<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">With the AIOC bridged for hardware COS, now tell the firmware which COS method to use.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Plug the AIOC into your <strong>PC or laptop<\/strong> (not the Pi \u2014 the config utility needs WebUSB direct access).<\/li>\n\n\n\n<li>Browse to: <a href=\"https:\/\/g1lro.github.io\/aioc-util\/\">https:\/\/g1lro.github.io\/aioc-util\/<\/a> <\/li>\n\n\n\n<li>Click <strong>Connect<\/strong> and select the AIOC device.<\/li>\n\n\n\n<li>Enable <strong>Hardware COS<\/strong> and click <strong>Apply<\/strong>.<\/li>\n\n\n\n<li>Scroll down past the status pane and click <strong>Store to Flash<\/strong>.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"311\" src=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-7-1024x311.png\" alt=\"\" class=\"wp-image-1613\" srcset=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-7-1024x311.png 1024w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-7-300x91.png 300w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-7-768x233.png 768w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-7-600x182.png 600w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-7.png 1177w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"155\" src=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-8-1024x155.png\" alt=\"\" class=\"wp-image-1615\" srcset=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-8-1024x155.png 1024w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-8-300x46.png 300w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-8-768x116.png 768w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-8-600x91.png 600w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-8.png 1167w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Don&#8217;t miss Store to Flash!<\/strong> It&#8217;s tucked below the status display and easy to overlook. Settings that are only applied but not stored will be lost the moment the AIOC is unplugged.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"step5\" class=\"wp-block-heading\">Step 5 \u2014 Configure ASL3 for the AIOC<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Go back to the terminal on the Pi (via the web admin portal or SSH) and (copy\/paste) run these two commands:<\/p>\n\n\n\n<pre class=\"wp-block-code has-tertiary-background-color has-background has-small-font-size\"><code>\n<code>wget -O customize.sh https:\/\/raw.githubusercontent.com\/G1LRO\/AIOC-ASL3-Config\/main\/customize.sh<\/code>\n<code>\nsudo bash customize.sh<\/code>\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s it. The script handles everything, here is a list of the changes made:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Step<\/th><th>File<\/th><th>What it does<\/th><\/tr><\/thead><tbody><tr><td>1<\/td><td><code>res_usbradio.conf<\/code><\/td><td>Enables the AIOC USB device (<code>1209:7388<\/code>)<\/td><\/tr><tr><td>2<\/td><td>Asterisk<\/td><td>Restarts so the AIOC is recognised immediately<\/td><\/tr><tr><td>3<\/td><td><code>simpleusb.conf<\/code><\/td><td>Sets correct PTT, COS, and CTCSS settings<\/td><\/tr><tr><td>4<\/td><td><code>rpt.conf<\/code><\/td><td>Sets half duplex mode<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Timestamped backups of all modified config files are created before any changes are made.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Full details of this script are at: <a href=\"https:\/\/github.com\/G1LRO\/AIOC-ASL3-Config\">https:\/\/github.com\/G1LRO\/AIOC-ASL3-Config<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"step6\" class=\"wp-block-heading\">Step 6 \u2014 Tune the ASL3<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before tuning, prepare your node HT:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Set it to a quiet frequency with <strong>squelch closed<\/strong><\/li>\n\n\n\n<li>Set it to <strong>lowest TX power<\/strong><\/li>\n\n\n\n<li>Test calling the node HT from your second radio to confirm audio is clear \u2014 set volume around <strong>50%<\/strong>, not distorting<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Now plug the AIOC into the radio (with the other end still connected to the Pi), return to the terminal and run:<\/p>\n\n\n\n<pre class=\"wp-block-code has-tertiary-background-color has-background\"><code>\nsudo simpleusb-tune-menu\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Work through the tune menu:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Option<\/th><th>What to do<\/th><\/tr><\/thead><tbody><tr><td><strong>V<\/strong><\/td><td>Verify COS \u2014 key the node HT and confirm COS opens; unkey and confirm it closes<\/td><\/tr><tr><td><strong>e<\/strong><\/td><td>Echo test \u2014 transmit to the node HT, you should hear yourself played back<\/td><\/tr><tr><td><strong>2<\/strong><\/td><td>Set audio levels \u2014 use the <strong>volume control on the node HT<\/strong> as your primary adjustment<\/td><\/tr><tr><td><strong>W<\/strong><\/td><td>Write settings when everything sounds good<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Audio level tip:<\/strong> Always start audio level adjustment with the radio&#8217;s volume knob \u2014 it has the biggest effect and keeps your software gain settings in a sensible range.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">That&#8217;s it!<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Your AllStarLink node is up and running. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Do some basic tests with a connection to the Hubnet Parrot node <strong>40894 <\/strong>and check everything sounds great.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here it is in action:<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"478\" style=\"aspect-ratio: 848 \/ 478;\" width=\"848\" controls src=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/aioc-spk-cos-demo.mp4\"><\/video><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"vcos\" class=\"wp-block-heading\">Appendix: Virtual COS (VCOS) \u2014 Last Resort<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If hardware COS isn&#8217;t an option for your radio, VCOS can work in some situations. Rather than detecting the RF carrier, VCOS monitors the audio level \u2014 silence means no carrier, audio means carrier.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>VCOS limitations:<\/strong> Because it works on audio level rather than RF carrier, VCOS can clip the start or end of a transmission and drop mid-stream during quiet moments in speech. Use a hardware COS method wherever possible.<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Hard limit:<\/strong> If your radio&#8217;s audio output is continuously noisy when unsquelched \u2014 for example, a data port with no hardware squelch \u2014 VCOS will not work at all.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Configuring VCOS<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In the AIOC utility (<a href=\"https:\/\/g1lro.github.io\/aioc-util\/\">https:\/\/g1lro.github.io\/aioc-util\/<\/a>):<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Enable <strong>Virtual COS<\/strong>.<\/li>\n\n\n\n<li>Set the <strong>VCOS threshold<\/strong> to approximately <strong>1500<\/strong> \u2014 think of this as a squelch control. Too low and background noise holds COS open; too high and legitimate signals won&#8217;t trigger it.<\/li>\n\n\n\n<li>Set the <strong>VCOS timing<\/strong> to approximately <strong>8000<\/strong>.<\/li>\n\n\n\n<li>Click <strong>Apply<\/strong>, then scroll down and click <strong>Store to Flash<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">In the tune menu, set <strong>Carrier From<\/strong> to <code>usb<\/code> (active high \u2014 the normal VCOS setting).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Verify the activity of the virtual COS by seeing the GPIO (Vol\u2212) trigger on received audio in the AIOC utility &#8211; this will be the COS signal for ASL3<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"927\" height=\"200\" src=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-20.png\" alt=\"\" class=\"wp-image-1877\" srcset=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-20.png 927w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-20-300x65.png 300w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-20-768x166.png 768w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-20-600x129.png 600w\" sizes=\"auto, (max-width: 927px) 100vw, 927px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"flash\" class=\"wp-block-heading\">Re-flash the AIOC<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to clear any previos settings in your AIOC or load the latest firmware then this simple guide helps:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Configure the AIOC for programming by bridging the two end holes on the programming header, then connect to your PC:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1484\" height=\"835\" src=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/WhatsApp-Image-2024-04-22-at-21.48.22_7a705323-edited.jpg\" alt=\"\" class=\"wp-image-1617\" srcset=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/WhatsApp-Image-2024-04-22-at-21.48.22_7a705323-edited.jpg 1484w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/WhatsApp-Image-2024-04-22-at-21.48.22_7a705323-edited-300x169.jpg 300w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/WhatsApp-Image-2024-04-22-at-21.48.22_7a705323-edited-1024x576.jpg 1024w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/WhatsApp-Image-2024-04-22-at-21.48.22_7a705323-edited-768x432.jpg 768w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/WhatsApp-Image-2024-04-22-at-21.48.22_7a705323-edited-600x338.jpg 600w\" sizes=\"auto, (max-width: 1484px) 100vw, 1484px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Download AIOC Firmware file: <a href=\"https:\/\/github.com\/skuep\/AIOC\/releases\/download\/v1.4.1\/aioc-fw-1.4.1.bin\">https:\/\/github.com\/skuep\/AIOC\/releases\/download\/v1.4.1\/aioc-fw-1.4.1.bin<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Browse to web-based software loader: <a href=\"https:\/\/devanlai.github.io\/webdfu\/dfu-util\/\">https:\/\/devanlai.github.io\/webdfu\/dfu-util\/<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"387\" src=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-10-1024x387.png\" alt=\"\" class=\"wp-image-1618\" srcset=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-10-1024x387.png 1024w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-10-300x113.png 300w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-10-768x290.png 768w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-10-600x227.png 600w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-10.png 1487w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Connect the AIOC then click connect in the browser<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Select the device <strong>STM32 Bootloader <\/strong>then <strong>Internal Flash<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"846\" height=\"214\" src=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-11.png\" alt=\"\" class=\"wp-image-1619\" srcset=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-11.png 846w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-11-300x76.png 300w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-11-768x194.png 768w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-11-600x152.png 600w\" sizes=\"auto, (max-width: 846px) 100vw, 846px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Choose the AIOC firmware file previously downloaded and click download<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"668\" src=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-12.png\" alt=\"\" class=\"wp-image-1620\" srcset=\"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-12.png 900w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-12-300x223.png 300w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-12-768x570.png 768w, https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/image-12-600x445.png 600w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><strong>Disconnect AIOC from USB after flashing <\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Troubleshooting<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>COS permanently open (node always keyed)<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>With <code>usbinvert<\/code>: try switching to <code>usb<\/code><\/li>\n\n\n\n<li>With VCOS: threshold may be too low \u2014 raise it in the AIOC utility and store to flash<\/li>\n\n\n\n<li>Check radio: continuous audio noise on the output means VCOS won&#8217;t work \u2014 you need hardware COS<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>COS never opens<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Try toggling between <code>usb<\/code> and <code>usbinvert<\/code> in the tune menu<\/li>\n\n\n\n<li>With VCOS: threshold may be too high \u2014 lower it<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Node keying in a loop<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Almost always a duplex setting issue \u2014 confirm <code>duplex = 1<\/code> in <code>rpt.conf<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>AIOC not recognised by ASL3<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Run <code>lsusb<\/code> and confirm you see <code>1209:7388<\/code><\/li>\n\n\n\n<li>Confirm the <code>customize.sh<\/code> script has been run and Asterisk restarted<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">73 de G1LRO<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Earlier this year I announced a refresh of the AIOC hardware \u2014 new hardware COS circuitry, improved voltage regulation, and a promise of a definitive how-to guide and setup script for ASL3. This is that guide. The new G1LRO AIOC board stays true to the original form factor while adding proper hardware COS support \u2014 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1622,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1593","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"jetpack_featured_media_url":"https:\/\/g1lro.uk\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-06-170934.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/g1lro.uk\/index.php?rest_route=\/wp\/v2\/posts\/1593","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/g1lro.uk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/g1lro.uk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/g1lro.uk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/g1lro.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1593"}],"version-history":[{"count":16,"href":"https:\/\/g1lro.uk\/index.php?rest_route=\/wp\/v2\/posts\/1593\/revisions"}],"predecessor-version":[{"id":1878,"href":"https:\/\/g1lro.uk\/index.php?rest_route=\/wp\/v2\/posts\/1593\/revisions\/1878"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/g1lro.uk\/index.php?rest_route=\/wp\/v2\/media\/1622"}],"wp:attachment":[{"href":"https:\/\/g1lro.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/g1lro.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/g1lro.uk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}