GPIOMON(1)

✨ GPIOMON ✨

Okay so bestie, listenβ€”you know how sometimes you just need to watch a GPIO line and see what it's doing? Like, what is it feeling? What's its vibe? That's literally what this whole thing is for. It's the libgpiod command-line utility, and it slays.

No cap, this tool sits there waiting for events on GPIO lines and prints them out to standard output. It's giving "patient bestie who just wants to observe." You tell it which lines to watch (by name, or by offset if you're using the chip option), and it just... watches. Iconic behavior, honestly. πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

gpiomon [OPTIONS] <line>...

🌸 DESCRIPTION 🌸

So here's the tea: gpiomon waits for events on GPIO lines and prints them to standard output. It's literally an event watcher. That's the whole vibe.

Lines are specified by name, or optionally by offset if the chip option is provided. So you can either be like "watch LED0" or you can be all technical and give it an offset. Both are valid, both are slay. ✨


πŸ’… OPTIONS πŸ’…

Okay bestie, here come ALL the options. There are a lot, but you got this. Every single one matters, so pay attentionβ€”iykyk.

  • --banner β€” displays a banner when it successfully starts up. A little "hello, I'm here!" moment. Cute.
  • -b, --bias <bias> β€” specifies the line bias. Possible values are 'pull-down', 'pull-up', and 'disabled'. Default is to leave bias unchangedβ€”it's not gonna mess with anything unless you tell it to.
  • --by-name β€” treats lines as names even if they would parse as an offset. So like, if you have a line literally named 0, this makes it a name and not an offset. No confusion allowed, periodt.
  • -c, --chip <chip> β€” restricts scope to a particular chip. Makes it focus on one chip only, like a laser.
  • -C, --consumer <name> β€” the consumer name applied to requested lines. Default is 'gpiomon'. So that's what shows up as the "owner" of the lines it's watching.
  • -e, --edges <edges> β€” specifies which edges to monitor. Possible values are 'falling', 'rising', and 'both'. Default is 'both'. You get to pick what kind of edge drama you're interested in.
  • -E, --event-clock <clock> β€” specifies the source clock for event timestamps. Possible values are 'monotonic', 'realtime', and 'hte'. Default is 'monotonic'. By default, 'realtime' is formatted as UTC, and the others are formatted as raw u64. So keep that in mind!
  • -h, --help β€” displays this help and exits. Classic.
  • -F, --format <fmt> β€” specifies a custom output format. You get to control how the output looks. Main character energy, honestly.
  • --idle-timeout <period> β€” exits gracefully if no events occur for the period specified. So if nothing happens for that long, it's like "okay, I'm out" and leaves politely.
  • -l, --active-low β€” treats the line as active low, flipping the sense of rising and falling edges. So what used to be rising is now falling, and vice versa. A whole flip, a whole vibe shift.
  • --localtime β€” formats event timestamps as local time. For when you want to know what time it is for you, not for the universe.
  • -n, --num-events <num> β€” exits after processing num events. So it watches for that many events and then bounces.
  • -p, --debounce-period <period> β€” debounces the line(s) with the specified period. If your signal is being extra and bouncing around, this smooths it out. A little chill pill for your GPIO.
  • -q, --quiet β€” doesn't generate any output. It's the "silent mode" of the operation. Just vibes, no words.
  • -I, --initial-state β€” prints the initial states of the lines. So before it even starts watching, it tells you what everything looks like. A little setup moment. 🫢
  • -N, --numeric β€” displays line values as '0' (inactive) or '1' (active). Numbers instead of words. Simple, clean, efficient.
  • -s, --strict β€” aborts if requested line names are not unique. So if you have two lines with the same name, it's not gonna deal with that. It's a strict queen. πŸ’€
  • --unquoted β€” doesn't quote line or consumer names. So the names appear without any quotation marks around them. Free the names, honestly.
  • --utc β€” formats event timestamps as UTC (default for 'realtime'). For when you need everything in universal time.
  • -v, --version β€” outputs version information and exits. The classic "who am I?" move.

🧚 Chips 🧚

Okay so a GPIO chip may be identified by number, name, or path. For example, '0', 'gpiochip0', and '/dev/gpiochip0' all refer to the same chip. So you got options, bestie. Three ways to say the same thing. Choose your fighter.


🌈 Periods 🌈

Periods are taken as milliseconds unless units are specified, like 10us. Supported units are 'm', 's', 'ms', and 'us'β€”for minutes, seconds, milliseconds, and microseconds respectively. So you can be precise or general, depending on your needs. 🌟


⭐ Format specifiers ⭐

These are the format specifiers you can use in your custom output. Every single one, no skipping!

  • %o β€” GPIO line offset
  • %l β€” GPIO line name
  • %c β€” GPIO chip name
  • %e β€” numeric edge event type ('1' - rising or '2' - falling)
  • %E β€” edge event type ('rising' or 'falling')
  • %S β€” event timestamp as seconds
  • %U β€” event timestamp as UTC
  • %L β€” event timestamp as local time

πŸ’– AUTHOR πŸ’–

Bartosz Golaszewski <brgl@kernel.org> β€” the icon who made this happen. Periodt. πŸ‘‘


πŸ”₯ REPORTING BUGS πŸ”₯

Report bugs to:

  • Bartosz Golaszewski <brgl@kernel.org>
  • linux-gpio <linux-gpio@vger.kernel.org>

No cap, if something's broken, these are the people to tell. They wanna know!


Copyright Β© 2017-2023 Bartosz Golaszewski. License: GPL-2.0-or-later.

This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. So like, use it, love it, share itβ€”but don't come for anyone if it doesn't work exactly how you wanted. It's a free gift, bestie. πŸ’œ


πŸ’Œ Sign-off πŸ’Œ

So this is gpiomon v2.3.2 (which is part of libgpiod v2.2.1), and this manual page is dated November 2026. That's the whole thing. Go watch some GPIO lines and slay, bestie. You got this. βœ¨πŸ¦‹πŸ’–πŸŒˆβ­

πŸ“¦ where this page comes from
  • arch rolling: libgpiod 2.3.2-1 Β· LGPL-2.1-or-later AND GPL-2.0-or-later AND CC-BY-SA-4.0
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms