Compare commits

...

10 Commits

Author SHA1 Message Date
Hibby a4ec577aa3
Fix my notes! 2024-07-17 01:35:09 +01:00
Hibby 8c81240e8a
Ok I think I'm done for the night 2024-07-17 01:31:30 +01:00
Hibby 7335d94ad9
new visual style in linux primer 2024-07-17 00:41:54 +01:00
Hibby 36e29c08df
Link to the right linux.md:w 2024-07-16 23:46:15 +01:00
Hibby e5238bd24e
Update so it is more clear what's to be run in terminal 2024-07-16 23:41:24 +01:00
Hibby 44bb4e6665
BPQ Configuration Updates, new terminal command language. 2024-07-16 23:37:32 +01:00
Hibby 777eb2c250
fix link in qtsm 2024-07-16 23:17:58 +01:00
Hibby 5914a129bc
Spelling updates! 2024-07-16 23:17:00 +01:00
Hibby 67ac259301
Offline updates 2024-07-16 22:57:42 +01:00
Hibby 7dd939f450 Changes made offline 2024-07-16 22:54:53 +01:00
18 changed files with 588 additions and 166 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
site/
.DS_Store

1
docs/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.DS_Store

View File

@ -16,7 +16,7 @@ I owe a huge debt of gratitude to a number of people for keeping my enthusiasm a
**Tom Fanning M0LTE** - Tom's continued enthusiasm and knowledge of packet radio has helped keep mine alive and developing during our time working on the UK Packet Radio Network project, and you've proved to be a great sounding board for when I've had a half baked idea that needs development. Your ability to get shit done and your depth of knowledge means that people really look up to you and respect what you have to say - more than you realise.
The rest of the [OARC](https://oarc.uk). Y'all are a consistently fun community to be part of, and have kept the flame of my radio hobby alive for many years now - thanks to Paul M0TZE for bringing me in many years ago, and reminding me consistently of that time I was drunk in a field trying to transmit out of band. There is an exciting get-up-and-do it vibe to our community, and it has successfully overcome my natural recitence to dive in without research more than once, resulting in wonderful results.
The rest of the [OARC](https://oarc.uk). Y'all are a consistently fun community to be part of, and have kept the flame of my radio hobby alive for many years now - thanks to Paul M0TZO for bringing me in many years ago, and reminding me consistently of that time I was drunk in a field trying to transmit out of band. There is an exciting get-up-and-do it vibe to our community, and it has successfully overcome my natural recitence to dive in without research more than once, resulting in wonderful results.
The HAK5 podcast for sparking the first flame and introducing me to APRS and amateur radio way back in 2005/6/7. I have fond memories of hanging out in irc, talking nonsense and taking my first steps into becoming who I am now.

View File

@ -68,7 +68,7 @@ There are a number of varieties of IL2P in the wild too, most commonly 'With CRC
We often use '1200', '1200bd' or similar as shorthand for how fast our data is sending and received. The 'bd' is baud, or the number of 'symbols' transmitted a second. For most of our communications, 1 baud is equivalent to 1 bit per second, however more exotic modulation can transmit more than one symbol at a time, buying us more speed!
We 3 broad speed categories at the moment:
We use 3 broad speed categories at the moment:
* Low - 300bd - used on HF
* Medium - 1200bd - used on VHF
@ -86,11 +86,11 @@ The key modulations we use are:
**AFSK**
Audio Frequncy Shift Keying - Multiple audible tones. This is commonly found on VHF, FM 1200bd links. Classic bleeps and bloops that have been heard on our frequencies for decades. Tune to 144.800MHz to get a flavour from the APRS network.
Audio Frequency Shift Keying - Multiple audible tones. This is commonly found on VHF, FM 1200bd links. Classic bleeps and bloops that have been heard on our frequencies for decades. Tune to 144.800MHz to get a flavour from the APRS network.
**FSK**
Frequency Shift Keying - Multiple tones, not necessarily audible. Commonly found on UHF, FM 9600bd links. This sounds quite like white noise and can be difficut to differentiate from unsquelched audio.
Frequency Shift Keying - Multiple tones, not necessarily audible. Commonly found on UHF, FM 9600bd links. This sounds quite like white noise and can be difficult to differentiate from unsquelched audio.
**PSK**
@ -102,7 +102,7 @@ A key component of the systems I'll be discussing in this guide is Linux. If you
There's a lot to take in, and it can seem overwhelming at first, but feel free to read, ask for help and keep in mind that it's easy to feel lost when you approach anything new - there are just so many things to grasp.
A simple starting point is a [Raspberry Pi](https://raspberrypi.org) - it will be a dedicated computer for just packet exploration, and if everything is broken you can easily start again without losing any importnt data - you just rewrite the SD card and start again.
A simple starting point is a [Raspberry Pi](https://raspberrypi.org) - it will be a dedicated computer for just packet exploration, and if everything is broken you can easily start again without losing any important data - you just rewrite the SD card and start again.
## Radio Set Up
@ -124,7 +124,7 @@ Once you have done that you can install the prerequisites - QTTermTCP.
If you're a new user, I recommend using a graphical 'app store' - see how [here](linux.md/#graphical-app-store-frontend).
If you're more linux aware? `apt install soundmodem` in your terminal of choice!
If you're more Linux aware? `apt install soundmodem` in your terminal of choice!
### Configure QtTermTCP
@ -148,7 +148,7 @@ Decoded data shall look like:
## Connect
Press Connect, then 'Kiss Connect' in the dropdown menu. You'll see something aking to the below - selection session, enter the callsign & SSID you are trying to connect to, for example GB7HIB-7 if you're connecting to my node. Ignore digipeters for the moment - they can be a future challenge.
Press Connect, then 'Kiss Connect' in the dropdown menu. You'll see something asking to the below - selection session, enter the callsign & SSID you are trying to connect to, for example GB7HIB-7 if you're connecting to my node. Ignore digipeters for the moment - they can be a future challenge.
![Connect window](static/img/qttcp_connect.png)
@ -163,7 +163,10 @@ Not seeing anything in the monitor pane? Time to get debugging!
## Debugging
This is where most of my time is spent when setting up packet radio stuff. In my opinion, it's where the real learning happens - you need to get your hands dirty with your radio, with your modem, with linux and try to retain your sanity at the same time.
This is where most of my time is spent when setting up packet radio stuff. In my
opinion, it's where the real learning happens - you need to get your hands dirty
with your radio, with your modem, with Linux and try to retain your sanity at
the same time.
Don't worry - there is always something you've forgotten to do, or think you've looked at and haven't. We all have that feeling. Sometimes I keep a note of what I've done and what I've looked at to avoid replication of work, or so I can note what I *have* changed and what I might need to replicate.
@ -176,7 +179,11 @@ Learn more about debugging:
### Ask for Help!
It is easy to feel overwhelmed and alone as you struggle through debugging your system. Feel free to ask the community for help! No question is stupid, and we all started knowing nothing about this. Everyone is excited to have new stations and nodes to connect to, so will be thrilled to offer some form of pointer, assistance, input or advice. Please note, advice is a form of nostalgia: dispensing it is a way of fishing the past from the disposal, wiping it off, painting over the ugly parts and recycling it for more than it's worth.
It is easy to feel overwhelmed and alone as you struggle through debugging your system. Feel free to ask the community for help! No question is stupid, and we all started knowing nothing about this. Everyone is excited to have new stations and nodes to connect to, so will be thrilled to offer some form of pointer, assistance, input or advice.
!!! note
Please note, advice is a form of nostalgia: dispensing it is a way of fishing the past from the disposal, wiping it off, painting over the ugly parts and recycling it for more than it's worth.
There are a few great sources of assistance, some will be faster than others to get responses from:

View File

@ -1,4 +1,111 @@
# BPQ
Configure BPQ this way:
* Badly, just like everyone else.
I assume you have already [installed](../install/bpq.md) bpq from the repo.
## Configuration File
The configuration file I ship in the repo, there are hopefully some obvious fields to fill out. Once all the below holes are filled, you should be able to log in either with [QtTermTCP](../clients/qtttcp.md) or in your web browser at 127.0.0.1:8008, assuming you're on the same computer as the node.
| Field | Example | Purpose
| ----- | ------- | -------
| NODECALL | MM0RFN | The callsign your node shall identify as
| NODEALIAS | RFNNOD | The alias a calling NET/ROM station can use to connect directly to you
| LOCATOR | IO87dc | A 6 figure Maidenhead square where you are
| PASSWORD | test123 | A sysop password for configuration activities
| AUTOSAVE | 1 | Autosave the NET/ROM Nodes Table on shutdown
| NODESINTERVAL | 30 | Interval between NET/ROM NODES broadcasts in minutes
| MINQUAL | 50 | The minimum quality of NET/ROM node included in your NODES broadcasts.
| CTEXT | `Hi you look great! ***` | Text displayed when a user connects
### Ports
Port configs in BPQNode aren't too complicated. A common Gotcha is that you configure a port specific broadcast and end up double-broadcasting, both the node master broadcast and the port specific one.
#### KISS
A common port entry for a [NinoTNC](../modems/ninotnc.md) specifically (but also, more generally, a KISS Modem) looks like:
```
PORT
PORTNUM=1
ID=VHF
TYPE=ASYNC
PROTOCOL=KISS
KISSOPTIONS=ACKMODE
COMPORT=/dev/ttyACM0
SPEED=57600
FRACK=4000
PACLEN=150
DIGIFLAG=0
QUALITY=192
MINQUAL=20
ENDPORT
```
Key settings to observe are the `COMPORT`, which should be the serial port of the device, and `SPEED`. For a NinoTNC this is always 57600, but for QtSoundModem, Direwolf or older hardware may be 9600 or something else. Check your modem configuration!
`QUALITY` sets the assumed quality of connections coming in - I recommend higher quality (up to 200) for higher speed links. Setting this to 0 will disable NET/ROM on the port, and this is current recommended standard practise on HF within the UK Packet Radio Network.
#### Telnet
BPQ's Telnet Port sets the TCP Ports for Telnet, FBB and HTTP connetions, alongside the username and password. This will come in useful when using [QtTTCP](../clients/qtttcp.md) as a monitor and control application.
```
PORT
PORTNUM=9
ID=Telnet
DRIVER=Telnet
CONFIG
LOGGING=1
CMS=1
DisconnectOnClose=1
TCPPORT=8010
FBBPORT=8011
HTTPPORT=8008
LOGINPROMPT=user:
PASSWORDPROMPT=password:
MAXSESSIONS=10
CTEXT=Thanks for connecting\n Enter ? for list of commands\n\n
USER=username,xxxxxxxx,m0aaa,,SYSOP
ENDPORT
```
`USER` is the key configuration to change here - change `username` to your desired administrator username, `xxxxxxx` to the password and `m0aaa` to the callsign of the administrator.
## Mail Configuration
Mail configuration isn't easy to get your head round! I'm still not clear on it
all, and I think many others are in the same boat. It's done through the browser
instead of on the command line, which makes it slightly more approachable.
Navigate to [http://localhost:8008](http://localhost:8008), assuming your HTTPPORT is set to 8008 and you're on the same machine. This
will present you with the below view:
![BPQ Node Main page](../static/img/node-main.png)
Select 'Mail Mgmt' and log in with the details you put in `USER`. The starting
point here is 'Configuration'.
### Configuration to Send & Receive
The configuration tab is your starting point. You need a 'Hierarchical'
address, this will tell other systems where you are and help the network send
things to you. It's similar to the domain of your email, like `@gmail.com`.
Set your BBS call - this will either be your personal callsign or an allocated
GB7xxx series callsign from the ETCC.
Hierarchical addresses in the UK take the following format:
`#xx.GBR.EURO`
Where xx is a number that defines your region. You can find your region with
[this map]().
I recommend unticking `Send System Msgs to SYSOP call` and ticking `Don't hold
Messages From New Users`.
### Forwarding to Neighbours
### Users

View File

@ -2,7 +2,14 @@
For Debian-alikes, see [installation instructions](../install/linux.md).
Each of the below components are required to make the complete node, but they are (generally) not all interdependent, and most of the unique components will work to make a stripped down version.
Each of the below components are required to make the complete node, but they
are (generally) not all interdependent, and most of the unique components will
work to make a stripped down version.
!!! warning
It can be assumed that most of this is not for the Linux newbie, and
that commands here are to be run as
[root](../linux.md/#users-permissions-and-sudo), exercise good judgement!
## axports
@ -10,13 +17,16 @@ Setting up basic AX.25 on Debian is relatively simple - the key file to edit her
GB7HIB currently runs the following below config. Each port has been given an internal reference, I like to detail what connection they are providing. Other people map them out by number or other methods, but I find having a pretty consistent set of references to the radio/interface I'm using keeps my brain in check.
The callsign&SSID is, in this case, the physical address for the port, akin to a MAC address on ethernet. It shows under `ifconfig` as a mac address for the link.
The callsign&SSID is, in this case, the physical address for the port, akin to a MAC address on Ethernet. It shows under `ifconfig` as a mac address for the link.
Speed is the speed of the serial port on the interface. In the case of the NinoTNC, this is 57600.
Paclen is the packet length - for V/UHF links, 255 bytes is a nice length. For HF, 60-80 is more common. It means for shorter packets that aren't as likely to be impacted by changes in propagation.
Window is the number of packets that can be sent in one burst. The more reliable the link,the higher the number. This is limited by the version of ax25 you're running - 2.0 has a lower window than 2.0. If you're running Linux, at the moment you're on ax25 2.0.
Window is the number of packets that can be sent in one burst. The more reliable
the link,the higher the number. This is limited by the version of ax25 you're
running - 2.0 has a lower window than 2.2. If you're running Linux, at the
moment you're on ax25 2.0.
```
hibby@raspberrypi:~ $ cat /etc/ax25/axports
@ -35,7 +45,8 @@ ip GB7HIB-11 115200 255 7 IP
`kissattach` binds the axport to a physical kiss device.
I attach my UHF port to my NinoTNC with:
`kissattach /dev/ttyACM0 uhf`
!!! note "Terminal Command"
`kissattach /dev/ttyACM0 uhf`
### axcall
@ -61,9 +72,11 @@ We create a virtual modem with `ax25ipd`, a virtual pipe with `socat` that lets
I create a socket pair to connect `ax25ipd` and `kissattach` to connect the `ip` ax25 port to the axudp tunnel.
The command I run for this is:
```socat -d -d -ly pty,raw,echo=0,link=/var/ax25/pty/axip1 pty,raw,echo=0,link=/var/ax25/pty/axip2```
!!! note "Terminal Command"
`socat -d -d -ly pty,raw,echo=0,link=/var/ax25/pty/axip1 pty,raw,echo=0,link=/var/ax25/pty/axip2`
If you are copying this, you might need to make the `/var/ax25/pty` - `mkdir -p /var/ax25/pty`
!!! tip
If you are copying this, you might need to make the `/var/ax25/pty` - `mkdir -p /var/ax25/pty`
This is brought up at boottime by systemd:
@ -107,29 +120,29 @@ route MM3NDH 10.13.37.2 bd
### Running ax25ipd
This is run from the command line as follows:
`ax25ipd`
!!! note "Terminal Command"
`ax25ipd`
### kissattach
We need to attach the axip port to the virtual modem we've created with ax25ipd once it's running, and this is a simple case of:
`kissattach /var/ax25/pty/axip2 axip`
!!! note Terminal Command
`kissattach /var/ax25/pty/axip2 axip`
## NET/ROM
NET/ROM covers functionality analogous to OSI layer3/layer 4.
What it means in reality is that my node has a knowledge of its neighbours and what their neighbours are, and automates routing calls. To use the earlier example, I can call directly to gm0cqv and my machine will know the best path -
`axcall nrnod GM0CQV-7`
!!! note "Terminal Command"
`axcall nrnod GM0CQV-7`
Each NET/ROM sends a 'NODES' broadcast periodically. This details what systems it can hear, what the gateway to the remote nodes is and a 'quality' value.
Nodes on the network can have an alias too - GM0CQV's node on -7 above is PTRNOD, so I can do the following -
Nodes on the network can have an alias too - GM0CQV's node on -7 above is
PTRNOD, so I can do the following to end up at the same location -
`axcall nrnod PTRNOD`
and end up at the same location.
!!! note "Terminal Command"
`axcall nrnod PTRNOD`
NET/ROM ports are largely independent of ax25 ports in that a user can call any given nrport without going through a specific axport. You can essentially define per-application nrports, and as many as you wish (assuming you have free unique SSIDs to offer them as mac addresses).
@ -151,15 +164,21 @@ nrnod GB7HIB-1 HIBNOD 235 Netrom node Port
nrbbs GB7HIB-2 HIBBBS 235 Netrom BBS Port
```
I have a port for my service, the callsign and port, and an up to 6 letter alias for the service. The packet length is 20 bytes shorter than the ax25 packet to account for overheads, and then there's a wee description.
I have a port for my service, the callsign and port, and an up to 6 letter alias
for the service. The packet length is 20 bytes shorter than the ax25 packet to
account for overheads, and then there's a wee description.
### nrbroadcast
`/etc/ax25/nrbroadcast` defines how often `netromd` sends a NODES broadcast and what port it sends them over.
`/etc/ax25/nrbroadcast` defines how often `netromd` sends a NODES broadcast and
what port it sends them over.
It also defines the default quality of stations received directly over that port, the worst quality it will broadcast, how long without hearing a nodes broadcast the station will remain in your routing table.
It also defines the default quality of stations received directly over that
port, the worst quality it will broadcast, how long without hearing a nodes
broadcast the station will remain in your routing table.
I have set some sensible defaults, things that come over the ip link are quite high, but I limit the worst quality so that my NODES table isn't too big.
I have set some sensible defaults, things that come over the ip link are quite
high, but I limit the worst quality so that my NODES table isn't too big.
```
hibby@raspberrypi:~ $ cat /etc/ax25/nrbroadcast
@ -178,8 +197,8 @@ ip 3 200 130 1
Like AX.25, we need to attach the port to a device - our tool for this is `nrattach`.
`nrattach` is simple - you nrattach a port and that's it.
`nrattach nrnod`
!!! note "Terminal Command"
`nrattach nrnod`
### netromd
@ -187,23 +206,39 @@ Like AX.25, we need to attach the port to a device - our tool for this is `nratt
I should really make this systemd unit come up after nrattach.
I run it as `netromd -i -l -d -t 30`, which broadcasts almost immidiately, creates debug logs and broadcasts every 30 minutes.
I run it as below:
!!! note "Terminal Command"
`netromd -i -l -d -t 30`
This broadcasts almost immediately, creates debug logs and broadcasts every 30 minutes.
## ax25d
ax25d is the Daemon that routes incoming connection requests and spins up a process for the caller.
ax25d is the Daemon that routes incoming connection requests and spins up a
process for the caller.
Interestingly, it isn't tied to the incoming port that the call is coming through, so you can have any port or interface handle calls to any callsign, alias or other word.
Interestingly, it isn't tied to the incoming port that the call is coming
through, so you can have any port or interface handle calls to any callsign,
alias or other word.
`/etc/ax25/ax25d.conf` is the config file that controls this, and it handles ax25 ports and netrom ports slightly differently. The default config we ship with debian is full of great examples, see online [here](https://salsa.debian.org/debian-hamradio-team/ax25-tools/-/blob/master/ax25/ax25d.conf.in?ref_type=heads) - mine is configured as below.
`/etc/ax25/ax25d.conf` is the config file that controls this, and it handles
ax25 ports and netrom ports slightly differently. The default config we ship
with debian is full of great examples, see online
[here](https://salsa.debian.org/debian-hamradio-team/ax25-tools/-/blob/master/ax25/ax25d.conf.in?ref_type=heads)
- mine is configured as below.
Reading it, you can see that GB7HIB is in [] and nrnod is in <>. They define the type of port.
This means if you connect to GB7HIB over ax25, you get uronode.
Reading it, you can see that GB7HIB is in [] and nrnod is in <>. They define the
type of port. This means if you connect to GB7HIB over ax25, you get uronode.
If you connect to HIBNOD, or GB7HIB-1 over netrom, you get uronode!
I am really interested in exploring some other applications, including `axspawn`, which lets you spawn a bash (or other) shell and effectively gives shell access over ax25/netrom to a user.
I am really interested in exploring some other applications, including
`axspawn`, which lets you spawn a bash (or other) shell and effectively gives
shell access over ax25/netrom to a user.
There's lots of options here, and it's an incredibly flexible piece of software and is the core of why the Linux stack is so interesting to me. You can present any binary on your system to a connecting user!
There's lots of options here, and it's an incredibly flexible piece of software
and is the core of why the Linux stack is so interesting to me. You can present
any binary on your system to a connecting user!
```
hibby@raspberrypi:~ $ cat /etc/ax25/ax25d.conf
@ -231,20 +266,26 @@ default * * * * * * - root /usr/sbin/uronode uronode
### Running ax25d
This is an easy one to start -
`ax25d`
!!! note "Terminal Command"
`ax25d`
## Uronode Frontend
I use uronode both as a frontend for users connecting and for me connecting to the node and to neighbouring stations, essentially over telnet. When someone connects to my system, Uronode generates the menu that they see.
I use uronode both as a frontend for users connecting and for me connecting to
the node and to neighbouring stations, essentially over telnet. When someone
connects to my system, Uronode generates the menu that they see.
I also have it configured as my local client - i can run `uronode` in a terminal and be presented with a helpful control interface.
I also have it configured as my local client - i can run `uronode` in a terminal
and be presented with a helpful control interface.
### uronode.conf
This is the core config file for uronode that details what uronode can do. I'm running mine very stripped back, and have cut a lot of the defaults out:
This is the core config file for uronode that details what uronode can do. I'm
running mine very stripped back, and have cut a lot of the defaults out:
You can see the BBS command is just a uronode call out to GB7HIB-2 over netrom, and there are external commands for netstat and the 'nodesearch' program I quite like.
You can see the BBS command is just a uronode call out to GB7HIB-2 over netrom,
and there are external commands for netstat and the 'nodesearch' program I quite
like.
The rest is pretty much default.
@ -336,16 +377,22 @@ This defines shell access for me as a sysop. I've never actually spawned a shell
### Uronode as a local interface
I use uronode as my local packet radio terminal - instead of turning on and typing `axcall nrnod salbbs` to get to gm0nrt, I log in, type uronode, feed it my callsign and I am met with the uronode command interface, from which I can type `c salbbs`. It's a much nicer place to be!
I use uronode as my local packet radio terminal - instead of turning on and
typing `axcall nrnod salbbs` to get to gm0nrt, I log in, type uronode, feed it
my callsign and I am met with the uronode command interface, from which I can
type `c salbbs`. It's a much nicer place to be!
This required `xinetd` for me to set up easily.
This required `xinetd` for me to set up easily - you'll need to install it.
#### xinetd config
I think the below two config files are the only things required to make uronode listen on port 3964 -
I think the below two config files are the only things required to make uronode
listen on port 3964 . `xinetd` must be enabled and started by systemd to be listening
`xinetd` must be enabled and started by systemd to be listening (`systemctl enable xinetd`, `systemctl start xinetd`)
!!! note "Terminal Command"
`systemctl enable xinetd`, `systemctl start xinetd`
There is probably a systemd native way of doing this, but I couldn't see that in the docs.
There is probably a systemd native way of doing this, but I couldn't see that in
the docs.
```
hibby@raspberrypi:~ $ cat /etc/xinetd.d/uronode
@ -368,15 +415,22 @@ uronode 3694/tcp # Uronode
## FBB BBS
`fbb` is my BBS software of choice! It is an oddity in that it binds directly to the ports you tell it exist, so it's listening on my ax25 and netrom ports without an entry in `ax25d.conf`. This mostly seems like magic to me and I am happy to let it run this way!
`fbb` is my BBS software of choice! It is an oddity in that it binds directly to
the ports you tell it exist, so it's listening on my ax25 and netrom ports
without an entry in `ax25d.conf`. This mostly seems like magic to me and I am
happy to let it run this way!
It has a few config files - fbb.conf, which is populated by the first run, `ports.sys` which defines the ports available and then `bbs.sys` and `forward.sys` which defines how you route to the outside world.
It has a few config files - fbb.conf, which is populated by the first run,
`ports.sys` which defines the ports available and then `bbs.sys` and
`forward.sys` which defines how you route to the outside world.
### ports.sys
My reference for this file was [this website](https://www.febo.com/packet/linux-ax25/fbb-config.html), which was a helpful resource!
My reference for this file was [this website](https://www.febo.com/packet/linux-ax25/fbb-config.html), which was a
helpful resource!
I have incremented the number of TNCs where appropriate and added my ports as 1,2,3. I have left the COM 1 Interface 9 etc alone.
I have incremented the number of TNCs where appropriate and added my ports as
1,2,3. I have left the COM 1 Interface 9 etc alone.
```
hibby@raspberrypi:~ $ cat /etc/ax25/fbb/port.sys

View File

@ -1,6 +1,7 @@
# Welcome to Hibby's Packet Radio Guide
Hi, welcome - thanks for coming by!
Hi, welcome - thanks for coming by! I'm Hibby and this is a collection of
everything I know about packet radio, and is being assembled bit by bit!
!!! warning
@ -37,5 +38,3 @@ Have a look to see if you have a [proven radio](equipment/radios.md) and install
I'd recommend trying 1200bd on VHF or UHF first, but slower modes on HF are perfectly do-able as well if you're on an island or stuck in a ditch.
Take a look at the [beginner's guide](beginners-guide.md) to see more detail about how to get started.

View File

@ -8,26 +8,39 @@ If you have not already done so, set up the repo [as shown here](../repo.md).
To install LinBPQ from the repo, run the below commands:
```
sudo apt update
sudo apt install linbpq
```
!!! note "Terminal Commands"
`sudo apt update && sudo apt install linbpq`
## Pre-Configure
```
sudo cp /usr/share/doc/linbpq/examples/bpq32.cfg /etc/bpq32.cfg
sudo nano /etc/bpq32.cfg
sudo chown :linbpq /etc/bpq32.cfg
sudo chmod 644 /etc/bpq32.cfg
```
!!! note
We need to prepare the system and get configuration files in place. This must be
run on the command line, it's simply the fastest way.
Copy these three lines, one-at-a-time into your terminal and hit enter after
each one.
!!!note "Terminal Commands"
```
sudo cp /usr/share/doc/linbpq/examples/bpq32.cfg /etc/bpq32.cfg
sudo chown :linbpq /etc/bpq32.cfg
sudo chmod 644 /etc/bpq32.cfg
```
!!! tip
Without a config file installed to `/etc/bpq32.cfg`, BPQ from the repo will not start. If you are looking to use a config file in a different location, remove or modify `ConditionPathExists=/etc/bpq32.cfg` in `/usr/lib/systemd/system/linbpq.service`
## Configure
The configuration file I ship in the repo, there are hopefully some obvious fields to fill out. Once all the below holes are filled, you should be able to log in either with [QtTermTCP](../clients/qtttcp.md) or in your web browser at 127.0.0.1:8008, assuming you're on the same computer as the node.
The configuration file I ship in the repo, there are hopefully some obvious fields to fill out.
You can find the configuration file at `/etc/bpq32.cfg` and use something like
Featherpad to edit it.
!!! tip
To learn more about editing text in Linux, see [here](../linux.md/#editing-text-as-root).
| Field | Example | Purpose
| ----- | ------- | -------
@ -42,7 +55,7 @@ The configuration file I ship in the repo, there are hopefully some obvious fiel
### Ports
Port configs in BPQNode aren't too complicated. A common Gotcha is that you configure a port specific broadcast and end up double-broadcasting, both the node master broadcast and the port specific one.
Port configuration blocks in BPQNode aren't too complicated. A common Gotcha is that you configure a port specific broadcast and end up double-broadcasting, both the node master broadcast and the port specific one.
#### KISS
@ -71,7 +84,7 @@ Key settings to observe are the `COMPORT`, which should be the serial port of th
#### Telnet
BPQ's Telnet Port sets the TCP Ports for Telnet, FBB and HTTP connetions, alongside the username and password. This will come in useful when using [QtTTCP](../clients/qtttcp.md) as a monitor and control application.
BPQ's Telnet Port sets the TCP Ports for Telnet, FBB and HTTP connections, alongside the username and password. This will come in useful when using [QtTTCP](../clients/qtttcp.md) as a monitor and control application.
```
PORT
@ -94,3 +107,16 @@ ENDPORT
```
`USER` is the key configuration to change here - change `username` to your desired administrator username, `xxxxxxx` to the password and `m0aaa` to the callsign of the administrator.
## Startup
Head back to the terminal and run
!!! note "Terminal Commands"
`sudo systemctl start linbpq`
This will tell the system you want to start the `linbpq` service. Navigate to
[http://127.0.0.1:8008](http://127.0.0.1:8008) if you are on the systme you've
performed the install on and you should see a webpage like below:
![bpq welcome page](../static/img/node-main.png)

View File

@ -1,24 +1,31 @@
# Linux Native Stack
The linux native stack is highly configurable and can be easily installed on all Debian distros.
The linux native stack is highly configurable and can be easily installed on
all Debian distros. Beware! Most of the tooling is for the command line.
More detailed configuration instructions and explanations can be found [here](../config/linux.md)
More detailed configuration instructions and explanations can be found
[here](../config/linux.md).
## Install
To get a basic node setup, the minimum viable software is:
`apt install libax25 ax25-tools ax25-apps uronode`
!!! note "Terminal Command"
`apt install libax25 ax25-tools ax25-apps uronode`
### BBS
To set up a BBS install fbb
`apt install fbb`
!!! note "Terminal Command"
`apt install fbb`
## Basic Config
We shall set up a single AX.25 port to receive calls and display Uronode to calling stations.
We shall set up a single AX.25 port to receive calls and display Uronode to
calling stations.
Setting up and attaching a port is a prerequisite to monitoring, sending calls
and receiving calls.
### ax25 ports
@ -38,14 +45,39 @@ uhf UR0CAL-10 57600 255 2 UHF 9600bd
Modify the callsign to your own or your station's call.
This has to be attached as to the modem, in effect telling the computer to
listen to the modem's output. Run the below as root:
listen to the modem's output. Run the below:
!!! note "Terminal Command"
`sudo kissattach /dev/ttyACM0 uhf`
`kissattach /dev/ttyACM0 uhf`
## Monitoring Traffic
### ax25d
The application that will show traffic picked up by your port is `axlisten`.
ax25d (ax25 daemon) listens to incoming data and directs calling stations to the application you want them to use.
It can present different applications based on any combination of the callsign calling you, the callsign and SSID the calling station is calling and the port they are calling to.
!!! note "Terminal Command"
`axlisten -ac`
Running the above will show in the terminal all traffic successfully decoded by
your modem, and everything you're trying to send to the outside world.
`axlisten` can be run beside the below commands - just open a new terminal for them!
## Outbound Calls
You can call another station by running `axcall` in the terminal:
!!! note "Terminal Command"
`axcall <port> <remote station>`
In the case of calling my station from the port we configured above, this would be
!!! note "Terminal Command"
`axcall uhf GB7HIB`
## Inbound Calls
ax25d (ax25 daemon) listens to incoming data and directs calling stations to
the application you want them to use. It can present different applications
based on any combination of the callsign calling you, the callsign and SSID the
calling station is calling and the port they are calling to.
ax25d is controlled by `/etc/ax25/ax25d.conf`
@ -61,10 +93,14 @@ NOCALL * * * * * * L
default * * * * * * - root /usr/sbin/uronode uronode
```
Note the callsign, SSID and port are aligned with the axport in this example. Similar to axports, modify UR0CAL to our own callsign or your station's callsign.
Note the callsign, SSID and port are aligned with the axport in this example.
Similar to axports, modify UR0CAL to our own callsign or your station's
callsign.
ax25d is started by running the below as root:
ax25d is started by running the below:
`ax25d`
!!! note "Terminal Command"
`sudo ax25d`
Stations should be able to call uronode on your system using AX.25.
Stations should be able to call uronode on your system using AX.25 and be
presented with the basic uronode.

View File

@ -1,6 +1,8 @@
# Linux Primer
My packet radio guide is focussed on running software on Linux and it probably assumes a base level of knowledge. I shall dispense some thoughts and you can judge whether this is helpful.
My packet radio guide is focussed on running software on Linux and it probably
assumes a base level of knowledge. I shall dispense some thoughts and you can
judge whether this is helpful.
!!! note
@ -8,48 +10,124 @@ My packet radio guide is focussed on running software on Linux and it probably a
## What is Linux?
Linux is, in general terms, a family of operating systems that share a common core set of software and exhibit similar characteristics. It is no one simple thing, and doesn't fit in one neat category.
Linux is, in general terms, a family of operating systems that share a common
core set of software and exhibit similar characteristics. It is no one simple
thing, and doesn't fit in one neat category.
It can be seen as an alternative to Windows, MacOS, DOS, FreeBSD etc on the desktop - there are many similarities and many differences.
It can be seen as an alternative to Windows, MacOS, DOS, FreeBSD etc on the
desktop - there are many similarities and many differences.
It is built collaboratively by enthusiast and professional software developers in the spirit of freely sharing and improving the world for all humans - in this sense, there is a strong overlap with the goals of man radio amateurs.
It is built collaboratively by enthusiast and professional software developers
in the spirit of freely sharing and improving the world for all humans - in
this sense, there is a strong overlap with the goals of man radio amateurs.
Through this guide I will regularly refer to "[Debian](https://debian.org)" - this is the 'Distribution' of Linux that I work on in my free time. A distribution is a collection of software maintained by a group of people. In the case of Debian, there's around 1000 of us.
Through this guide I will regularly refer to "[Debian](https://debian.org)" -
this is the 'Distribution' of Linux that I work on in my free time. A
distribution is a collection of software maintained by a group of people. In
the case of Debian, there's around 1000 of us working on it.
As the source code is available for all to see and use due to permissive licenses, if another group has an opinion which differs from the team producing a distribution, they can use our work as a foundation and build something different and new based on that - we call this 'forking'. This is what [Ubuntu](https://ubuntu.com) is, and why we refer to Ubuntu as a 'Debian Derivative'. It's also why 90% of tutorials that target Ubuntu will work for Debian and vice versa. We share common components and building blocks. Raspberry Pi OS falls into this category too - they are standing on Debian's shoulders and commonly re-base their system on ours, so that they can focus their efforts on making the Raspberry Pi work well instead of getting bogged down in tangential detail.
As the source code is available for all to see and use due to permissive
licenses, if another group has an opinion which differs from the team producing
a distribution, they can use our work as a foundation and build something
different and new based on that - we call this 'forking'. This is what
[Ubuntu](https://ubuntu.com) is, and why we refer to Ubuntu as a 'Debian
Derivative'. It's also why 90% of tutorials that target Ubuntu will work for
Debian and vice versa. We share common components and building blocks.
Raspberry Pi OS falls into this category too - they are standing on Debian's
shoulders and commonly re-base their system on ours, so that they can focus
their efforts on making the Raspberry Pi work well instead of getting bogged
down in every tangential detail.
An alternative to Debian and its derivatives is [Fedora](https://www.fedoraproject.org) - while this shares many common components and code at the core of the system, some of the tools used in Fedora differ to such an extent that software built for it can't be guaranteed to run on a Debian based system - similar to Mac vs Windows.
An alternative to Debian and its derivatives is
[Fedora](https://www.fedoraproject.org) - while this shares many common
components and code at the core of the system, some of the tools used in Fedora
differ to such an extent that software built for it can't be guaranteed to run
on a Debian based system - similar to Mac vs Windows.
There are hundreds, if not thousands, of Linux Distributions all with different goals. Some are derivatives focussed on a specific task, some are very General and left to you to configure and use. Some are even delivered as code and you need to compile it from the ground up.
There are hundreds, if not thousands, of Linux Distributions all with different
goals. Some are derivatives focussed on a specific task, some are very General
and left to you to configure and use. Some are even delivered as code and you
need to compile it from the ground up.
## Desktops and Terminals
There's a common misconception that Linux is for command line users only, or that you need to be proficient in the command line to be able to drive it. This is no more true in Linux than it is for MacOS and Windows - there are a number of tasks that some may find more efficient to do via the command line interface (CLI), but there are usually multiple ways to skin the cat.
There's a common misconception that Linux is for command line users only, or
that you need to be proficient in the command line to be able to drive it. This
is no more true in Linux than it is for MacOS and Windows - there are a number
of tasks that some may find more efficient to do via the command line interface
(CLI), but there are usually multiple ways to skin the cat.
Most of my advice will take the form of things to run in the command line, but I am endeavouring to diversify so things are more approachable.
Much of my advice will take the form of things to run in the command line, as
this is often the way I interact with my computers, but I am endeavouring to
diversify so things are more approachable.
If you're running the Raspberry Pi, it's most likely you have [Raspberry Pi OS](https://www.raspberrypi.com/software/) with a desktop - there'll be a background, a menu in the top left etc. It might not look familiar, but to a keen explorer it should look approachable at the very least.
If you're running the Raspberry Pi, it's most likely you have [Raspberry Pi
OS](https://www.raspberrypi.com/software/) with a desktop - there'll be a
background, a menu in the top left etc. It might not look familiar, but to a
keen explorer it should look approachable at the very least.
If you're running Debian, during install we'll ask you what graphical desktop environment you want to install, if any. This is the desktop you boot in to - unlike Windows, there are multiples available for Linux. As a beginner, I strongly recommend [KDE](https://kde.org) - it is most Windows like and is pretty full featured. If you're running Ubuntu, typically you install an Ubuntu derivative focussed on a specific desktop environment - perhaps [Kubuntu](https://kubuntu.org) for KDE.
If you're running Debian, during install we'll ask you what graphical desktop
environment you want to install, if any. This is the desktop you boot in to -
unlike Windows, there are multiples available for Linux. As a beginner, I
strongly recommend [KDE](https://kde.org) Plasma - it is quite Windows like and
is pretty full featured. If you're running Ubuntu, typically you install an
Ubuntu derivative focussed on a specific desktop environment - perhaps
[Kubuntu](https://kubuntu.org) for KDE.
## Applications and Repositories
Most Linux distributions are not only just the system and the desktop, but they are shipped with a vast catalogue of applications too. They might not be installed, and you'll need to use some sort of app store tool to install, remove etc applications. It's just like every modern mobile phone - they stole the idea from us!
Most Linux distributions are not only just the system and the desktop, but they
are shipped with a vast catalogue of applications too. They might not be
installed, and you'll need to use some sort of app store tool to install, remove
etc applications. It's just like every modern mobile phone - they stole the idea
from us!
We call this tool a package manager (we often call applications 'packages'), and a collection of applications is known as a repository, or repo. The Debian family use a program called `apt` as its package manager, and it ships with quite a large repository of apps you can choose from. Most guides, mine included, don't focus on showing you a usable app-store, just a method of installing from a repository.
We call this tool a package manager (we often call applications 'packages'), and
a collection of applications is known as a repository, or repo. The Debian
family use a program called `apt` as its package manager, and it ships with
quite a large repository of apps you can choose from. Most guides, mine
included, don't focus on showing you a usable app-store, just a method of
installing from a repository.
You might want to add another repository if to get access to additional software, new software that isn't shipped by the distribution's maintainers or some other reason. I keep more up to date versions of software in my repository than Raspberry Pi OS offers, and I have additional software that isn't offered by RasPi OS too.
You might want to add another repository if to get access to additional
software, new software that isn't shipped by the distribution's maintainers or
some other reason. I keep more up to date versions of software in my repository
than Raspberry Pi OS offers, and I have additional software that isn't offered
by RasPi OS too.
### Install from the Command Line
To install from the command line, the standard command would be `apt install x` where x is any application you're looking for. This is often prefixed with `sudo`, see below in 'Users, Permissions and sudo' to learn more about why.
To install from the command line, the standard command would be:
!!! note "Terminal Command"
`apt install x`
Where x is any application you're looking for. This is often prefixed with
`sudo`, see below in [Users, Permissions and sudo](linux.md/#users-permissions-and-sudo) to learn more about why.
### Graphical App Store Frontend
Instead of using `apt install x`, it is possible to run a graphical piece of software. One I recommend is 'Synaptic' - you might have it installed already, or you might have to quickly run `apt install synaptic` in the command line to get yourself the software.
Instead of using `apt install x`, it is possible to run a graphical piece of
software.
Have a little look through your application launcher to see if there is an app catalogue, application store, package list or similar.
#### Raspberry Pi
The Raspberry Pi ships with a GUI through which you can install packages. It
lives in the Raspberry Pi menu (top left, Raspberry Pi icon), Preferences,
Add/Remove software.
#### Other systems
Have a little look through your application launcher menu to see if there is an
app catalogue, application store, package list or similar. If nothing is there,
then you might need to look to install something. In KDE this is called 'Discover'.
One I recommend is 'Synaptic' - you might have it installed already, or you
might have to quickly run the below to get it.
!!! note "Terminal Command"
`apt install synaptic`
On the Raspberry Pi, it's as below. To find it, go to the Raspberry Pi menu (Raspberry Icon, Top Left), Preferences and select Add/Remove software.
@ -59,11 +137,14 @@ On the Raspberry Pi, it's as below. To find it, go to the Raspberry Pi menu (Ras
In a Windows system, the very top of your computer's filesystem is most often the C Drive, represented as C: commonly. Windows also neatly shows other drives as similar folder structures - CD Drives often start at D:, Floppy drives at A:.
In Linux we follow a documented filesystem hierarchy, starting at the root of the drive, commonly labelled as `/`. Everything else on the system is presented as a file or a folder under `/`. This includes CD Roms, Hard drives which present as folders, serial & USB devices which present as files and more.
In Linux we follow a different filesystem hierarchy, starting at the 'root' of the drive, commonly labelled as `/`. Everything else on the system is presented as a file or a folder under `/`. This includes CD Roms, Hard drives which present as folders, serial & USB devices which present as files and more.
Paths always start with a `/`, and if it's a folder it will end with a `/` to indicate there is more depth below.
Devices, as they present, are often named by the class of device and a number starting at 0 to indicate which number it is. You'll commonly see references to `eth0`, showing the first ethernet device or `wlan0` showing the first wireless internet adaptor. A second would be `wlan1` etc.
Devices, as they present, are often named by the class of device and a number
starting at 0 to indicate which number it is. You'll commonly see references to
`eth0`, showing the first Ethernet device or `wlan0` showing the first wireless
internet adaptor. A second would be `wlan1` etc.
If I look at my root filesystem, I see the following folders:
@ -73,6 +154,9 @@ bin@ dev/ home/ lost+found/ mnt/ proc/ run/ srv/ tmp/ var/
boot/ etc/ lib@ media/ opt/ root/ sbin@ sys/ usr/
```
!!! tip
I used `ls` here to list the folders in the terminal, but the DOS classic `dir` will also work!
Many folders won't be of interest to you day to day, but some helpful ones to know are:
* `/dev/` - A folder containing devices, it's likely your modem appears here as `/dev/ttyACM0`
@ -83,74 +167,140 @@ Many folders won't be of interest to you day to day, but some helpful ones to kn
## Users, Permissions and 'sudo'
Much like other systems, Linux has the concept of a regular 'user' which you log in as, day to day and an 'administrator' user who is empowered to make configuration changes to the system, install software and so on. In the Linux world, the administrator is known as 'root'. As root has a lot of power - changing users passwords, deleting every file, overriding safe norms to damage hardware potentially - it is generally recommended that you do not log in day to day as root. If a bad actor or malicious piece of software runs while you are root, it can cause all of the aforementioned damage and more!
Much like other systems, Linux has the concept of a regular 'user' which you
log in as, day to day and an 'administrator' user who is empowered to make
configuration changes to the system, install software and so on. In the Linux
world, the administrator is known as 'root'. As root has a lot of power -
changing users passwords, deleting every file, overriding safe norms to damage
hardware potentially - it is generally recommended that you do not log in day
to day as root. If a bad actor or malicious piece of software runs while you
are root, it can cause all of the aforementioned damage and more!
Again, similar to windows, you can run a command as the root user, effectively temporarily granting access to just one program to perform a specific task. In Windows, what usually happens is a pop up window appears asking if you want to do that and pressing yes or no. In Linux, we will have configured the system in advance to know that your user is allowed to do this, and then it will ask for your password to grant permission to carry out the action.
Again, similar to windows, you can run a command as the root user, effectively
temporarily granting access to just one program to perform a specific task. In
Windows, what usually happens is a pop up window appears asking if you want to
do that and pressing yes or no. In Linux, we will have configured the system in
advance to know that your user is allowed to do this, and then it will ask for
your password to grant permission to carry out the action.
In graphical environments this may take the form of a pop up window - more often than not, however, we do this from the command line by prefixing our whole command with `sudo` - you can see a lot of examples of `sudo` in use at [the repo page](repo.md).
In graphical environments this may take the form of a pop up window - more
often than not, however, we do this from the command line by prefixing our
whole command with `sudo` - you can see a lot of examples of `sudo` in use at
[the repo page](repo.md).
Looking at the repo as an example and considering our earlier learning from Applications and Repositories above - it's no wonder that you need to carry out the commands mostly as the root user!
To add my repository, you are making a major system configuration change in two manners:
Looking at the repo as an example and considering our earlier learning from
Applications and Repositories above - it's no wonder that you need to carry out
the commands mostly as the root user! To add my repository, you are making a
major system configuration change in two manners:
* Telling it to trust absolutely the software that I distribute
* Telling the package manager where to download that software from
From this point on, you're placing a lot of trust in me personally - I can make quite significant changes to your system, or open up security holes, or accidentally break programs. I promise to not abuse this trust - to do so would break our Social Contract, result in me being ejected from several communities I love and I'd probably have to find a new set of hobbies.
From this point on, you're placing a lot of trust in me personally - I can make
quite significant changes to your system, or open up security holes, or
accidentally break programs. I promise to not abuse this trust - to do so would
break our Social Contract, result in me being ejected from several communities
I love and I'd probably have to find a new set of hobbies.
You can, of course, revoke this decision at any point by removing the repo key and entry in `/etc/apt.conf`.
You can, of course, revoke this decision at any point by removing the repo key
and entry in `/etc/apt.conf`.
### How do I know if I can run programs as root?
This is one for the command line! I recommend running `groups`:
This is one for the command line! I recommend running groups:
!!! note "Terminal Command"
`groups`
The output on my system looks like:
```
groups
hibby cdrom floppy sudo audio dip video plugdev users netdev lpadmin scanner sbuild
```
You can see in my group list that I can access the cd rom drive, the floppy drive and run things as sudo, amongst other less important groups!
You can see in my group list that I can access the cd rom drive, the floppy
drive and run things as sudo, amongst other less important groups!
If you do *not* have sudo in this list, you'll need a bit more help than I can give here - time to [ask for help!](beginners-guide.md#ask-for-help). If you're running a Raspberry Pi or Ubuntu, chances are that you'll be able to. Debian is a little more paranoid so we don't grant it by default.
If you do *not* have sudo in this list, you'll need a bit more help than I can
give here - time to [ask for help!](beginners-guide.md#ask-for-help). If you're
running a Raspberry Pi or Ubuntu, chances are that you'll be able to. Debian is
a little more paranoid so we don't grant it by default.
You'll need to run a command called `usermod` as the root user to grant your regular user a new group - `usermod -aG <groupname> <username>` effectively translates to 'add <username> to <groupname>. Get rid of the brackets and add the user and group you're trying for! See [Permissions and Groups](#Permissions-and-Groups) for an example.
You'll need to run a command called `usermod` as the root user to grant your regular user a new group -
!!! note "Terminal Command"
`usermod -aG <groupname> <username>`
This effectively translates to 'add <username> to <groupname>. Get rid of the
brackets and add the user and group you're trying for! See [Permissions and
Groups](#Permissions-and-Groups) for an example.
### Running Command Line Programs as Root
We prefix a command with `sudo` if we want it to be run as root and we know
we're in the right group!
!!! note "Terminal Command"
`nano /etc/bpq32.cfg`
becomes
`sudo nano /etc/bpq32.cfg`
### Editing text as root
The path of least resistance for many is to use the command line - if you know what file you need to edit, you can do that quickly and directly using a command line text editor.
The path of least resistance for many is to use the command line - if you know
what file you need to edit, you can do that quickly and directly using a
command line text editor.
The GUI offers some choices - my preferred method is below.
##### GUI
I recommend installing Featherpad for this - it's lightweight and will only ask for a password when you save the file.
I recommend installing Featherpad for this - it's lightweight and will only ask
for a password when you save the file.
If you use the KDE Desktop, Kate works and has the below functionality inbuilt.
To install it see [above](linux.md/#graphical-app-store-frontend) for more.
You can open Featherpad from the application launcher and use the file->open menu to get access to files all round the system:
You can open Featherpad from the application launcher and use the file->open
menu to get access to files all round the system:
![Featherpad Open File](static/img/featherpad-open.png)
Take yourself back to `/` with the Path breadcrumb at the top, and to edit the bpq32.conf config file, for example, find `/etc/bpq32.cfg`.
Take yourself back to `/` with the Path breadcrumb at the top, and to edit the
bpq32.conf config file, for example, find `/etc/bpq32.cfg`.
On saving the file, the system will ask you to enter your password as it's a protected file that only the root user can write to:
On saving the file, the system will ask you to enter your password as it's a
protected file that only the root user can write to:
![Featherpad Save as Root Dialogue](static/img/featherpad-rootsave.png)
Alternatively, after installing featherpad you can open your file manager, navigate to `/etc/`, open `bpq32.cfg` and the system will present a similar popup when you try to save:
Alternatively, after installing featherpad you can open your file manager,
navigate to `/etc/`, open `bpq32.cfg` and the system will present a similar
popup when you try to save:
![Fileman Select File](static/img/fileman-select.png)
In all these programs, you can find `/etc/` by typing `/etc` in the navigation bar that is top-central, or by Pressing 'Filesystem Root' on the left hand side and navigating to etc in the main pane.
In all these programs, you can find `/etc/` by typing `/etc` in the navigation
bar that is top-central, or by Pressing 'Filesystem Root' on the left hand side
and navigating to etc in the main pane.
#### Command Line
Every Debian system ships with one called `nano` which is relatively approachable.
Every Debian system ships with a text editor called `nano` which is relatively approachable.
You open your file directly, so to edit the BPQ config file, run `sudo nano /etc/bpq32.cfg`. This translates to: `As root user, open nano to edit /etc/bpq32.cfg`
You open your file directly, so to edit the BPQ config file, run:
Navigation is with arrow keys (no mouse, sorry!). There are a list of commands at the bottom of the screen - they use ^ as a shortcut to indicate you must press control at the same time as those letters. Similarly, M is an idication of 'meta' key, which will likely be the alt key. This is quite similar to keyboard shortcuts in Microsoft Word (ctrl&s for save, alt-f4 for exit).
!!! note "Terminal Command"
`sudo nano /etc/bpq32.cfg`
This translates to: `As root user, open nano to edit /etc/bpq32.cfg`
Navigation is with arrow keys (no mouse, sorry!). There are a list of commands
at the bottom of the screen - they use ^ as a shortcut to indicate you must
press control at the same time as those letters. Similarly, M is an indication
of 'meta' key, which will likely be the alt key. This is quite similar to
keyboard shortcuts in Microsoft Word (ctrl&s for save, alt-f4 for exit).
Some helpful commands to know:
@ -167,17 +317,32 @@ Some helpful commands to know:
### Permissions and Groups
Files, devices and folders can have read and write permissions tied to both a user and a group, just as in Windows. You can check this in your file manager by right clicking and selecting properties.
Files, devices and folders can have read and write permissions tied to both a
user and a group, just as in Windows. You can check this in your file manager
by right clicking and selecting properties.
In the command line, this can be checked also - to understand who can do what with a NinoTNC, plug it in and run
In the command line, this can be checked also - to understand who can do what
with a NinoTNC, plug it in and run
!!! note "Terminal Command"
`ls -l /dev/ttyACM0`
The output on my system looks like:
```
ls -l /dev/ttyACM0
crw-rw---- 1 root dialout 204, 64 Apr 11 08:32 /dev/ttyACM0
```
This can be read as the device is owned by root and accessible by the group `dialout`. This is a common group you'll see regularly for serial devices, and worth being a member of. If a device has dialout as its group, this is telling us unless your user is root or in the dialout group, you cannot use the device.
This can be read as the device is owned by root and accessible by the group
`dialout`. This is a common group you'll see regularly for serial devices, and
worth being a member of. If a device has dialout as its group, this is telling
us unless your user is root or in the dialout group, you cannot use the device.
To add your user to the dialout group, you may need to run the usermod command as mentioned above. To add my user hibby, it would be `usermod -aG dialout hibby`. As this command needs to be run as the root user, we probably need to run `sudo usermod -aG dialout hibby`.
To add your user to the dialout group, you may need to run the usermod command
as mentioned above. To add my user hibby, it would be
!!! note "Terminal Command"
`usermod -aG dialout hibby`
For this change to take effect, you will need to log out and log back in again.
!!! tip
As this command needs to be run as the root user, we probably need to run `sudo usermod -aG dialout hibby`
For this change to take effect, you will need to log out and log in again.

View File

@ -4,7 +4,7 @@ Modems are the part of a packet radio system that encodes data into audio for yo
Modems have traditionally been dedicated hardware devices in packet radio, and in the last 20 years some software modems have been written as computers have become flexible and fast!
Moden modems come in many shapes and sizes. As long as the modem at each end of the link knows what they are sending and receiving, these are interchangable parts. Nothing stops you and a friend from experimenting with new modes in the UK, as long as you stay within given bandwidths and aren't intentionally obfuscating/encrypting data.
Modern modems come in many shapes and sizes. As long as the modem at each end of the link knows what they are sending and receiving, these are interchangeable parts. Nothing stops you and a friend from experimenting with new modes in the UK, as long as you stay within given bandwidths and aren't intentionally obfuscating/encrypting data.
The key choices of modem as I'm presenting are:
@ -23,7 +23,7 @@ Other modems are available however, including but not limited to
## What is a TNC?
A term that appears regularly is 'TNC' or Terminal Node Controller, and often Modem & TNC are used interchangably, however I have made a choice to not conflate the two items.
A term that appears regularly is 'TNC' or Terminal Node Controller, and often Modem & TNC are used interchangeably, however I have made a choice to not conflate the two items.
A TNC is a device containing not only the modem hardware, but often the Node software, personal mail, the entire logic for the AX.25 system and higher level protocols such as NET/ROM. It is effectively a complete networking computer in a box that you connected to with your computer over a serial link when computational power was a luxury not a right.
@ -33,9 +33,9 @@ In more modern packet systems, all of these roles are taken by the software we u
We can still make use of legacy TNC units - KISS mode (Keep It Simple Stupid!) strips away all of the AX.25 and other functionality of the TNC and makes it only pass serial data it is given. We use the same serial commands of KISS mode now for the majority of modems as it is simple and well documented.
Alternative modem command sets exist - onces I can name easily are:
Alternative modem command sets exist - ones I can name easily are:
| Command Protocol | Description
| ---------------- | -----------
| AGW or AGWPE | From AGW Packet Engine. A properitary command set that was originally released to interact with the software it is named after
| AGW or AGWPE | From AGW Packet Engine. A proprietary command set that was originally released to interact with the software it is named after
| 6pack | 6pack offers more control over the radio and more awareness for the PC what is happening at the cost of greater complexity

View File

@ -14,7 +14,7 @@ For the UK & Ireland, boards are are available from [Tom, M0LTE](https://ko-fi.c
## Build
The build gide for the NinoTNC is available on the [TARPN Website](https://tarpn.net/t/nino-tnc/nino-tnc.html).
The build guide for the NinoTNC is available on the [TARPN Website](https://tarpn.net/t/nino-tnc/nino-tnc.html).
## Operation
@ -60,9 +60,9 @@ Why? Simply put, see the below three statements but tread carefully. Not all thi
Modulation: These modes offer increasing bandwidth efficiency, with QPSK being our over SSB being our preferred - AFSK over FM is the least efficient mode.
Protocol: IL2P+CRC is the most resilent mode against corruption or data loss as it transits the air, with AX.25 being unprotected against this.
Protocol: IL2P+CRC is the most resilient mode against corruption or data loss as it transits the air, with AX.25 being unprotected against this.
Mode: SSB is preferred as the channels are narrower and allow for more flexibility - tigher filtering and better amplification per hz. FM is good enough, however.
Mode: SSB is preferred as the channels are narrower and allow for more flexibility - tighter filtering and better amplification per hz. FM is good enough, however.
### Signals Switch

View File

@ -10,7 +10,8 @@ It has some compelling features - not only does it natively understand IL2P at a
If you're using Debian, Ubuntu or a Raspberry Pi it will be easiest if you install [hibby's repo](../repo.md).
Once you have done that you can install the prerequisites, either search for qtsoundmodem in your [app store](linux.md/#graphical-app-store-frontend):
Once you have done that you can install the prerequisites, either search for
qtsoundmodem in your [app store](../linux.md/#graphical-app-store-frontend):
`sudo apt install qtsoundmodem`

View File

@ -2,14 +2,15 @@
## Script
The script requires dowloaded, set to executable and run and is a little simpler than the manual setup - thanks to John M5ET for writing it!
The script requires downloaded, set to executable and run and is a little simpler than the manual setup - thanks to John M5ET for writing it!
I strongly recommend you read through it **before** running it - it should look similar to the manual method below.
**General computer security advice is to not blindly run scripts you downloaded from the internet!**
Download the script from: [[https://guide.foxk.it/static/files/setup.sh]]
Download the script from:
[https://guide.foxk.it/static/files/setup.sh](https://guide.foxk.it/static/files/setup.sh).
Lines you can run in the command line are:
This, sadly, must be run in the command line - the lines to run it are:
```
cd /tmp
@ -32,6 +33,9 @@ You can trust this key - it is contained in [Debian](https://salsa.debian.org/de
## Set up Repo
Then you need to add the repo for your OS:
### Ubuntu 24.04 LTS amd64
`sudo sh -c 'echo "deb
https://online-amateur-radio-club-m0ouk.github.io/oarc-packages noble main" >> /etc/apt/sources.list'`
### Ubuntu 22.04 LTS amd64
`sudo sh -c 'echo "deb https://online-amateur-radio-club-m0ouk.github.io/oarc-packages jammy main" >> /etc/apt/sources.list'`

View File

@ -18,6 +18,12 @@ For details on how to use it:
* Configuration can be found [here](config/bpq.md).
* The project website can be found [here](https://www.cantab.net/users/john.wiseman/Documents/)
!!! info
BPQ has a good community, plenty of features and is well supported
within the UK Packet Radio Network. It is a good starting point for
beginners and old hands alike! It is available in the repo and kept up
to date for you by me!
## XROUTER
XROUTER is written by Paula G8PZT and allows a computer to act as a node in a NET/ROM and AX.25 network.
@ -35,6 +41,13 @@ For details on how to use it:
* Configuration can be found [here](config/xrouter.md).
* The project website can be found [here](https://groups.io/g/xrouter/topics)
!!! info
XROUTER has a good community, plenty of features and is well supported
with an active groups.io. It has an excellent user interface and is
quick to get up and running with! It is a good starting point for
beginners and old hands alike! It is not available in the repo and you
will need to remember to update it periodically.
## Linux Native Stack
The Linux native AX.25 stack has been authored by many over the years, and is shipped as a standard part of Debian.
@ -53,3 +66,11 @@ For details on how to use it:
* Installation information can be found [here](install/linux.md).
* Configuration can be found [here](config/linux.md).
!!! info
The Linux stack is deep and powerful in its featureset and nearly
infinitely configurable, but this is both a blessing and a curse.
It has less community than the others and is harder to get support for.
It has been known to have bugs that cause issues with stability which
might impact your neighbours. It is probably worth avoiding if you're a
beginner and only exploring if you're a keen experimenter!

View File

@ -11,65 +11,65 @@ osver=`echo "$osstr" |sed 's/GNU\/Linux//g'`
case `echo $osver` in
"Debian 13"*)
echo "Installing GPG signing key, please wait..."
# curl https://online-amateur-radio-club-m0ouk.github.io/oarc-packages/hibby.key | tee /etc/apt/trusted.gpg.d/hibby.asc
curl https://online-amateur-radio-club-m0ouk.github.io/oarc-packages/hibby.key | tee /etc/apt/trusted.gpg.d/hibby.asc
echo -e "\033[32mGPG signing key installed correctly.\033[0m"
echo "Adding Debian testing repository for OARC packages..."
# echo "#OARC Packet Radio Packages" >> /etc/apt/sources.list
# echo "deb https://online-amateur-radio-club-m0ouk.github.io/oarc-packages testing main" >> /etc/apt/sources.list
echo "#OARC Packet Radio Packages" >> /etc/apt/sources.list
echo "deb https://online-amateur-radio-club-m0ouk.github.io/oarc-packages testing main" >> /etc/apt/sources.list
echo -e "\033[32mRepository added correctly.\033[0m"
;;
"Debian 12"*)
echo "Installing GPG signing key, please wait..."
# curl https://online-amateur-radio-club-m0ouk.github.io/oarc-packages/hibby.key | tee /etc/apt/trusted.gpg.d/hibby.asc
curl https://online-amateur-radio-club-m0ouk.github.io/oarc-packages/hibby.key | tee /etc/apt/trusted.gpg.d/hibby.asc
echo -e "\033[32mGPG signing key installed correctly.\033[0m"
echo "Adding Debian stable repository for OARC packages..."
# echo "#OARC Packet Radio Packages" >> /etc/apt/sources.list
# echo "deb https://online-amateur-radio-club-m0ouk.github.io/oarc-packages bookworm main" >> /etc/apt/sources.list
echo "#OARC Packet Radio Packages" >> /etc/apt/sources.list
echo "deb https://online-amateur-radio-club-m0ouk.github.io/oarc-packages bookworm main" >> /etc/apt/sources.list
echo -e "\033[32mRepository added correctly.\033[0m"
;;
"Ubuntu 22.04"*)
echo "Installing GPG signing key, please wait..."
# curl https://online-amateur-radio-club-m0ouk.github.io/oarc-packages/hibby.key | tee /etc/apt/trusted.gpg.d/hibby.asc
curl https://online-amateur-radio-club-m0ouk.github.io/oarc-packages/hibby.key | tee /etc/apt/trusted.gpg.d/hibby.asc
echo -e "\033[32mGPG signing key installed correctly.\033[0m"
echo "Adding Ubuntu jammy repository for OARC packages..."
# echo "#OARC Packet Radio Packages" >> /etc/apt/sources.list
# echo "deb https://online-amateur-radio-club-m0ouk.github.io/oarc-packages jammy main" >> /etc/apt/sources.list
echo "#OARC Packet Radio Packages" >> /etc/apt/sources.list
echo "deb https://online-amateur-radio-club-m0ouk.github.io/oarc-packages jammy main" >> /etc/apt/sources.list
echo -e "\033[32mRepository added correctly.\033[0m"
;;
"Ubuntu 24.04"*)
echo "Installing GPG signing key, please wait..."
# curl https://online-amateur-radio-club-m0ouk.github.io/oarc-packages/hibby.key | tee /etc/apt/trusted.gpg.d/hibby.asc
curl https://online-amateur-radio-club-m0ouk.github.io/oarc-packages/hibby.key | tee /etc/apt/trusted.gpg.d/hibby.asc
echo -e "\033[32mGPG signing key installed correctly.\033[0m"
echo "Adding Ubuntu jammy repository for OARC packages..."
# echo "#OARC Packet Radio Packages" >> /etc/apt/sources.list
# echo "deb https://online-amateur-radio-club-m0ouk.github.io/oarc-packages noble main" >> /etc/apt/sources.list
echo "#OARC Packet Radio Packages" >> /etc/apt/sources.list
echo "deb https://online-amateur-radio-club-m0ouk.github.io/oarc-packages noble main" >> /etc/apt/sources.list
echo -e "\033[32mRepository added correctly.\033[0m"
;;
"Raspbian 12"*)
echo "Installing GPG signing key, please wait..."
# curl https://online-amateur-radio-club-m0ouk.github.io/oarc-packages/hibby.key | tee /etc/apt/trusted.gpg.d/hibby.asc
curl https://online-amateur-radio-club-m0ouk.github.io/oarc-packages/hibby.key | tee /etc/apt/trusted.gpg.d/hibby.asc
echo -e "\033[32mGPG signing key installed correctly.\033[0m"
echo "Adding Raspberry Pi OS stable repository for OARC packages..."
# echo "#OARC Packet Radio Packages" >> /etc/apt/sources.list
# echo "deb https://online-amateur-radio-club-m0ouk.github.io/oarc-packages bookworm main" >> /etc/apt/sources.list
echo "#OARC Packet Radio Packages" >> /etc/apt/sources.list
echo "deb https://online-amateur-radio-club-m0ouk.github.io/oarc-packages bookworm main" >> /etc/apt/sources.list
echo -e "\033[32mRepository added correctly.\033[0m"
;;
"Raspbian 11"*)
echo "Installing GPG signing key, please wait..."
# curl https://online-amateur-radio-club-m0ouk.github.io/oarc-packages/hibby.key | tee /etc/apt/trusted.gpg.d/hibby.asc
curl https://online-amateur-radio-club-m0ouk.github.io/oarc-packages/hibby.key | tee /etc/apt/trusted.gpg.d/hibby.asc
echo -e "\033[32mGPG signing key installed correctly.\033[0m"
echo "Adding Raspberry Pi OS oldstable repository for OARC packages..."
# echo "#OARC Packet Radio Packages" >> /etc/apt/sources.list
# echo "deb https://online-amateur-radio-club-m0ouk.github.io/oarc-packages bullseye main" >> /etc/apt/sources.list
echo "#OARC Packet Radio Packages" >> /etc/apt/sources.list
echo "deb https://online-amateur-radio-club-m0ouk.github.io/oarc-packages bullseye main" >> /etc/apt/sources.list
echo -e "\033[32mRepository added correctly.\033[0m"
;;
"Debian 11"*)
echo "Installing GPG signing key, please wait..."
# curl https://online-amateur-radio-club-m0ouk.github.io/oarc-packages/hibby.key | tee /etc/apt/trusted.gpg.d/hibby.asc
curl https://online-amateur-radio-club-m0ouk.github.io/oarc-packages/hibby.key | tee /etc/apt/trusted.gpg.d/hibby.asc
echo -e "\033[32mGPG signing key installed correctly.\033[0m"
echo "Adding Raspberry Pi OS oldstable repository for OARC packages..."
# echo "#OARC Packet Radio Packages" >> /etc/apt/sources.list
# echo "deb https://online-amateur-radio-club-m0ouk.github.io/oarc-packages bullseye main" >> /etc/apt/sources.list
echo "#OARC Packet Radio Packages" >> /etc/apt/sources.list
echo "deb https://online-amateur-radio-club-m0ouk.github.io/oarc-packages bullseye main" >> /etc/apt/sources.list
echo -e "\033[32mRepository added correctly.\033[0m"
;;
*)

BIN
docs/static/img/bpq_login.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

BIN
docs/static/img/node-main.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB