Hi,
I'm using Pi4J v3.0.2 on a Tinker Board 3S (Debian 11, 64-bit, kernel 5.10.209) with Java 21. My app configures GPIO using GpioDDigitalInputProvider and GpioDDigitalOutputProvider, targeting /dev/gpiochip0.
However, I get this error:
Exception in thread "main" java.lang.IllegalStateException: No gpio chip yet initialized!
Despite this, sudo gpiodetect lists all gpiochips correctly (gpiochip0–gpiochip5) and gpioinfo confirms 32 available lines on gpiochip0.
Logs show:
[main] WARN com.pi4j.library.gpiod.internal.GpioDContext - Can't initialize GpioD context, board model is unknown
Any suggestions to initialize GpioD?
package org.example;
import com.pi4j.Pi4J;
import com.pi4j.boardinfo.util.BoardInfoHelper;
import com.pi4j.context.Context;
import com.pi4j.io.gpio.digital.DigitalInput;
import com.pi4j.io.gpio.digital.DigitalOutput;
import com.pi4j.plugin.gpiod.GpioDPlugin;
import com.pi4j.plugin.gpiod.provider.gpio.digital.GpioDDigitalInputProvider;
import com.pi4j.plugin.gpiod.provider.gpio.digital.GpioDDigitalOutputProvider;
import com.pi4j.boardinfo.util.BoardInfoHelper;
public class GpioTest{
private static final int PIN_BUTTON = 23;
private static final int PIN_LED = 24;
private static int pressCount = 0;
public static void main(String[] args) throws InterruptedException {
System.setProperty("pi4j.gpio.provider.gpiod.chip", "/dev/gpiochip0");
System.out.println("Forcing chip: "+System.getProperty("pi4j.gpio.provider.gpiod.chip"));
Context pi4j = Pi4J.newContextBuilder()
.noAutoDetect()
.add(GpioDDigitalInputProvider.newInstance())
.add(GpioDDigitalOutputProvider.newInstance())
.build();
var ledConfig = DigitalOutput.newConfigBuilder(pi4j)
.id("led")
.name("LED output")
.address(PIN_LED)
.provider("gpiod-digital-output")
.build();
var led = pi4j.create(ledConfig);
var buttonConfig = DigitalInput.newConfigBuilder(pi4j)
.id("button")
.name("Button")
.address(PIN_BUTTON)
.provider("gpiod-digital-input")
.build();
var button = pi4j.create(buttonConfig);
button.addListener(e->{
System.out.println("Button pressed "+pressCount+" times.");
});
while(pressCount < 5){
led.toggle();
System.out.println("LED is "+(led.isOn() ? "ON" : "OFF"));
Thread.sleep(500/(pressCount+1));
}
pi4j.shutdown();
}
}
4.0.0
<groupId>org.example</groupId>
<artifactId>May</artifactId>
<name>Pi4J :: MINIMAL EXAMPLE :: Sample minimal project</name>
<description>Pi4J Sample Code</description>
<version>0.0.1</version>
<!-- BUILD PROPERTIES -->
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<exec-maven-plugin.version>3.4.1</exec-maven-plugin.version>
<maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version>
<slf4j.version>2.0.16</slf4j.version>
<pi4j.version>3.0.2</pi4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- include Pi4J Core -->
<dependency>
<groupId>com.pi4j</groupId>
<artifactId>pi4j-core</artifactId>
<version>${pi4j.version}</version>
</dependency>
<!-- include Pi4J Plugins (Platforms and I/O Providers) -->
<dependency>
<groupId>com.pi4j</groupId>
<artifactId>pi4j-plugin-raspberrypi</artifactId>
<version>${pi4j.version}</version>
</dependency>
<dependency>
<groupId>com.pi4j</groupId>
<artifactId>pi4j-plugin-gpiod</artifactId>
<version>${pi4j.version}</version>
</dependency>
</dependencies>
Thanks!
Hi,
I'm using Pi4J v3.0.2 on a Tinker Board 3S (Debian 11, 64-bit, kernel 5.10.209) with Java 21. My app configures GPIO using GpioDDigitalInputProvider and GpioDDigitalOutputProvider, targeting /dev/gpiochip0.
However, I get this error:
Exception in thread "main" java.lang.IllegalStateException: No gpio chip yet initialized!
Despite this, sudo gpiodetect lists all gpiochips correctly (gpiochip0–gpiochip5) and gpioinfo confirms 32 available lines on gpiochip0.
Logs show:
[main] WARN com.pi4j.library.gpiod.internal.GpioDContext - Can't initialize GpioD context, board model is unknown
Any suggestions to initialize GpioD?
package org.example;
import com.pi4j.Pi4J;
import com.pi4j.boardinfo.util.BoardInfoHelper;
import com.pi4j.context.Context;
import com.pi4j.io.gpio.digital.DigitalInput;
import com.pi4j.io.gpio.digital.DigitalOutput;
import com.pi4j.plugin.gpiod.GpioDPlugin;
import com.pi4j.plugin.gpiod.provider.gpio.digital.GpioDDigitalInputProvider;
import com.pi4j.plugin.gpiod.provider.gpio.digital.GpioDDigitalOutputProvider;
import com.pi4j.boardinfo.util.BoardInfoHelper;
public class GpioTest{
private static final int PIN_BUTTON = 23;
private static final int PIN_LED = 24;
private static int pressCount = 0;
}
4.0.0