{"id":2951,"date":"2025-07-26T16:44:45","date_gmt":"2025-07-26T15:44:45","guid":{"rendered":"https:\/\/workboot.fr\/ciela\/?page_id=2951"},"modified":"2025-07-29T09:41:06","modified_gmt":"2025-07-29T08:41:06","slug":"libgpiod","status":"publish","type":"page","link":"https:\/\/workboot.fr\/ciela\/libgpiod\/","title":{"rendered":"libgpiod"},"content":{"rendered":"\n<nav aria-label=\"Table des mati\u00e8res\" class=\"wp-block-table-of-contents\"><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/#presentation\">Pr\u00e9sentation:<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/#installation\">installation<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/#pourquoi-libgpiod\">Pourquoi libgpiod ?<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/#outils-principaux\">Outils principaux<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/#gpiodetect\">gpiodetect<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/#gpioinfo\">gpioinfo<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/#gpioget\">gpioget<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/#gpioset\">gpioset<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/#gpiofind\">gpiofind<\/a><\/li><\/ol><\/li><\/ol><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/#utilisation-du-langage-c\">Utilisation du langage C<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/#installation-de-la-lib-et-de-la-doc\">installation de la lib et de la doc<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/#structure-de-base-d-un-programme-c\">Structure de Base d&rsquo;un Programme c<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/#controle-des-gpio\">Contr\u00f4le des GPIO<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/#configurer-une-sortie-led\">Configurer une sortie (LED)<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/#lire-une-entree-bouton-ils\">Lire une entr\u00e9e (Bouton\/ILS)<\/a><\/li><\/ol><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/#exemple-en-c\">Exemple en C<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/#compiler-le-code-c\">Compiler le code c<\/a><\/li><\/ol><\/li><\/ol><\/nav>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"presentation\">Pr\u00e9sentation:<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>libgpiod<\/strong>&nbsp;est une biblioth\u00e8que et un ensemble d&rsquo;outils en mode utilisateur (<em>userspace<\/em>) pour interagir avec les GPIO (General Purpose Input\/Output) sur les syst\u00e8mes Linux, en particulier ceux utilisant l&rsquo;interface&nbsp;<strong>GPIO character device<\/strong>&nbsp;(introduite avec le noyau Linux 4.8).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"installation\">installation<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install gpiod libgpiod-dev libgpiod-doc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">il faut appartenir au groupe gpio <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo usermod -aG gpio $USER<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"pourquoi-libgpiod\">Pourquoi libgpiod ?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Avant, les GPIO \u00e9taient souvent contr\u00f4l\u00e9s via l&rsquo;interface obsol\u00e8te&nbsp;<strong>\/sys\/class\/gpio<\/strong>&nbsp;(sysfs), qui avait plusieurs limitations :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pas de gestion propre des conflits d&rsquo;acc\u00e8s.<\/li>\n\n\n\n<li>Pas de contr\u00f4le fin des \u00e9v\u00e9nements (interruptions).<\/li>\n\n\n\n<li>Probl\u00e8mes de performances et de s\u00e9curit\u00e9.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>libgpiod<\/strong>&nbsp;offre une alternative moderne et robuste, avec :<br>\u2705 Une API C bien d\u00e9finie (<code>libgpiod<\/code>).<br>\u2705 Des outils en ligne de commande (<code>gpiodetect<\/code>,&nbsp;<code>gpioinfo<\/code>,&nbsp;<code>gpioget<\/code>,&nbsp;<code>gpioset<\/code>, etc.).<br>\u2705 La prise en charge des interruptions GPIO (polling et \u00e9v\u00e9nements).<br>\u2705 Une meilleure gestion des droits (via&nbsp;<code>\/dev\/gpiochip*<\/code>).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"outils-principaux\">Outils principaux<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>gpiodetect<\/code><\/strong>&nbsp;: Liste les contr\u00f4leurs GPIO disponibles (<code>\/dev\/gpiochip0<\/code>,&nbsp;<code>\/dev\/gpiochip1<\/code>, etc.).<\/li>\n\n\n\n<li><strong><code>gpioinfo<\/code><\/strong>&nbsp;: Affiche les lignes GPIO d&rsquo;un contr\u00f4leur (num\u00e9ros, directions, \u00e9tats).<\/li>\n\n\n\n<li><strong><code>gpioget<\/code><\/strong>&nbsp;: Lit l&rsquo;\u00e9tat d&rsquo;une ou plusieurs GPIO.<\/li>\n\n\n\n<li><strong><code>gpioset<\/code><\/strong>&nbsp;: Modifie l&rsquo;\u00e9tat d&rsquo;une GPIO (avec options de dur\u00e9e, mode push-pull\/open-drain).<\/li>\n\n\n\n<li><strong><code>gpiomon<\/code><\/strong>&nbsp;: Surveille les changements d&rsquo;\u00e9tat (interruptions).<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"gpiodetect\">gpiodetect<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>bruno@rpi364:~\/Works\/gpiomonitor $ gpiodetect<br>gpiochip0 &#91;pinctrl-bcm2835] (54 lines)<br>gpiochip1 &#91;raspberrypi-exp-gpio] (8 lines)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">il y a 2 puces pour les GPIO sur notre RPI <\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"gpioinfo\">gpioinfo<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">va lister les \u00e9tats des GPIO et le d\u00e9tail par puce (chip)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">on peut v\u00e9rifier les lignes utilis\u00e9es et les libres, par exemple 17 et 27 unused<\/p>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>gpioinfo<\/summary>\n<pre class=\"wp-block-code\"><code>gpiochip0 - 54 lines:\n        line   0:     \"ID_SDA\"       unused   input  active-high \n        line   1:     \"ID_SCL\"       unused   input  active-high \n        line   2:       \"SDA1\"       unused   input  active-high \n        line   3:       \"SCL1\"       unused   input  active-high \n        line   4:  \"GPIO_GCLK\"       unused   input  active-high \n        line   5:      \"GPIO5\"       unused   input  active-high \n        line   6:      \"GPIO6\"       unused   input  active-high \n        line   7:  \"SPI_CE1_N\"       unused   input  active-high \n        line   8:  \"SPI_CE0_N\"       unused   input  active-high \n        line   9:   \"SPI_MISO\"       unused   input  active-high \n        line  10:   \"SPI_MOSI\"       unused   input  active-high \n        line  11:   \"SPI_SCLK\"       unused   input  active-high \n        line  12:     \"GPIO12\"       unused   input  active-high \n        line  13:     \"GPIO13\"       unused   input  active-high \n        line  14:       \"TXD1\" \"gpio-fan@0\"  output  active-high &#91;used]\n        line  15:       \"RXD1\"       unused   input  active-high \n        line  16:     \"GPIO16\"       unused   input  active-high \n        line  17:     \"GPIO17\"       unused  output  active-high \n        line  18:     \"GPIO18\"       unused   input  active-high \n        line  19:     \"GPIO19\"       unused   input  active-high \n        line  20:     \"GPIO20\"       unused   input  active-high \n        line  21:     \"GPIO21\"       unused   input  active-high \n        line  22:     \"GPIO22\"       unused   input  active-high \n        line  23:     \"GPIO23\"       unused   input  active-high \n        line  24:     \"GPIO24\"       unused   input  active-high \n        line  25:     \"GPIO25\"       unused   input  active-high \n        line  26:     \"GPIO26\"       unused   input  active-high \n        line  27:     \"GPIO27\"       unused   input  active-high \n        line  28: \"HDMI_HPD_N\"        \"hpd\"   input   active-low &#91;used]\n        line  29: \"STATUS_LED_G\" \"ACT\" output active-high &#91;used]\n        line  30:       \"CTS0\"       unused   input  active-high \n        line  31:       \"RTS0\"       unused   input  active-high \n        line  32:       \"TXD0\"       unused   input  active-high \n        line  33:       \"RXD0\"       unused   input  active-high \n        line  34:    \"SD1_CLK\"       unused   input  active-high \n        line  35:    \"SD1_CMD\"       unused   input  active-high \n        line  36:  \"SD1_DATA0\"       unused   input  active-high \n        line  37:  \"SD1_DATA1\"       unused   input  active-high \n        line  38:  \"SD1_DATA2\"       unused   input  active-high \n        line  39:  \"SD1_DATA3\"       unused   input  active-high \n        line  40:   \"PWM0_OUT\"       unused   input  active-high \n        line  41:   \"PWM1_OUT\"       unused   input  active-high \n        line  42:    \"ETH_CLK\"       unused   input  active-high \n        line  43:   \"WIFI_CLK\"       unused   input  active-high \n        line  44:       \"SDA0\"       unused   input  active-high \n        line  45:       \"SCL0\"       unused   input  active-high \n        line  46:   \"SMPS_SCL\"       unused   input  active-high \n        line  47:   \"SMPS_SDA\"       unused  output  active-high \n        line  48:   \"SD_CLK_R\"       unused   input  active-high \n        line  49:   \"SD_CMD_R\"       unused   input  active-high \n        line  50: \"SD_DATA0_R\"       unused   input  active-high \n        line  51: \"SD_DATA1_R\"       unused   input  active-high \n        line  52: \"SD_DATA2_R\"       unused   input  active-high \n        line  53: \"SD_DATA3_R\"       unused   input  active-high \ngpiochip1 - 8 lines:\n        line   0:      \"BT_ON\"   \"shutdown\"  output  active-high &#91;used]\n        line   1:      \"WL_ON\"       unused  output  active-high \n        line   2:  \"PWR_LED_R\"        \"PWR\"  output   active-low &#91;used]\n        line   3:    \"LAN_RUN\"       unused  output  active-high \n        line   4:         \"NC\"       unused   input  active-high \n        line   5:  \"CAM_GPIO0\" \"cam1_regulator\" output active-high &#91;used]\n        line   6:  \"CAM_GPIO1\"       unused  output  active-high \n        line   7:         \"NC\"       unused   input  active-high \n<\/code><\/pre>\n<\/details>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"gpioget\">gpioget<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">place en entr\u00e9e et lit l&rsquo;\u00e9tat des lignes demand\u00e9es<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\nbruno@rpi364:~\/Works\/gpiomonitor $ gpioget gpiochip0 17 27\n0 0<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"gpioset\">gpioset<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">place en sortie les lignes demand\u00e9es<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bruno@rpi364:~\/Works\/gpiomonitor $ gpioset gpiochip0 17=1 27=0<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"gpiofind\">gpiofind<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>bruno@rpi364:~\/Works\/gpiomonitor $ gpiofind \"GPIO17\"<br>gpiochip0 17<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"utilisation-du-langage-c\">Utilisation du langage C<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"installation-de-la-lib-et-de-la-doc\">installation de la lib et de la doc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"> normalement d\u00e9ja fait<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo apt install libgpiod-dev libgpiod-doc<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"structure-de-base-d-un-programme-c\"><strong>Structure de Base d&rsquo;un Programme<\/strong> c<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;gpiod.h>\n#include &lt;stdio.h>\n#include &lt;unistd.h>\n\nint main() {\n    const char *chipname = \"gpiochip0\";  \/\/ Nom du contr\u00f4leur GPIO\n    struct gpiod_chip *chip;\n    struct gpiod_line *line;\n    int ret;\n\n    \/\/ Ouvrir le chip GPIO\n    chip = gpiod_chip_open_by_name(chipname);\n    if (!chip) {\n        perror(\"Erreur d'ouverture du chip\");\n        return 1;\n    }\n\n    \/\/ Ici: Configuration des GPIO...\n\n    \/\/ Fermeture\n    gpiod_chip_close(chip);\n    return 0;\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"controle-des-gpio\"><strong>Contr\u00f4le des GPIO<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"configurer-une-sortie-led\"><strong>Configurer une sortie (LED)<\/strong><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Obtenir la ligne GPIO17\nline = gpiod_chip_get_line(chip, 17);\nif (!line) {\n    perror(\"Erreur ligne GPIO\");\n    gpiod_chip_close(chip);\n    return 1;\n}\n\n\/\/ Configurer en sortie avec \u00e9tat initial LOW\nret = gpiod_line_request_output(line, \"LED\", 0);\nif (ret &lt; 0) {\n    perror(\"Erreur config sortie\");\n    gpiod_line_release(line);\n    gpiod_chip_close(chip);\n    return 1;\n}\n\n\/\/ Allumer la LED\ngpiod_line_set_value(line, 1);\nsleep(1);\n\/\/ \u00c9teindre la LED\ngpiod_line_set_value(line, 0);\n\n\/\/ Lib\u00e9rer la ligne\ngpiod_line_release(line);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lire-une-entree-bouton-ils\"><strong>Lire une entr\u00e9e (Bouton\/ILS)<\/strong><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">line = gpiod_chip_get_line(chip, 27);\nif (!line) {\n    perror(\"Erreur ligne GPIO\");\n    gpiod_chip_close(chip);\n    return 1;\n}\n\n\/\/ Configurer en entr\u00e9e avec pull-up\nstruct gpiod_line_request_config config = {\n    .consumer = \"Bouton\",\n    .request_type = GPIOD_LINE_REQUEST_DIRECTION_INPUT,\n    .flags = GPIOD_LINE_REQUEST_FLAG_BIAS_PULL_UP\n};\n\nret = gpiod_line_request(line, &amp;config, 0);\nif (ret &lt; 0) {\n    perror(\"Erreur config entr\u00e9e\");\n    gpiod_line_release(line);\n    gpiod_chip_close(chip);\n    return 1;\n}\n\n\/\/ Lire l'\u00e9tat\nint val = gpiod_line_get_value(line);\nprintf(\"\u00c9tat: %d\\n\", val);  \/\/ 0=press\u00e9, 1=rel\u00e2ch\u00e9 (pull-up)\n\ngpiod_line_release(line);<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"exemple-en-c\">Exemple en C<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;gpiod.h&gt;\n#include &lt;stdio.h&gt;\n#include &lt;unistd.h&gt;\n\nint main() {\n    const char *chipname = \"gpiochip0\";\n    struct gpiod_chip *chip;\n    struct gpiod_line *line;\n    int ret;\n\n    \/\/ Ouvrir le chip GPIO\n    chip = gpiod_chip_open_by_name(chipname);\n    if (!chip) {\n        perror(\"Erreur d'ouverture du chip\");\n        return 1;\n    }\n\n    \/\/ Obtenir une ligne GPIO (ex: ligne 17)\n    line = gpiod_chip_get_line(chip, 17);\n    if (!line) {\n        perror(\"Erreur d'acc\u00e8s \u00e0 la ligne\");\n        gpiod_chip_close(chip);\n        return 1;\n    }\n\n    \/\/ Configurer la ligne en sortie\n    ret = gpiod_line_request_output(line, \"example\", 0);\n    if (ret &lt; 0) {\n        perror(\"Erreur de configuration\");\n        gpiod_chip_close(chip);\n        return 1;\n    }\n\n    \/\/ Faire clignoter la LED\n    for (int i = 0; i &lt; 5; i++) {\n        gpiod_line_set_value(line, 1);\n        sleep(1);\n        gpiod_line_set_value(line, 0);\n        sleep(1);\n    }\n\n    \/\/ Lib\u00e9rer les ressources\n    gpiod_chip_close(chip);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"compiler-le-code-c\">Compiler le code c<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>gcc ton_programme.c -o ton_programme -lgpiod<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Pr\u00e9sentation: libgpiod&nbsp;est une biblioth\u00e8que et un ensemble d&rsquo;outils en mode utilisateur (userspace) pour interagir avec les GPIO (General Purpose Input\/Output) sur les syst\u00e8mes Linux, en particulier ceux utilisant l&rsquo;interface&nbsp;GPIO character [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-2951","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>libgpiod - workboot<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"libgpiod - workboot\" \/>\n<meta property=\"og:description\" content=\"Pr\u00e9sentation: libgpiod&nbsp;est une biblioth\u00e8que et un ensemble d&rsquo;outils en mode utilisateur (userspace) pour interagir avec les GPIO (General Purpose Input\/Output) sur les syst\u00e8mes Linux, en particulier ceux utilisant l&rsquo;interface&nbsp;GPIO character [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/workboot.fr\/ciela\/libgpiod\/\" \/>\n<meta property=\"og:site_name\" content=\"workboot\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-29T08:41:06+00:00\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/libgpiod\\\/\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/libgpiod\\\/\",\"name\":\"libgpiod - workboot\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#website\"},\"datePublished\":\"2025-07-26T15:44:45+00:00\",\"dateModified\":\"2025-07-29T08:41:06+00:00\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/workboot.fr\\\/ciela\\\/libgpiod\\\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#website\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/\",\"name\":\"workboot\",\"description\":\"Open Source, Open Minds \",\"publisher\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#organization\",\"name\":\"workboot\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/logo_ciel-dorian-1.png\",\"contentUrl\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/logo_ciel-dorian-1.png\",\"width\":1024,\"height\":950,\"caption\":\"workboot\"},\"image\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"libgpiod - workboot","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/workboot.fr\/ciela\/libgpiod\/","og_locale":"fr_FR","og_type":"article","og_title":"libgpiod - workboot","og_description":"Pr\u00e9sentation: libgpiod&nbsp;est une biblioth\u00e8que et un ensemble d&rsquo;outils en mode utilisateur (userspace) pour interagir avec les GPIO (General Purpose Input\/Output) sur les syst\u00e8mes Linux, en particulier ceux utilisant l&rsquo;interface&nbsp;GPIO character [&hellip;]","og_url":"https:\/\/workboot.fr\/ciela\/libgpiod\/","og_site_name":"workboot","article_modified_time":"2025-07-29T08:41:06+00:00","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/workboot.fr\/ciela\/libgpiod\/","url":"https:\/\/workboot.fr\/ciela\/libgpiod\/","name":"libgpiod - workboot","isPartOf":{"@id":"https:\/\/workboot.fr\/ciela\/#website"},"datePublished":"2025-07-26T15:44:45+00:00","dateModified":"2025-07-29T08:41:06+00:00","inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/workboot.fr\/ciela\/libgpiod\/"]}]},{"@type":"WebSite","@id":"https:\/\/workboot.fr\/ciela\/#website","url":"https:\/\/workboot.fr\/ciela\/","name":"workboot","description":"Open Source, Open Minds ","publisher":{"@id":"https:\/\/workboot.fr\/ciela\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/workboot.fr\/ciela\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/workboot.fr\/ciela\/#organization","name":"workboot","url":"https:\/\/workboot.fr\/ciela\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/workboot.fr\/ciela\/#\/schema\/logo\/image\/","url":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/05\/logo_ciel-dorian-1.png","contentUrl":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/05\/logo_ciel-dorian-1.png","width":1024,"height":950,"caption":"workboot"},"image":{"@id":"https:\/\/workboot.fr\/ciela\/#\/schema\/logo\/image\/"}}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/workboot.fr\/ciela\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"Pr\u00e9sentation: libgpiod&nbsp;est une biblioth\u00e8que et un ensemble d&rsquo;outils en mode utilisateur (userspace) pour interagir avec les GPIO (General Purpose Input\/Output) sur les syst\u00e8mes Linux, en particulier ceux utilisant l&rsquo;interface&nbsp;GPIO character [&hellip;]","_links":{"self":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/2951","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/comments?post=2951"}],"version-history":[{"count":12,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/2951\/revisions"}],"predecessor-version":[{"id":3234,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/2951\/revisions\/3234"}],"wp:attachment":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/media?parent=2951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}