BAYCOM(9)

πŸ“¦
version 1.1.0 Β· 2 versions
  • 1.1.0 Β· alpine 3.24, debian bookworm, debian trixie, nixos 26.05, ubuntu jammy, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking (latest)
  • 1.0.4 Β· fedora 43, fedora 44
, in alpine 3.24, debian bookworm, debian trixie, nixos 26.05, ubuntu jammy, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking

πŸ’– BAYCOM(9) β€” the kernel reference guide, but make it cute πŸŽ€

okay so this is the baycom page from the Kernel Reference Guide, and honestly? she's a whole vibe. amateur radio, kernel drivers, real hardware β€” the girls are coding. let's get into it ✨


🌸 NAME 🌸

baycom β€” the amateur (AX.25) packet radio network driver for baycom modems πŸ’… like, she talks to your radio over packets, that's the whole thing, no cap.


πŸ¦‹ SYNOPSIS πŸ¦‹

#include <linux/baycom.h>
#include <linux/hdlcdrv.h>

that's it bestie, those two headers and you're in 🫢


✨ DESCRIPTION ✨

so rn the driver supports three different modems: ser12, par96 and par97. three icons, one driver, she ate πŸ”₯

πŸŽ€ ser12

this one is a very simple 1200 baud AFSK modem. lowkey a minimalist queen.

  • the modem is literally just a modulator/demodulator chip β€” usually a TI TCM3105 🧚
  • the computer is the one responsible for regenerating the receiver bit clock (yes, the PC is doing the work, main character energy fr)
  • it connects to a serial port, hence the name ser12
  • and here's the tea β˜•: since the serial port is not used as an async serial port, the kernel driver for serial ports cannot be used. so this driver only supports standard serial hardware: 8250, 16450, 16550. that's the list, don't @ me

πŸ’œ par96

this one's a modem for 9600 baud FSK, compatible to the G3RUH standard. glow up.

  • the modem does all the filtering and regenerates the receiver clock (she's independent πŸ’…)
  • data gets transferred from and to the PC via a shift register
  • the shift register gets filled with 16 bits, and then an interrupt is signalled
  • the PC then empties the shift register in a burst β€” iconic behaviour honestly
  • this modem connects to the parallel port, hence the name par96 🌈

πŸ“ par97

this is a redesign of the par96 modem by Henning Rech, DF9IC. respect the icon πŸ‘‘

  • the modem is protocol compatible to par96
  • but it uses only three low power ICs πŸ§šβ€β™€οΈ
  • and because of that it can be fed from the parallel port and does not require an additional power supply. sustainable queen, we stan 🌱

πŸ‘‘ IOCTL CALLS πŸ‘‘

the ioctl calls follow the implementation in the hdlcdrv. that's the vibe, that's the reference, go look there πŸ’–

⭐ BAYCOMCTL_GETMODEMTYPE

returns the modem type (i.e. ser12 or par96) and the options in effect (currently only the source of the DCD signal). like a little vibe check for your modem πŸ”

🌸 BAYCOMCTL_SETMODEMTYPE

sets the modem type and the options. Only superuser can do this β€” so yeah, you need the big permissions for this one, no shortcuts πŸ™ˆ

πŸ¦‹ BAYCOMCTL_GETDEBUG

returns some debugging values. Not always available β€” so don't come for her if it's not there, she's doing her best 😭


πŸ’« SEE ALSO πŸ’«

baycom (9), soundmodem (9), linux/drivers/net/hdlcdrv.c,

(and yes the trailing comma is staying, it's part of the lore πŸ’€)


πŸ’œ AUTHOR πŸ’œ

baycom was written by Thomas Sailer, HB9JNX/AE4WA, (t.sailer@alumni.ethz.ch). thank you king, we appreciate you πŸ«ΆπŸ‘‘


πŸ’‘ friendly reminder bestie: this whole page is the kernel reference guide realness β€” if you're poking at hardware, double-check your serial chip situation before you go feral. ser12 only rolls with 8250, 16450, 16550 and that is not a suggestion πŸ’…

and that's the page!! this was Linux 2.1.x, dated 27 April 2008, filed under BAYCOM(9) β€” mwah, hope you understood it, ily, go build something cute with your packets πŸŽ€πŸ’–βœ¨πŸ¦‹πŸŒΈ