NG_BT3C(4)

πŸ’– NG_BT3C πŸ’–

okay bestie, gather round, because this is the manual page for ng_bt3c β€” the Netgraph node type that is also a 3Com Bluetooth PC card driver. yes. both. it's giving multitasking icon energy. πŸŽ€


✨ SYNOPSIS ✨

#include <sys/types.h>
#include <netgraph/bluetooth/include/ng_bt3c.h>

like, that's the whole vibe. two includes. slay. πŸ’…


🚨 DEPRECATION NOTICE 🚨

bestie. listen. This driver is scheduled for removal prior to the release of FreeBSD 13.0. it's on the way out. no cap. enjoy it while it's here 😭

🌸 DESCRIPTION 🌸

so the btccc node type is both a persistent Netgraph node type and a driver for the 3Com Bluetooth PC card (3CRWB6096-HP). it's a dual threat, a main character, we love that for it. ✨

it implements a Bluetooth HCI UART transport layer as per chapter H4 of the Bluetooth Specification Book v1.1. and the cute part? a new node gets created when the card is plugged. automatic. iconic. no setup arc needed.

okay but here's the thing, and I need you to hear me on this one: in order to use the card one MUST download the firmware first. like, capital-M MUST. no firmware, no card. and because of copyright issues, the firmware literally cannot be provided with this driver. πŸ’€

but don't spiral, because the firmware can be obtained from the Windows driver package, which you can download from the 3Com web site at no charge. free. gratis. we love a freebie. 🫢 the firmware name is BT3CPCC.BIN. and to load the firmware into the card, you use bt3cfw(8). and get this β€” the original author was using the original firmware that came with the card on CD-ROM. vintage. retro. obsessed. πŸ’–

MD5 (BT3CPCC.BIN) = 36170fda56ea9fdbf1702c966f8a97f1

^ that's the checksum, so you know you got the right one. screenshot it. save it. iykyk. πŸŽ€

now, the node has a single hook called hook. here's the flow, bestie:

  • incoming bytes received on the device get re-assembled into HCI frames (according to the length)
  • full HCI frames are sent out on the hook
  • HCI frames received on hook are transmitted out
  • and no modification to the data is performed in either direction β€” it's a straight pass-through, no editing, no commentary, just vibes πŸ¦‹

πŸ”₯ HARDWARE πŸ”₯

the ng_bt3c driver provides support for the 3Com/HP 3CRWB6096-A PCCARD bluetooth adapter. that's the one. that's the girl. πŸ‘‘


πŸŽ€ HOOKS πŸŽ€

this node type supports the following hooks:

  • hook β€” single HCI frame contained in single mbuf structure. one frame, one mbuf. simple. clean. periodt. πŸ’…

πŸ’œ CONTROL MESSAGES πŸ’œ

so this node type supports the generic control messages, plus these little guys:

  • NGM_BT3C_NODE_GET_STATE (get_state) β€” returns the current receiving state for the node. πŸ‘€
  • NGM_BT3C_NODE_SET_DEBUG (set_debug) β€” this command takes an integer argument and sets the current debug level for the node.
  • NGM_BT3C_NODE_GET_DEBUG (get_debug) β€” returns an integer containing the current debug level for the node.
  • NGM_BT3C_NODE_GET_QLEN (get_qlen) β€” this command takes a parameter that specifies queue number and returns the current length of the queue for the node.
  • NGM_BT3C_NODE_SET_QLEN (set_qlen) β€” this command takes two parameters that specify the queue number and the maximum length of the queue, and sets the maximum length of the queue for the node.
  • NGM_BT3C_NODE_GET_STAT (get_stat) β€” returns various statistic information for the node, such as: number of bytes (frames) sent, number of bytes (frames) received and number of input (output) errors. πŸ“Š
  • NGM_BT3C_NODE_RESET_STAT (reset_stat) β€” reset all statistic counters to zero. fresh start. clean slate. we love a reset. ✨
  • NGM_BT3C_NODE_DOWNLOAD_FIRMWARE β€” download card firmware. that's it. that's the whole thing. πŸ“

🌈 SHUTDOWN 🌈

this node shuts down when the corresponding card is un-plugged. bye bestie πŸ‘‹πŸ’”


πŸ‘‘ SEE ALSO πŸ‘‘

cardbus(4), netgraph(4), pccbb(4), pcic(4), pccard.conf(5), bt3cfw(8), ngctl(8)


⭐ HISTORY ⭐

the btccc node type was implemented in FreeBSD 5.0. a legend since day one, fr fr. πŸ¦‹


πŸ’– AUTHORS πŸ’–

Maksim Yevmenkin <m_evmenkin@yahoo.com>


πŸ’€ BUGS πŸ’€

the driver is based on information obtained from Jose Orlando Pereira <jop@di.uminho.pt> and disassembled the W2K driver. reverse-engineering detective work, honestly iconic of them πŸ”βœ¨


okay that's the whole page bestie!! this one came out of the Debian edition of the Kernel Interfaces Manual, dated December 17, 2004 β€” genuinely a time capsule and I'm obsessed with her πŸŽ€πŸ’… go flash that firmware (after downloading it, obviously) and slay ✨

πŸ“¦ where this page comes from