WBWD(4)

πŸ‘‘ WBWD β€” the Winbond/Nuvoton watchdog timer driver, bestie edition πŸ’–

okay so this is wbwd(4), a section 4 kernel interfaces manual page, and it is literally the device driver for the Winbond/Nuvoton Super I/O chips watchdog timer. she's niche. she's powerful. she's giving silicon guardian angel energy ✨


🌸 NAME 🌸

wbwd β€” device driver for Winbond/Nuvoton Super I/O chips watchdog timer


✨ SYNOPSIS ✨

so you wanna get this driver up in your kernel? periodt. drop these lines into your kernel configuration file:

device superio
device wbwd

or, if you'd rather be a module girlie and load the driver at boot time instead, put this one line in loader.conf(5):

wbwd_load="YES"

both paths slay. pick your fighter 🫢


πŸ¦‹ DESCRIPTION πŸ¦‹

The wbwd driver provides watchdog(4) support for the watchdog interrupt timer that lives on at least these Super I/O chips, and yes, we're listing every single one because they all deserve their moment:

  • 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

the whole roster. the whole squad. the whole lineup πŸ’…


πŸŽ€ SYSCTL VARIABLES πŸŽ€

The wbwd driver serves up the following options as sysctl(8) variables. let's go through them one by one, no skipping, no skimming 🧚

  • dev.wbwd.0.timeout_override β€” this one lets you program the timer to a value that's independent of whatever the watchdog(4) framework handed you, while still relying on the regular updates from, like, watchdogd(8) and friends. this is highkey useful if your system is running multiple watchdogs and you want them to fire in a very specific sequence β€” say, triggering 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). and a value of 0 disables this feature entirely, in which case the timeout value provided by watchdog(4) gets used instead. okay? okay. πŸ’–
  • dev.wbwd.0.debug_verbose β€” set this sysctl and the driver will log its current state before and after the timer reset, every single time it's invoked from watchdog(9), straight into the kernel message buffer. for debugging. very "not me logging everything to figure out what's happening" energy 😭
  • dev.wbwd.0.debug β€” this one's read-only, and it gives you the state of some registers on the last update. she observes, she does not accept input. icon behaviour ✨

and bestie, that's not even all of it β€” the wbwd driver also provides further sysctl options that are hidden by default. πŸ‘€ see the source code for more information, iykyk.


🌈 SEE ALSO 🌈

superio(4), watchdog(4), device.hints(5), watchdog(8), watchdogd(8), watchdog(9)

go read them. they're all friends. it's a whole friend group 🫢


⭐ HISTORY ⭐

The wbwd driver first appeared in FreeBSD 10.0. a real one since day one, fr fr.


πŸ’œ AUTHORS πŸ’œ

This manual page was written by Bjoern A. Zeeb <bz@FreeBSD.org>. thank you for your service, king πŸ‘‘


and that's the whole page, bestie!! this one came from the Debian crew, dated October 16, 2019 β€” so if you're reading this, know that wbwd(4) has been holding it down since then. go forth, set your timeouts, and stay iconic πŸ’…πŸ’–βœ¨

πŸ“¦ where this page comes from