WBWD(4)

πŸ“¦ version 15.1, in freebsd 14.5, freebsd 15.1, nixpkgs unstable

✨ WBWD(4) β€” the watchdog driver for Winbond/Nuvoton Super I/O chips, but make it a vibe ✨

okay so bestie, this is the <pink>wbwd</pink> device driver situation for the Winbond/Nuvoton Super I/O chips watchdog timer. it's giving kernel interfaces manual energy and honestly? i'm obsessed. let's get into it 🫢


🌸 SYNOPSIS 🌸

so if you wanna compile this driver into the kernel (main character move tbh), you gotta place these lines in your kernel configuration file:

device superio
device wbwd

or, like, alternatively β€” if you're more of a "load it as a module at boot time" girlie β€” put this line in loader.conf(5):

wbwd_load="YES"

easy peasy, no cap ✨


πŸ’– DESCRIPTION πŸ’–

the <pink>wbwd</pink> driver provides watchdog(4) support for the watchdog interrupt timer that's present on at least these Super I/O chips. and when i say at least, i mean these are the confirmed baddies:

  • Winbond 83627HF/F/HG/G
  • Winbond 83627S
  • Winbond 83697HF
  • Winbond 83697UG
  • Winbond 83637HF
  • Winbond 83627THF
  • Winbond 83687THF
  • Winbond 83627EHF
  • Winbond 83627DHG
  • Winbond 83627UHG
  • Winbond 83667HG
  • Winbond 83627DHG-P
  • Winbond 83667HG-B
  • Nuvoton NCT6775
  • Nuvoton NCT6776
  • Nuvoton NCT6102
  • Nuvoton NCT6779
  • Nuvoton NCT6791
  • Nuvoton NCT6792

like, look at that list. iconic. every single one of them is serving Super I/O realness πŸ’…


πŸŽ€ SYSCTL VARIABLES πŸŽ€

the <pink>wbwd</pink> driver provides the following options as sysctl(8) variables. let's break it down bestie:

  • dev.wbwd.0.timeout_override β€” this variable allows you to program the timer to a value that's independent of the one provided by the watchdog(4) framework, while still relying on the regular updates from, like, watchdogd(8). this is particularly useful if your system provides multiple watchdogs and you want them to fire in a special sequence β€” to trigger an NMI after a shorter period than the reset timeout, for example. the value you set must not be lower than the sleep time of watchdogd(8). a value of 0 disables this feature and the timeout value provided by watchdog(4) will be used instead. no gatekeeping here, but rules are rules 🫢
  • dev.wbwd.0.debug_verbose β€” if set, this sysctl will tell the driver to log its current state before and after the timer reset on each invocation from watchdog(9) to the kernel message buffer. for debugging purposes. it's giving "not me being extra" but honestly? we love a thorough queen πŸ”₯
  • dev.wbwd.0.debug β€” this read-only value gives you the state of some registers on last update. just a lil peek behind the curtain, iykyk πŸ‘‘

the <pink>wbwd</pink> driver also provides further sysctl options that are hidden by default. see the source code for more information. yes, there are secret options. no, i can't tell you what they are. the source code is right there bestie, go look 😭


πŸ¦‹ SEE ALSO πŸ¦‹

go read them. they're all part of the ecosystem. periodt πŸ’œ


🌈 HISTORY 🌈

the <pink>wbwd</pink> driver first appeared in FreeBSD 10.0. a legend was born, and we're all just living in its timeline fr fr ⭐


πŸ‘‘ AUTHORS πŸ‘‘

this manual page was written by Bjoern A. Zeeb <bz@FreeBSD.org>. we stan a documentation icon πŸŽ€


and that's the whole vibe bestie! stay safe out there with your watchdog timers, don't set your timeout_override lower than your watchdogd(8) sleep time, and remember: the kernel message buffer is your friend πŸ’–

Debian Β· October 16, 2019 Β· WBWD(4) β€” catch you in the next manpage, mwah πŸ’‹

πŸ“¦ where this page comes from