UMODEM(4)

πŸ’– umodem(4) β€” the USB modem driver, bestie edition πŸ’–

okay so like. this is a page from the Kernel Interfaces Manual, and it's all about umodem, the USB Communication Device Class serial (CDC ACM) driver. yes that's a mouthful. we're gonna get through it together tho 🫢


✨ NAME ✨

umodem β€” USB Communication Device Class serial (CDC ACM) driver


✨ SYNOPSIS ✨

so like, you wanna bake this driver right into your kernel? okay queen, add these lines to your kernel configuration file:

device usb
device ucom
device umodem

orrr, if you'd rather just load it as a module at boot time (way more chill tbh), drop this line into loader.conf(5):

umodem_load="YES"

✨ DESCRIPTION ✨

The umodem driver is literally the support system for USB modems and serial devices that implement the Communication Device Class Abstract Control Model (CDC ACM). it also provides device-side CDC ACM support, which is giving main character energy on both sides ngl.

the supported modems are basically standard serial line modems, but you reach them through USB instead. they speak the regular AT command set, no cap. and here's the cute part β€” those AT commands can either be multiplexed with the data stream or handled through separate pipes. if it's the separate-pipes situation, then the AT commands have to be given on a device separate from the data device. that's just how it is πŸ’…

you access the device through the ucom(4) driver, which makes it behave like a tty(4). slay.


✨ HARDWARE ✨

these are the devices umodem has your back on, bestie:

  • 3Com 5605
  • Curitel PC5740 Wireless Modem
  • Kyocera AH-K3001V Mobile Phone(WILLCOM)
  • Kyocera WX320K Mobile Phone(WILLCOM)
  • Metricom Ricochet GS USB wireless modem
  • Sierra MC5720 Wireless Modem
  • Yamaha Broadband Wireless Router RTW65b
  • ELSA MicroLink 56k USB modem
  • Sony Ericsson W810i phone
  • Sonim XP5300 Force

look at that roster. iconic lineup honestly πŸ”₯


✨ FILES ✨

here's where everything lives, keep it noted πŸ“

  • /dev/ttyU* β€” for callin ports
  • /dev/ttyU*.init
  • /dev/ttyU*.lock β€” corresponding callin initial-state and lock-state devices
  • /dev/cuaU* β€” for callout ports
  • /dev/cuaU*.init
  • /dev/cuaU*.lock β€” corresponding callout initial-state and lock-state devices

✨ SEE ALSO ✨

go read these next, i promise they're worth it:


✨ HISTORY ✨

the umodem driver first appeared in NetBSD 1.5. then this manual page got adopted from NetBSD by Tom Rhodes <trhodes@FreeBSD.org> in April 2002. a little historical moment. we love to see it 🌸


✨ BUGS ✨

okay so this is the tea: only modems with multiplexed commands and data are supported at the moment. that's it. that's the limitation. don't come for me, i'm just the messenger 😭

and that's the whole page, bestie!! this one came from the Debian crew and it's dated April 26, 2017. go forth and modem responsibly πŸ¦‹πŸ’œ

πŸ“¦ where this page comes from