BLE TNCs
Newer TNCs, such as the Mobilinkd TNC4 in LE mode and the B.B. Link, speak KISS over Bluetooth Low Energy. APRS Connect supports them as their own channel type, and the setup is genuinely different from Bluetooth Classic: you do not pair the TNC first. LoRa APRS trackers connect the same way; see LoRa APRS trackers below.
BLE is not the paired list
A BLE TNC is connected to directly, so you do not pair it beforehand, and most never appear in Android's Bluetooth settings at all. An empty paired list does not indicate a problem. The way to find one is to listen for it advertising, which is what the app's scan does.
Some radios ask to be paired the first time the app connects. The request comes from the phone, as a dialog or as a notification: accept it, and the channel finishes connecting. You have about a minute. On Android the channel says PAIRING while this is going on. If the channel keeps saying it is reconnecting, look for a pairing request you have not answered, and close any other app that is connected to the radio, such as the maker's programming app, because most radios take one Bluetooth connection at a time.
A radio with a built-in TNC, such as a BTECH UV-PRO, will only pair while it is in pairing mode. Outside it, the radio takes the connection from a phone it does not know and ends it at once, and the channel says so: put the radio in pairing mode from its own Bluetooth menu, then tap Reconnect. This is needed once. Afterwards the radio reconnects in its normal mode. Android may ask twice, once for each kind of Bluetooth the radio has; accept both.
A Tidradio TD-H9 uses its own Bluetooth service rather than the usual one, and the app knows about it: pick the radio in the scan and the channel connects, with no pairing step. Close the maker's app first, because the radio takes one Bluetooth connection at a time. Two settings on the radio matter, both under Menu → APRS:
- APRS Switch on, and your callsign and SSID entered.
- Advanced Set → APRS RX CH set to the channel tuned to your APRS frequency (CH-A or CH-B). It is off from the factory, and while it is off the radio still transmits what the app sends but passes nothing it hears back to the app: the channel shows CONNECTED with a sent count and 0 received.
The transmit delay is not sent to a TD-H9, because its TNC is the radio's own firmware; set that in the radio's APRS menu too. The browser build does not support the TD-H9 yet.
A Mobilinkd TNC4 does both Classic and LE: it has to be switched into LE mode (in the Mobilinkd configuration) to be found here. In Classic mode, use the Bluetooth TNC channel type instead.
Add the channel
- Open the Radio screen on the tab bar and tap Add channel.
- Pick Bluetooth LE TNC, described as "A BLE TNC or LoRa APRS tracker: Mobilinkd TNC4 in LE mode, B.B. Link".
- Switch the TNC on and keep it nearby. The Nearby devices section starts listening; a scan runs for about 20 seconds, and SCAN starts another whenever you want one.
- Devices appear as the scan hears them, each with its address and signal strength. Likely TNCs, recognised by the serial service they advertise or by name, are sorted first and tagged LIKELY TNC; among the rest, the strongest signal sorts first, which is usually the device next to the phone.
- Tap your TNC. The channel connects, and if you haven't named it yet it adopts the device's name.
The first time through, Android asks for the nearby-devices (Bluetooth) permission, and an iPhone asks for Bluetooth access. On phones below Android 12 there's an extra system quirk: Location has to be switched on for any BLE scan to return results. Bluetooth on its own is not enough, and the app tells you when this is the problem rather than showing an empty list.
As with the other radio types, one BLE link is live at a time, so choosing a device stands down any other BLE channel. A BLE channel runs happily alongside a Bluetooth Classic channel, though: they are separate radios' links.
When the TNC doesn't appear
An empty scan says "Nothing heard. Switch the TNC on and bring it close, then scan again." If that doesn't do it:
- It may be connected to something else. A BLE device stops advertising while it is connected, so a TNC4 still linked to another app or another phone is invisible to a scan. Disconnect it there (or power-cycle the TNC) and scan again.
- Check it's in LE mode. A TNC4 in Classic mode advertises nothing a BLE scan can see.
- Already yours? The device this channel is pointed at stays in the list, marked CHOSEN, even when a scan doesn't hear it, precisely because a TNC that's off, out of range, or already connected to this phone doesn't advertise. A working channel isn't made to look unconfigured by a silent scan.
Settings and status
Protocol decides how the app talks to the device:
- Automatic (the default) uses KISS if the device offers the BLE KISS service, and plain text if it offers only a serial (Nordic UART) service.
- KISS is for TNCs, including one behind a Bluetooth serial adapter.
- Plain text sends each packet as one line of text and nothing else. It is for LoRa APRS trackers with Bluetooth set to TNC2.
Unless Protocol is Plain text, the channel gets the same Transmit delay setting (the tone sent before the data) as every channel that keys a radio. A hardware TNC with its own transmit-delay setting may use that one instead of the app's. It also gets KISS port, which stays at 0 unless the TNC has more than one radio behind one link; see Two radios on one TNC.
B.B. Link (TH-D74 and TH-D75 on an iPhone). The app sends a B.B. Link no TNC parameters at all, and the channel says so in place of the transmit-delay setting. When the phone connects, the adapter is busy switching the radio's TNC into KISS mode, and parameters sent at that moment interrupt it. The link then shows CONNECTED and never hears a packet. Set the transmit delay in the radio's own menu instead. Leave the adapter's rig control on, so it puts the radio into KISS mode for you; nothing on the radio needs to be set by hand.
Once connected, the channel row on the Radio screen reports honestly: received and sent counters, CONNECTED · QUIET when the link is up but the frequency is silent, and "check the radio is in KISS mode" advice when it connects but never hears anything. See Connect a radio for how channel status works everywhere.
Diagnostics
When a radio will not connect, or connects and stays quiet, the channel row cannot say why: a device offering the wrong service, a pairing request nobody answered, and a radio that is not in KISS mode all look the same from there. Every channel has a Diagnostics section at the bottom of its settings; see Connect a radio for what it records and how to send it. A Bluetooth LE channel adds its module's own record: the services the device offers, pairing, each connection and disconnection, and the size of each frame each way.
LoRa APRS trackers
A LoRa APRS tracker running CA2RXU's firmware (LoRa_APRS_Tracker) can work as the radio for the app over Bluetooth LE, on 433.775 MHz or wherever your network runs. The tracker handles the LoRa side; the app sends and receives ordinary APRS packets through it, under your callsign.
- In the tracker's configuration, switch Bluetooth on and set it to BLE. Its Bluetooth name is LoRaTracker unless you changed it.
- Add a Bluetooth LE TNC channel as above and tap the tracker in the list.
- Leave Protocol on Automatic. The tracker's KISS setting decides what it offers: with KISS on it speaks KISS, with KISS off it speaks plain text, and Automatic follows either. If you change that setting on the tracker, the app picks it up the next time the link connects.
Things to know:
- A packet has to fit in one LoRa packet. In plain text, a packet longer than 251 characters is refused rather than cut in two, and the send fails with a message saying so. Ordinary positions and messages are far shorter.
- Every line the app sends ends with a newline. Plain text is a stream of bytes in both directions, and firmware that reads it as one waits for the end of a line before it transmits. A tracker that instead treats each write as a whole packet sends that newline on the air as one extra character. When Protocol is Plain text, a Line ending setting appears under it: leave it on Newline unless your tracker is one of those, and choose None to save the character if it is. If a tracker connects, shows no error, and transmits nothing at all, Newline is the setting to check first.
- The tracker also beacons for itself. If both the tracker and the app are set to beacon, your position goes out twice. Turn one of them off.
- No transmit delay or battery reading in plain text. Nothing is sent to the tracker when the link connects, because the tracker transmits everything it receives from the phone.
TNC battery
A Mobilinkd TNC3 or TNC4 reports its own battery level over the link it is already carrying packets on, and the channel row on the Radio screen shows it: a percentage, the voltage the TNC itself reported, and a notification once the pack falls to about 3.6 V. That is roughly a tenth left, which on a TNC4 is a couple of hours of listening rather than a couple of minutes. It is the one part of a packet station that goes flat quietly: the phone shows its own battery and the radio shows its own, and until now the TNC in the glovebox showed nothing until it stopped.
The RF half of the connection indicator turns red while a TNC is that low. The indicator is the chip in the header, on screen wherever you are, so you do not have to be looking at the Radio screen to find out. It stays filled, because a TNC on its last tenth is still connected and can still transmit: the fill says what the link is doing, the colour says how happy we are about it.
Only Mobilinkd hardware is asked. The query is a manufacturer-specific KISS command, so the app sends it only to a device whose name says Mobilinkd, TNC2, TNC3 or TNC4. A Kenwood radio, a handheld with a TNC inside it, or a software bridge never receives the query at all. If you have renamed your TNC to something with neither word in it, the reading goes away; putting "TNC4" back in the name brings it back. It is also not sent on a channel with Send TNC parameters switched off.
The percentage is worked out from the voltage, and a lithium cell's voltage is not a straight line against how much charge is left, which is why the voltage is shown next to it. On a USB channel the row says on USB power: the cable carrying KISS is charging the TNC too, so what you are reading is the charger rather than the pack.
In a browser
The web build of APRS Connect can reach a BLE TNC too, in Chrome or Edge on a computer. Firefox and Safari have no Bluetooth API at all, so the Bluetooth LE TNC channel type does not appear there.
A browser cannot scan the way the phone does. There is no passive listening, only a one-shot device chooser the browser itself puts up. Choose the device opens it; pick your TNC or tracker from the list Windows, macOS, Linux or ChromeOS shows you, the same way you would pick a printer.
Reconnecting is the one real difference from the phone. As of this writing, Chrome and Edge ask you to choose the device again each time the channel connects, including after a page reload. That is a current limitation of the browser, not a setting in the app, and it applies everywhere Chrome or Edge run without a flag switched on by hand. If a future release of your browser remembers the device instead, the app notices and stops asking.
Everything else works the same as on the phone, including Automatic/KISS/Plain text, the LoRa APRS tracker setup above, and transmit delay.
In the Windows app
The Windows app scans for a BLE TNC the way the phone apps do, and reconnects to it on its own. The computer needs a Bluetooth adapter that supports Bluetooth Low Energy.
A Tidradio TD-H9 connects from the Windows app too: pick it in the scan, with the same two settings on the radio as above.
Next steps
- Send your first beacon, over RF through the TNC4.
- Background & battery, to keep the link up with the screen off.
- Connect a radio, which compares all six channel types, including USB for the same TNC4 on an OTG cable.
Last updated 9 October 2026