User Tools

Site Tools


packet:ninotnc

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
packet:ninotnc [2024/03/14 21:18] – extra parameter to setup-gpis no longer required g5dsgpacket:ninotnc [2026/02/08 14:36] (current) – [Firmware] m0lte
Line 9: Line 9:
 [[https://groups.io/g/ninotnc|groups.io mailing list]] [[https://groups.io/g/ninotnc|groups.io mailing list]]
  
-===== Group Buys ===== 
  
-OARC has run two successful UK/EI group buys, with around 250 kits distributed across two rounds.+[[packet:ninotnc-ordering-howto|Here is information on ordering a set of components to build up a NinoTNC]]. It's fast and easy.
  
-There are no current plans for another group buy, however never say never. 
  
-Board + CPU sets are available in the UK, see below.+===== EU Stock =====
  
-[[packet:ninotnc-ordering-howto|Here is information on ordering a set of components to build up a NinoTNC]]. It's fast and easy.+Tindie shop by Vic EI5IYB [[https://www.tindie.com/products/ei5iyb/ninotnc-a4r3-board-and-cpu-chip/|https://www.tindie.com/products/ei5iyb/ninotnc-a4r3-board-and-cpu-chip/]] If shipping to your country is not listed, just contact Vic, via Tindie or QRZ mail, and he will get you sorted.
  
-===== UK Stock =====+===== Operating modes =====
  
-By arrangement, Tom M0LTE will be holding stock of PCB + microcontroller only kits in the UK starting mid AugustThis will be on an ongoing basis. These will be available with circa 2 day shipping from [[https://ko-fi.com/s/981d919ea3|https://ko-fi.com/s/981d919ea3]]. Two sets of components from Mouser takes you over their free shipping threshold.+Current modes as of firmware release 3.40 4.40 v40 (all refer to the same version)
  
-===== Operating modes =====+^# ^ Mode ^QtSM Mode ^ Baud  ^ bps   ^ Mod  ^ Proto ^ Usage  ^ BW     ^ Typical use                                                                                ^ 
 +|1 | 0001 | ? |19200 | 19200 | 4FSK | IL2Pc | FM     | 25k    | High SNR links between dedicated data radios. v41 firmware required in practice.           | 
 +|3 | 0011 | ? | 9600  | 9600  | 4FSK | IL2Pc | FM     | 12.5k  | High SNR links between dedicated data radios. Suitable for UK 2m band.                     | 
 +|2 | 0010 | ? | 9600  | 9600  | GFSK | IL2Pc | FM     | 25k    | Current recommended mode for new 70cm (25kHz) links where both ends are compatible         | 
 +|5 | 0101 | ? | 3600  | 3600  | QPSK | IL2Pc | FM     | 12.5k  | For situations where only a speaker/mic connection is available but > 1200 baud is desired | 
 +|11| 1011 | QPSK v26a | 1200  | 2400  | QPSK | IL2Pc | SSB/FM | 2.4kHz | HF - quadrature version of 1200 BPSK, twice the throughput for +3dB SNR.                   | 
 +|10| 1010 | ? | 1200  | 1200  | BPSK | IL2Pc | SSB/FM | 2.4kHz | HF - use for circuits where wider transmission is acceptable.                              | 
 +|9 | 1001 | ? | 300   | 600   | QPSK | IL2Pc | SSB    | 500Hz  | HF - quadrature version of 300 BPSK, twice the throughput for +3dB SNR                     | 
 +|8 | 1000 | BPSK AX.25 300bd | 300   | 300   | BPSK | IL2Pc | SSB    | 500Hz  | HF - slowest but best performing mode. ~7dB better than classic 300 baud FSK AX.25         | 
 +|14| 1110 | AFSK AX.25 300bd | 300   | 300   | AFSK | IL2Pc | SSB    | 500Hz  | CRC improvement of IL2P 300 baud AX.25. Recommended if you can't do BPSK / QPSK on HF.     | 
 +|- | 1111 | ? | n/a   | n/a   | n/a  | n/a   | n/a    | n/a    | Allows the mode to be set by a SETHW KISS command (v41+).                                  |
  
-Current modes as of firmware release 3.3.1:+IL2Pc is shorthand for IL2P plus CRC. 
 + 
 +**QtSM NOTEFor IL2P and CRC modes, these need to be enabled per modem in the Settings/Modems menu**
  
-^ Mode ^ Baud ^ bps  ^ Mod  ^ Protocol ^ Intended mode ^ BW     ^ Typical use                                                                                ^ 
-| 0010 | 9600 | 9600 | GFSK | IL2P+CRC | FM            | 25k    | Current recommended mode for new 70cm (25kHz) links where both ends are compatible         | 
-| 0100 | 4800 | 4800 | GFSK | IL2P+CRC | FM            | 12.5k  | Current recommended mode for new 2m (12.5kHz) links where both ends are compatible         | 
-| 0101 | 2400 | 2400 | DPSK | IL2P     | FM            | 12.5k  | For situations where only a speaker/mic connection is available but > 1200 baud is desired | 
-| 1011 | 1200 | 2400 | QPSK | IL2P+CRC | SSB/FM        | 2.4kHz | HF - quadrature version of 1200 BPSK, twice the throughput for +3dB SNR.                   | 
-| 1010 | 1200 | 1200 | BPSK | IL2P+CRC | SSB/FM        | 2.4kHz | HF - use for circuits where wider transmission is acceptable.                              | 
-| 1001 | 300  | 600  | QPSK | IL2P+CRC | SSB           | 500Hz  | HF - quadrature version of 300 BPSK, twice the throughput for +3dB SNR                     | 
-| 1000 | 300  | 300  | BPSK | IL2P+CRC | SSB           | 500Hz  | HF - slowest but best performing mode. ~7dB better than classic 300 baud FSK AX.25         | 
-| 1110 | 300  | 300  | AFSK | IL2P+CRC | SSB           | 500Hz  | CRC improvement of IL2P 300 baud AX.25. Recommended if you can't do BPSK / QPSK on HF.     | 
  
 Superseded (but still supported) modes: Superseded (but still supported) modes:
  
-^ Mode ^ Baud ^ bps  ^ Mod  ^ Protocol ^ Superseded by      Intended mode ^ BW     ^ Typical use                                                                        ^ +^# ^ Mode ^ Baud ^ bps  ^ Mod  ^ Protocol ^ Superseded by   Usage  ^ BW     ^ Typical use                                                                        ^ 
-| 0000 | 9600 | 9600 | GFSK | AX.25    | 9600 GFSK IL2P     | FM            | 25k    | Backwards compatibility with legacy G3RUH modems                                   | +|0 | 0000 | 9600 | 9600 | GFSK | AX.25    | 9600 GFSK IL2P  | FM     | 25k    | Backwards compatibility with legacy G3RUH modems                                   | 
-0001 9600 9600 GFSK IL2P     | 9600 GFSK IL2P+CRC FM            | 25k    Backwards compatibility. Obsoleted by 9600 GFSK IL2P+CRC                           | +|0100 4800 4800 | GFSK | IL2Pc    | 9600 4FSK IL2Pc FM     | 12.5k  | Was the recommended mode for new 2m (12.5kHz) links where both ends are compatible, until 9k6 4FSK came along 
-| 0011 | 4800 | 4800 | GFSK | IL2P     | 4800 GFSK IL2P+CRC | FM            | 12.5k  | Debugging against 4800 GFSK IL2P+CRC in case of issues with the CRC mode           +|| 0111 | 1200 | 1200 | AFSK | IL2P     | 4800 GFSK IL2Pc | FM     | 12.5k  | Improvement over 1200 AFSK IL2P, where none of the GFSK modes are possible         | 
-1111 | 1200 | 1200 | BPSK | IL2P     | 1200 BPSK IL2P+CRC | SSB/FM        | 2.4kHz | Backwards compatibility                                                            | +|6 | 0110 | 1200 | 1200 | AFSK | AX.25    | 1200 AFSK IL2P  | FM     | 12.5k  | VHF APRS, backwards compatibility with classic / legacy TNCs like PK232            | 
-| 0111 | 1200 | 1200 | AFSK | IL2P     | 4800 GFSK IL2P+CRC | FM            | 12.5k  | Improvement over 1200 AFSK IL2P, where none of the GFSK modes are possible         | +|12| 1100 | 300  | 300  | AFSK | AX.25    | 300 AFSK IL2P   | SSB    | 500Hz  | Backwards compatibility with legacy HF packet modems. Modulation invented c. 1962! | 
-| 0110 | 1200 | 1200 | AFSK | AX.25    | 1200 AFSK IL2P     | FM            | 12.5k  | VHF APRS, backwards compatibility with classic / legacy TNCs like PK232            | +|13| 1101 | 300  | 300  | AFSK | IL2P     | 300 AFSK IL2Pc  | SSB    | 500Hz  | IL2P improvement of AFSK 300 baud AX.25.                                           |
-| 1100 | 300  | 300  | AFSK | AX.25    | 300 AFSK IL2P      | SSB           | 500Hz  | Backwards compatibility with legacy HF packet modems. Modulation invented c. 1962! | +
-| 1101 | 300  | 300  | AFSK | IL2P     | 300 AFSK IL2P+CRC  | SSB           | 500Hz  | IL2P improvement of AFSK 300 baud AX.25.                                           |+
  
 Prefer: Prefer:
-  * QPSK > BPSK > DPSK > AFSK +  * 4FSK > QPSK > BPSK > DPSK > AFSK 
-  * IL2P+CRC > IL2P > IL2P > AX.25+  * IL2Pc > IL2P > AX.25
   * SSB > FM   * SSB > FM
  
 Baud is symbols per second, bps is bits per second. Where baud=bps, that means each symbol carries 1 bit (i.e. a symbol can have two states, 0 or 1). Where baud is 2x bps, that means each symbol carries 2 bits (i.e. a symbol can have four states: 00, 01, 10, 11). Baud is symbols per second, bps is bits per second. Where baud=bps, that means each symbol carries 1 bit (i.e. a symbol can have two states, 0 or 1). Where baud is 2x bps, that means each symbol carries 2 bits (i.e. a symbol can have four states: 00, 01, 10, 11).
 +
 +** Decoding Operating Modes from BrdSwchMod **
 +
 +When the test button is pressed on the TNC, along with the frame it emits to the radio, it will emit a different frame to the KISS client that is connected.  The BrdSwchMod value in the test frame can be decoded to share information about the TNC:
 +
 +  * the first two digits the board version (a decimal number, e.g. 04)
 +  * the next two are the physical MODE switch setting (encoded as binary, for example 06 is 0110)
 +  * the last four are the operating mode
 +
 +For example, for a value of ''BrdSwchMod:040F0023'' as used on the HF interface of GB7WEM, we can see:
 +
 +  * Board Revision 04
 +  * MODE switch setting 1111 (set by SETHW hardware command)
 +  * Current Operating Mode 0x23 (MODE_300_AFSKPLL_IL2P_CRC)
 +
 +The Operating Mode values are **internal** and **may change with firmware version**, so you can use the following table to map the operating mode values **for Version .44 of the Firmware** (current at time of writing):
 +
 +^ Switch Mode ^ BrdSwchMod Value ^ Mode Name                 ^
 +| 0 (0000)    | 0x00             | MODE_9600_GFSK_AX25       |
 +| 1 (0001)    | 0x41             | MODE_19200_4FSK           |
 +| 2 (0010)    | 0xB0             | MODE_9600_GFSK_IL2P_CRC   |
 +| 3 (0011)    | 0x40             | MODE_9600_4FSK            |
 +| 4 (0100)    | 0xA3             | MODE_4800_GFSK_IL2P_CRC   |
 +| 5 (0101)    | 0xF1             | MODE_3600_QPSK_IL2P_CRC   |
 +| 6 (0110)    | 0x02             | MODE_1200_AFSK_AX25       |
 +| 7 (0111)    | 0x93             | MODE_1200_AFSK_IL2P_CRC   |
 +| 8 (1000)    | 0x91             | MODE_300_BPSK_IL2P_CRC    |
 +| 9 (1001)    | 0x92             | MODE_600_QPSK_IL2P_CRC    |
 +| 10 (1010)   | 0xA0             | MODE_1200_BPSK_IL2P_CRC   |
 +| 11 (1011)   | 0xA2             | MODE_2400_QPSK_IL2P_CRC   |
 +| 12 (1100)   | 0x31             | MODE_300_AFSK_AX25        |
 +| 13 (1101)   | 0x22             | MODE_300_AFSKPLL_IL2P     |
 +| 14 (1110)   | 0x23             | MODE_300_AFSKPLL_IL2P_CRC |
 +| 15 (1111)   | 0xF3             | MODE_SET_FROM_KISS        |
 ===== Signals settings ===== ===== Signals settings =====
  
 +
 +
 +==== Cheat sheet ====
 +
 +  * Switch 1 is TX audio range selection - on/up is high level for louder transmitted audio, off/down is for quieter transmitted audio
 +  * Switch 2 is RX audio sensitivity - on/up is low sensitivity for loud radios, off/down is high sensitivity for quiet radios
 +  * Switch 3 is AC/DC coupling - normally should be off/down apart from specific radios
 +  * Switch 4 is external carrier detect - normally should be off/down unless you need it for a specific purpose
 +
 +^ Radio              ^ Signals ^ Notes ^
 +| Yaesu FT-450D      | 0000    | Requires low level TX audio - the FT-450D is very sensitive.\\  RX audio setting probably doesn't matter, control with appropriate RF gain / AGC, but off/down works. |
 +| Tait TM8100 / 8200 | 1100    | Requires high level TX audio, else the transmitted audio is too quiet in the range of the pot.\\ Requires low level RX audio, else CRC is always lit. \\ Requires AC coupling to block the DC which is present on the TX audio pin. \\ Works with 19k2!! |
 +| Tait T2010 I & II | 1100    | Tested up to Modes 0100 4800 GFSK IL2P+CRC |
 +| Yaesu FTM-300D | 1100    | Tested up to Modes 0100 4800 GFSK IL2P+CRC |
 +| Kenwood TK-90 | 0100 | TX audio is pretty sensitive, works better in mic range. |
 +| Quansheng UV-K5 | 1100 | Wiktor - SA0WII has these working with the now well known 9k6 hardware mod |
 ==== Switch 1 - Transmit audio range selection - DATA/MIC ==== ==== Switch 1 - Transmit audio range selection - DATA/MIC ====
  
Line 94: Line 143:
  
  
-===== Experimental new modes ===== 
- 
-Packet radio on HF is typically 300 baud (and bits/sec), using the Bell 103 modem standard. This was released by AT&T Corporation in 1962. It is extremely susceptible to interference and performs poorly with weak signals common in amateur radio. 
- 
-61 years later, we have far more processing power at our disposal, which means it is possible to achieve much better performance using the same RF bandwidth. While there are some interesting projects around, e.g. FreeDV / Codec2, nothing so far has been found which is easily accessible for amateurs to deploy in a packet radio setting.  
- 
-Until now. 
- 
-Nino, KK4HEJ, has been developing a number of new modes which can be added to the NinoTNC with a simple firmware upgrade. Instead of frequency-shift keying (i.e. tone changing in pitch), the new modes are based on phase-shift keying (i.e. phase of a continuous sine wave changing). BPSK (binary phase shift keying) devices modulate input signals by 0° and 180° phase shifts. QPSK (quadrature phase shift keying) devices modulate input signals by 0°, 90°, 180°, and 270° phase shifts, thus in QPSK mode, each symbol can have one of four values, meaning it is possible to transmit two bits of data in each symbol as opposed to just one, doubling the effective throughput in the same bandwidth, at the expense of requiring a bit more signal-to-noise ratio. 
- 
-The great news is that these modes are now present in the latest firmware. 
- 
-These new modes are then selectable using the Signals DIP switch. The software node / client settings can be left as-is - the modulation is completely transparent to them, and this can be used for any kind of packet radio traffic. However, given these are new modes, which may perform quite differently (likely better!) than Bell 103, new values for other parameters such as maxframe, frack, paclen may need to be found, but the Network 105 recommendation of paclen=60, maxframe=1, frack=5000 are probably a good starting point until more is known about how these modes perform in the wild.  
- 
-Until we know more, suitable BPQ port settings might be: 
- 
-<code> 
-PORT 
-  PORTNUM=1 
-  ID=HF 
-  TYPE=ASYNC 
-  PROTOCOL=KISS 
-  KISSOPTIONS=ACKMODE 
-  COMPORT=/dev/ttyACM0 
-  SPEED=57600 
-  FRACK=7000 
-  PACLEN=80 
-  NODESPACLEN=60 
-  DIGIFLAG=0 
-  MAXFRAME=1 
-  RETRIES=10 
-  QUALITY=192 
-  MINQUAL=100 
-  TXDELAY=100 
-  TXTAIL=300 
-  RESPTIME=100 
-  T3=300 
-ENDPORT 
-</code> 
- 
-Obviously, there is no cross- or backwards-compatibility with any old modes or indeed any other model of modem or software out there at this point. You switch exclusively to this on-air scheme using the Signals DIP switch on the NinoTNC. 
- 
-Some notes from Nino: 
- 
-> The speeds refer to gross bit rate, not including IL2P overhead. The baud rates are 300 for the narrow modes and 1200 for the wide modes. Net bit rate will obviously be slightly less.  
- 
-> Precise tuning will always be an advantage on SSB, but these have more inherent frequency mismatch tolerance than AFSK. 300 can deal with up to about 50 Hz. 1200 should work up to about 100 Hz. The QPSK modes are slightly less, respectively. 
- 
-> In addition, the wideband PSK modes should work better than AFSK over FM, e.g. on 2m. I also expect these to work through mic/speaker connections or direct modulator/discriminator connections. Data port not required, but also not an obstacle. 
- 
-> The old 2400 bps audio mode at 0100 and 0101 will go away. It wasn't based on any widely-used standard and 2400 QPSK is far superior. 
- 
-Performing the firmware update is easy- follow the instructions [[https://github.com/ninocarrillo/flashtnc/blob/master/README.md|here]] on Windows or Linux. Be sure to take the precautions mentioned on that page. 
- 
-Once you have updated, you can set your signals switch to one of the new modes as per the table above. 
- 
-To switch back to the previous mode, just change your signals switch settings. You don't even need to restart your software - the change is immediate and totally transparent to the software running on the PC. 
- 
-Given these are new modes, it is at the very least good manners that we ID regularly in a well-known mode. To that end, this firmware IDs every 9 minutes in BPSK/QPSK modes, modulated in 1600/1800 AFSK AX.25. 
- 
-On transmit, like any data mode, it's important to make sure that your signal is linear, i.e. clean. My recommendation is to turn your rig power up fairly high, turn your TX DEV pot on the TNC down to zero, hold down the TX TEST button on the NinoTNC until it goes into transmit test mode where it repeatedly transmits frames, let go of the button, then turn up the TX DEV pot on the TNC until you are transmitting the desired power level. Press and hold the TX TEST button for a moment and the TNC will come out of TX test mode. 
- 
-Usage and testing in any scenario is encouraged: 
- 
-  * between nodes 
-  * accessing a node 
-  * keyboard to keyboard, e.g. using QtTermTCP at both ends 
-  * on QO-100 
-  * even HF APRS! (Maybe someone will put up a BPSK or QPSK iGate?!) 
- 
-Don't use this on established FSK packet channels - this will be QRM to anyone else on frequency - pick a clear channel anywhere in All Modes / Data sections of bands. 
- 
-Please be sure to feed back your experiences to Nino and others via OARC Discord. 
- 
-Usage with QtSoundModem 
- 
-The user must: 
- 
-  * choose "IL2P Mode"->"IL2P RX+TX" or "IL2P Only" under the Settings->Setup Modems menu in QTSM 
-  * and ensure the center frequency in QTSM is set to 1500. 
  
 ===== Surface-mount versions ===== ===== Surface-mount versions =====
Line 201: Line 170:
 [[https://www.printables.com/model/562738-nino-tnc-a4-case|LEDs in a line]] - modified by Jeremy M0JXW [[https://www.printables.com/model/562738-nino-tnc-a4-case|LEDs in a line]] - modified by Jeremy M0JXW
  
 +[[packet:ninotnc-ka2dew-case|KA2DEW case]]
 +
 +[[https://www.printables.com/model/1320071-133u-tray-for-10-inch-rack-with-4x-ninotnc-room-fo|10 inch rack tray for 4x NinoTNC + Raspberry Pi]]
 ===== SLOTTIME and PERSIST ===== ===== SLOTTIME and PERSIST =====
  
Line 254: Line 226:
 0110, 0111: 1248 Hz tone for 3.0kHz deviation \\ 0110, 0111: 1248 Hz tone for 3.0kHz deviation \\
 0101:       2079 Hz tone for 5.0kHz deviation \\ 0101:       2079 Hz tone for 5.0kHz deviation \\
 +C4FSK 9600 - 1039Hz for 2.5kHz outer deviation \\
 +C4FSK 19200 - 2079Hz for 5.0kHz outer deviation \\
 +
 +==== Frequency misalignment ====
 +
 +TL;DR: +/- 4kHz is absolute maximum misalignment for narrow channel, that will still be decoded
 +
 +Tested using a 25kHz Tait TM8105, programmed with a 12.5kHz channel, using a 4k8 GFSK signal with 1.2kHz deviation, and tested with a signal generator. The receive performance was fairly consistent with frequency misalignment up to +-4kHz. At that limit, the Tait's RSSI pin was indicating 3dB less signal strength than when the frequency was perfectly aligned. At +- 5kHz misalignment, receive performance disappeared. All packets lost.
 +
 +Narrowband Kenwood TK-760, nearly the same as the Tait. Also tried a FTM-3100 set to narrow. Similar, but less accurate and wider. It worked +4kHz to -6kHz, suggesting a couple kHz oscillator misalignment.
  
 ===== Misc Linux Notes ===== ===== Misc Linux Notes =====
Line 264: Line 246:
 After creating said file, run ''udevadm trigger'' for it to take effect without rebooting. After creating said file, run ''udevadm trigger'' for it to take effect without rebooting.
  
-==== Auto mode switch ====+If you have more than 1 TNC connected to the same device, it can be tricky to distinguish between them. The MPC2221a chip in the NinoTNC can be configured to expose a unique serial number, and udev rules can be set to ensure these get allocated consistent /dev nodes between reboots/cable swaps etc. 
  
-=== GPIO === +Serial number enumeration is disabled on the MPC2221a chip by defaultit can be enabled using the tool at https://github.com/g5dsg/2221aTool.
-With Raspberry Pi GPIO, put /usr/bin in the crontab pathand add the following to /etc/crontab:+
  
-<code> +''git clone https://github.com/g5dsg/2221aTool.git''
-# 1000 - BPSK300 +
-0 *     * * *   root    raspi-gpio set 5 op dh && raspi-gpio set 6 op dl && raspi-gpio set 13 op dl && raspi-gpio set 19 op dl+
  
-# 1001 - QPSK600 +''sudo pip3 install Click''
-30 *    * * *   root    raspi-gpio set 5 op dh && raspi-gpio set 6 op dl && raspi-gpio set 13 op dl && raspi-gpio set 19 op dh +
-</code>+
  
-dl = drive low, dh = drive high.+''sudo pip3 install pyusb''
  
-Wire the numbered GPIO pins to the bottom of the MODE DIP switch, turn all the switches off, and it'll mode-switch automatically. I've gone for BPSK300 for the first half of each hour, and QPSK600 for the second half.+''sudo python3 ./2221aTool.py enum-serial 1''
  
-I picked GPIOs 56, 13 and 19 (consecutive physical pins) to map to the DIP switch pins from left to right as you look at the PCB.+The chips have unique serial numbers which If preferred, the same tool can be used to specify a serial number for the deviceThe serial can be up to 16 characters (including unicode!)
  
-=== MCP2221A ===+''sudo python3 ./2221aTool.py set-serial 0123456789'' 
  
-The MCP2221A USB chip has four GPIOs which can be used to control the mode, instead of the DIP switches. This can be useful particularly on a remote siteand removes the need for a second cable (and works with a machine without its own GPIO interface).+You can then update the udev rules to use the serial number you've set (or obtained from the output of dmesg / inspecting ls -l /dev/serial/by-idif you keep the chip's original serial)
  
-This is experimental and is likely to change. See https://github.com/g5dsg/2221aTool for up to date info. Thanks to Dan for working on this.+Example udev rules for 2 TNCs with serials 0123456789 and 987654321
  
-General steps:+<file shell /etc/udev/rules.d/99-ninotnc.rules> 
 +# Create a handy symlink to make refering to NinoTNC's easier 
 +SUBSYSTEM=="tty", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="00dd", ATTRS{serial}=="0123456789", SYMLINK+="tnc-2m" 
 +SUBSYSTEM=="tty", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="00dd", ATTRS{serial}=="9876543210", SYMLINK+="tnc-4m" 
 +</file>
  
-''git clone https://github.com/g5dsg/2221aTool.git''+(Thanks to Nathan, MM3NDH for the udev rule.)
  
-Install python3.+==== Remote mode switch ====
  
-then, once (persistent):+=== KISS SETHW command ===
  
-''sudo python3 ./2221aTool.py setup-gpio''+As of firmware v41, NinoTNC supports setting the mode remotely using a SETHW KISS command in combination with all four MODE DIP switches being set to 1.
  
-then, when required (non-persistent):+From the release notes:
  
-''sudo python3 ./2221aTool.py set-gpio 1111''+Use KISS SETHW command (6) followed by mode number in range 0-14Mode number is in the modes table above
  
-where 1111 is the state of the four switchesleft to right.+The KISS MODE setting is written to flash memory. To prevent an immediate flash memory write, add 16 to the mode number in the KISS SETHW command - for examplethe value 14 would become 30.
  
-Wiring as follows:+**BPQ** 
 + 
 +BPQ supports this via the ''KISS'' command. For this command to work, you must set the mode DIP switches to 1-1-1-1 (or //on-on-on-on//), and be in SYSOP mode. To enter SYSOP mode, type ''password'' at the prompt. The prompt will respond with ''OK''. At this point, enter the command below: 
 + 
 +<code> 
 +kiss <port> 6 <value as determined above*> 
 +</code> 
 + 
 +* Remembering to add 16 to the value if you don't want the setting written to memory. 
 + 
 +**BPQ Examples** 
 + 
 +kiss n is the port number - port 3 in these examples 
 + 
 +the 6 is always constant 
 + 
 +^ Set port n to mode         ^ temporary       ^ persistent      ^ 
 +| FSK300 IL2Pc (40m slot 1)  | ''kiss 3 6 30'' | ''kiss 3 6 14''
 +| BPSK300 IL2Pc (40m slot 3) | ''kiss 3 6 24'' | ''kiss 3 6 8''  |  
 +| QPSK600 IL2Pc              | ''kiss 3 6 25'' | ''kiss 3 6 9''  |  
 + 
 +**Linux Kernel** 
 + 
 +When configuring the linux kernel you can add the value required to the ''kissparms'' command in your startup script. For this command to work, you must set the mode DIP switches to 1-1-1-1 (or //on-on-on-on//).  You would then modify the command to include the ''-h'' parameter with whatever value you require: 
 +<code> 
 +kissparms -p <port> -h <value as determined above*> <any other needed parameters>  
 +</code> 
 + 
 +* Remembering to add 16 to the value if you don't want the setting written to memory. 
 + 
 +**Linux Kernel Examples** 
 + 
 +^ Set port n to mode         ^ temporary*       ^ persistent      ^ 
 +| FSK300 IL2Pc (40m slot 1)  | ''kissparms -p HF -h 30'' | ''kissparms -p HF -h 14''
 +| BPSK300 IL2Pc (40m slot 3) | ''kissparms -p HF -h 24'' | ''kissparms -p HF -h 8''  |  
 +| QPSK600 IL2Pc              | ''kissparms -p HF -h 25'' | ''kissparms -p HF -h 9''  |  
 + 
 +* Note - for a startup script you should always use the temporary value rather than writing to memory each time
  
-{{:packet:ninotnc-mcp2221a-mode.jpg?400|}} 
  
 ===== Pinout ===== ===== Pinout =====
  
-Note: this is the BACK / SOLDER side of the PLUG.+Note: this is the BACK / SOLDER side of the PLUG. You are looking at the solder cups, NOT the pins.
  
 {{:kantronicstncwiring.png|}} {{:kantronicstncwiring.png|}}
  
 +===== Firmware =====
 +
 +To check your firmware version, press the test (red) button on TNC and observe the decoded packet.
 +
 +<code>
 +=FirmwareVr:3.41=SerialNmbr:=UptimeMilS:0196CC43=BrdSwchMod:040F0002=AX25RxPkts:000008E5=IL2PRxPkts:
 +00000000=IL2PRxUnCr:00000000=TxPktCount:000008F6=PreamblCnt:0000000B=LoopCycles:0C0281E9=LostADCSmp:00000000
 +</code>
 +
 +To upgrade the firmware, see https://github.com/ninocarrillo/flashtnc/blob/master/README.md.
 +
 +TL;DR:
 +
 +<code>
 +# save a headache
 +sudo systemctl disable linbpq
 +sudo reboot
 +
 +# then...
 +sudo apt install -y python3 python3-pip python3-serial git
 +git clone https://github.com/ninocarrillo/flashtnc
 +cd flashtnc
 +python3 flashtnc.py N9600A-v3-35.hex /dev/ttyACM0
 +
 +# don't forget to...
 +sudo systemctl enable linbpq
 +sudo systemctl start linbpq
 +</code>
 +
 +Use v3 firmware if you have a 256kb chip, or the v4 firmware if you have a 512kb chip. They are functionally identical, just tailored for the memory map of the device.
 +
 +If you get dire warnings about bricked TNCs, know is this highly unlikely. Unplug TNC, reboot system, plug TNC, try again.
 +
 +===== Schematic =====
 +
 +Available from [[https://tarpn.net/t/nino-tnc/n9600a/n9600a4/n9600a4-assembly.html|tarpn.net]], mirror {{ :packet:2020-11-21-ninotnc-n9600a4r2-sch.pdf | here }}
 +
 +===== Flashing CRC =====
 +
 +If your CRC light is flashing, you are driving the modem's RXA pin with too much audio, which is clipping. This is normally harmless but if you want to reduce it:
 +
 +{{:radios:tait-volume.jpeg?400|}}
 +
 +===== TXTAIL note =====
 +
 +Fun finding. Nino implemented TXTAIL support in April, to support a newer Icom with digital audio chain with latency. It seems that BPQ sends a TXTAIL KISS command with value 3 (30ms) by default. My 70cm 9k6 port has therefore had a 30ms tail since then. That's a ton of overhead at 9k6!  TXTAIL=0 in the port config seems to result in BPQ still sending 3 (30ms) to the modem periodically. But TXTAIL=1 (ms) in the config seems to result in BPQ sending TAIL KISS command with value 0 (0ms) which is what we probably want. Therefore my recommendation is to put TXTAIL=1 into the PORT config for any NinoTNC port that isn't an Icom 9700.
packet/ninotnc.1710451094.txt.gz · Last modified: by g5dsg