packet:mmdvm-tnc
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
packet:mmdvm-tnc [2023/09/27 16:51] – m0lte | packet:mmdvm-tnc [2024/04/14 11:26] (current) – [Testing notes] m0lte | ||
---|---|---|---|
Line 14: | Line 14: | ||
===== Preparation ===== | ===== Preparation ===== | ||
- | Burn Raspberry Pi OS Lite (tested | + | Tested |
- | `sudo raspi-config` → interfaces | + | Verified to NOT work on 64 bit |
+ | |||
+ | Verified to NOT work on Bookworm, only Bullseye, due to / | ||
+ | |||
+ | Burn Raspberry Pi OS Bullseye 32 bit Lite to a micro SD, boot it | ||
+ | |||
+ | '' | ||
Then: | Then: | ||
Line 26: | Line 32: | ||
# Fetch the flashing tool | # Fetch the flashing tool | ||
- | curl -OL https:// | + | curl -OLs https:// |
chmod +x stm32flashV5 | chmod +x stm32flashV5 | ||
- | </ | ||
- | ===== Flashing from the web ===== | + | sudo reboot |
- | + | ||
- | Unplug the board from the header | + | |
- | + | ||
- | Run the following: | + | |
- | + | ||
- | < | + | |
- | wget -q https:// | + | |
- | while ! sudo ./ | + | |
</ | </ | ||
- | Carefully but swiftly (!) plug the board into the header | + | ===== Building and flashing from source ===== |
- | + | ||
- | This is required because of some capacitor in the wrong charge state and there may be some workaround coming. | + | |
- | + | ||
- | + | ||
- | ===== Building and flashing from source | + | |
< | < | ||
Line 56: | Line 48: | ||
</ | </ | ||
- | Make Config.h look like this: | + | Run: |
- | + | ||
- | < | + | |
- | #define CONFIG_H | + | |
- | #define EXTERNAL_OSC 12000000 | + | |
- | #define STM32F4_NUCLEO_MORPHO_HEADER | + | |
- | #define SERIAL_SPEED | + | |
- | + | ||
- | // Select the initial packet mode | + | |
- | // 1 = 1200 bps AFSK AX.25 | + | |
- | // 2 = 9600 bps C4FSK IL2P | + | |
- | #define INITIAL_MODE | + | |
- | + | ||
- | // TX Delay in milliseconds | + | |
- | #define TX_DELAY | + | |
- | + | ||
- | // P-Persistence in x/255 | + | |
- | #define P_PERSISTENCE | + | |
- | + | ||
- | // Slot Time in milliseconds | + | |
- | #define SLOT_TIME | + | |
- | + | ||
- | // Set Duplex, 1 for full duplex, 0 for simplex | + | |
- | #define DUPLEX | + | |
- | + | ||
- | // Select use of serial debugging | + | |
- | #define SERIAL_DEBUGGING | + | |
- | + | ||
- | // Baud rate for serial debugging. | + | |
- | #define DEBUGGING_SPEED 38400 | + | |
- | + | ||
- | // Set the receive level (out of 255) | + | |
- | #define RX_LEVEL | + | |
- | + | ||
- | // Set the mode 1 transmit level (out of 255) | + | |
- | #define MODE1_TX_LEVEL | + | |
- | + | ||
- | // Set the mode 2 transmit level (out of 255) | + | |
- | #define MODE2_TX_LEVEL | + | |
- | + | ||
- | // Use pins to output the current mode via LEDs | + | |
- | #define MODE_LEDS | + | |
- | </ | + | |
- | + | ||
- | then run: | + | |
< | < | ||
Line 109: | Line 57: | ||
< | < | ||
- | wget -q https://www.bi7jta.org/ | + | mv ../ |
- | chmod +x stm32flashV5 | + | while ! sudo ./ |
- | sudo ./ | + | |
</ | </ | ||
+ | |||
+ | Carefully but swiftly (!) plug the board into the header. If it fails, unplug the board for a while and leave it before trying again later. A minute or two should be fine. | ||
+ | |||
+ | This is required because of some capacitor in the wrong charge state and there may be some workaround coming. | ||
+ | |||
===== Testing notes ===== | ===== Testing notes ===== | ||
Line 140: | Line 92: | ||
< | < | ||
sudo python3 kiss-ax25-ui-batch.py / | sudo python3 kiss-ax25-ui-batch.py / | ||
+ | </ | ||
+ | |||
+ | This will listen: | ||
+ | |||
+ | < | ||
+ | sudo python3 kiss-listen.py / | ||
</ | </ | ||
sudo required for this unless your user is in the dialout group. | sudo required for this unless your user is in the dialout group. | ||
+ | |||
+ | This diff hacks kiss-ax25-ui-batch.py to: | ||
+ | - set persist=255 | ||
+ | - divide supplied time interval by 10 | ||
+ | |||
+ | < | ||
+ | diff --git a/ | ||
+ | index 11b3a75..2ebcbf8 100644 | ||
+ | --- a/ | ||
+ | +++ b/ | ||
+ | @@ -120,6 +120,11 @@ TFESC = int(0xDD).to_bytes(1,' | ||
+ | TFEND = int(0xDC).to_bytes(1,' | ||
+ | | ||
+ | | ||
+ | + | ||
+ | +kiss_output_frame = bytearray(FEND) + bytearray(int(0x02).to_bytes(1,' | ||
+ | +# | ||
+ | +port.write(kiss_output_frame) | ||
+ | + | ||
+ | | ||
+ | | ||
+ | |||
+ | @@ -191,6 +196,6 @@ for i in range(0, frame_count): | ||
+ | # print(kiss_output_frame) | ||
+ | frame_time = len(kiss_output_frame) * 10 / int(sys.argv[2]) | ||
+ | port.write(kiss_output_frame) | ||
+ | - | ||
+ | + | ||
+ | | ||
+ | | ||
+ | </ | ||
===== Serial debugging ===== | ===== Serial debugging ===== | ||
packet/mmdvm-tnc.1695833475.txt.gz · Last modified: 2023/09/27 16:51 by m0lte