MIIBUS(4)
π MIIBUS(4) β the Kernel Interfaces Manual page, but make it cute π
okay bestie, gather round, because today we're talking about miibus β that's IEEE 802.3 Media Independent Interface network bus, in case you were wondering what the acronym was serving. no cap, this little guy is the whole reason your NIC even knows what speed it's running at. π¦
β¨ SYNOPSIS β¨
for most network interface cards (NIC), it's literally just:
device miibus
that's it. one line. iconic. π
πΈ DESCRIPTION πΈ
so the miibus driver is the middleman of the networking world β it provides an interconnection between the Media Access Control (MAC) sublayer, the Physical Layer entities (PHY), Station Management (STA) entities, and the PHY Layer as defined by the IEEE 802.3 Standard. it's giving glue code, but make it glamorous. β¨
the miibus layer is what lets network device drivers share common support code for all the various external PHY devices out there. most 10/100 network interface cards either use an MII transceiver or have built-in transceivers that can be programmed using an MII interface. and the miibus driver currently handles all of the media detection, selection, and reporting using the ifmedia interface. like, all of it. she does it all. π
also there's a generic driver included for all PHYs that aren't handled by a specific driver β and the reason that's even possible is because all 10/100 PHYs implement the same general register set along with their vendor specific register set. so like, they all speak the same language, they just have accents. π«Ά
the following network device drivers use the miibus interface β roll call, everybody say hi:
ae(4)β Attansic/Atheros L2 Fast Ethernetage(4)β Attansic/Atheros L1 Gigabit Ethernetalc(4)β Atheros AR8131/AR8132 PCIe Ethernetale(4)β Atheros AR8121/AR8113/AR8114 PCIe Ethernetaue(4)β ADMtek USB Ethernetaxe(4)β ASIX Electronics AX88172 USB Ethernetaxge(4)β ASIX Electronics AX88178A/AX88179 USB Ethernetbce(4)β Broadcom NetXtreme II Gigabit Ethernetbfe(4)β Broadcom BCM4401 Ethernetbge(4)β Broadcom BCM570xx Gigabit Ethernetcas(4)β Sun Cassini/Cassini+ and National Semiconductor DP83065 Saturndc(4)β DEC/Intel 21143 and various workalikesed(4)β NE[12]000, SMC Ultra, 3c503, DS8390 cardset(4)β Agere ET1310 Gigabit Ethernetfxp(4)β Intel EtherExpress PRO/100Bgem(4)β Sun ERI, Sun GEM and Apple GMAC Ethernethme(4)β Sun HME Ethernetjme(4)β JMicron JMC250 Gigabit/JMC260 Fast Ethernetlge(4)β Level 1 LXT1001 NetCellerator Gigabit Ethernetmsk(4)β Marvell/SysKonnect Yukon II Gigabit Ethernetnfe(4)β NVIDIA nForce MCP Networking Adapternge(4)β National Semiconductor DP83820/DP83821 Gigabit Ethernetpcn(4)β AMD Am79C97x PCI 10/100re(4)β RealTek 8139C+/8169/8169S/8110Srl(4)β RealTek 8129/8139rue(4)β RealTek RTL8150 USB To Fast Ethernetsf(4)β Adaptec AIC-6915sge(4)β Silicon Integrated Systems SiS190/191 Ethernetsis(4)β Silicon Integrated Systems SiS 900/SiS 7016sk(4)β SysKonnect SK-984x and SK-982x Gigabit Ethernetsmsc(4)β SMSC LAN9xxx USB Fast Ethernetste(4)β Sundance ST201 (D-Link DFE-550TX)stge(4)β Sundance/Tamarack TC9021 Gigabit Ethernettl(4)β Texas Instruments ThunderLANtx(4)β SMC EtherPower II (83c170)udav(4)β Davicom DM9601 USB Etherneture(4)β RealTek RTL8152 USB To Fast Ethernetvge(4)β VIA VT612x PCI Gigabit Ethernetvr(4)β VIA Rhine, Rhine IIvte(4)β DM&P Vortex86 RDC R6040 Fast Ethernetwb(4)β Winbond W89C840Fxl(4)β 3Com 3c90x
look at that list. that's a whole friend group. π
π COMPATIBILITY π
ngl, the implementation of miibus was originally intended to have similar API interfaces to BSD/OS 3.0 and NetBSD, but as a result, they are not well behaved newbus device drivers. that's not me being mean, that's just what the page says. it's a canon event. π
π¦ SEE ALSO π¦
go read these, bestie, they're all connected:
ae(4), age(4), alc(4), ale(4), arp(4), aue(4), axe(4), axge(4), bce(4), bfe(4), bge(4), cas(4), dc(4), ed(4), et(4), fxp(4), gem(4), hme(4), jme(4), lge(4), msk(4), netintro(4), nfe(4), nge(4), pcn(4), re(4), rgephy(4), rl(4), rue(4), sf(4), sge(4), sis(4), sk(4), smsc(4), ste(4), stge(4), tl(4), tx(4), udav(4), ure(4), vge(4), vr(4), vte(4), wb(4), xl(4)
(and yes, rgephy(4) and netintro(4) are in there even though they weren't in the big list above β they're in the SEE ALSO, and I would never leave them out. β¨)
β STANDARDS β
want more info on MII? more information on MII can be found in the IEEE 802.3 Standard. that's the source, periodt. π
π HISTORY π
the miibus driver first appeared in FreeBSD 3.3. she's been around a while and she's still serving. π
πΈ AUTHORS πΈ
this manual page was written by Tom Rhodes <trhodes@FreeBSD.org>. thank you Tom, you ate. π«Ά
and that's the whole vibe check bestie β Debian, December 1, 2015, MIIBUS(4). mwah. π
π¦ where this page comes from
- debian bookworm: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- debian trixie: freebsd-manpages 12.2-2 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu jammy: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu noble: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu questing: freebsd-manpages 12.2-2
- ubuntu resolute: freebsd-manpages 12.2-2build1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu stonking: freebsd-manpages 12.2-2build1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms