Skip to content

Bump this project to Java 25 and Pi4J 4 so it can be used on Raspberry Pi 5 - #497

Open
FDelporte wants to merge 6 commits into
oss-slu:developfrom
FDelporte:pi4j-ffm
Open

Bump this project to Java 25 and Pi4J 4 so it can be used on Raspberry Pi 5#497
FDelporte wants to merge 6 commits into
oss-slu:developfrom
FDelporte:pi4j-ffm

Conversation

@FDelporte

Copy link
Copy Markdown

The current README of this project mentions it can't be used on a Raspberry Pi because of Pi4J V2 limitations. But that problem has been solved already some time ago in V3. But... V4 based on Java 25 and the FFM API is even better and makes this usable on other brands of single-board computers. See https://www.pi4j.com/sbc/

This pull request bumps this project to Java 25 and Pi4J V4 but still needs to be validated on real hardware. Can this be done by one of the Pi4Micronaut maintainers, please?

Copilot AI review requested due to automatic review settings July 30, 2026 12:41

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates Pi4Micronaut to target modern Raspberry Pi 5 GPIO support by upgrading to Pi4J 4.x (FFM provider) and Java 25, replacing the prior pigpio-based approach and aligning documentation/examples accordingly.

Changes:

  • Upgrade build/tooling to Java 25, Gradle 9.6.1, Micronaut 5.0.2, and Shadow plugin 9.6.1.
  • Switch Pi4J setup to auto-detected FFM providers and update GPIO/PWM/SPI configuration usage (bcm, channel) plus related docs/examples.
  • Adjust PWM usage/tests to match updated Pi4J API expectations (integer duty-cycle/speed).

Reviewed changes

Copilot reviewed 44 out of 45 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
README.md Updates project note to state Pi 5 support via Pi4J 4.x + FFM.
pi4micronaut-utils/src/test/java/com/opensourcewithslu/outputdevices/ServoMotorHelperTest.java Updates servo PWM assertions to use rounded integer duty cycle.
pi4micronaut-utils/src/test/java/com/opensourcewithslu/outputdevices/MotorHelperTest.java Updates motor PWM assertions to integer speed.
pi4micronaut-utils/src/test/java/com/opensourcewithslu/mock/MockDigitalInput.java Adapts mock to updated Pi4J DigitalInput interface surface.
pi4micronaut-utils/src/test/java/com/opensourcewithslu/inputdevices/RFidHelperTest.java Updates SPI config mocking for Pi4J 4.x style accessors (partially).
pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JMultiPinFactory.java Migrates multi-pin builders from address(...) to bcm(...) / channel(...).
pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JFactory.java Switches to Pi4J.newAutoContext() and updates builder fields to bcm/channel.
pi4micronaut-utils/src/main/java/com/opensourcewithslu/outputdevices/ServoMotorHelper.java Switches servo PWM output to rounded integer duty cycle.
pi4micronaut-utils/src/main/java/com/opensourcewithslu/outputdevices/MotorHelper.java Switches motor PWM output to rounded integer speed.
pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/RFidHelper.java Migrates SPI channel accessor; baud accessor remains old-style.
pi4micronaut-utils/src/docs/asciidoc/Introduction/howToUsePi4Micronaut.adoc Updates sample provider IDs to FFM equivalents.
pi4micronaut-utils/src/docs/asciidoc/Introduction/buildAndRun.adoc Removes pigpio installation step; documents gpiochip access requirement.
pi4micronaut-utils/src/docs/asciidoc/introduction.adoc Updates introduction text to reflect Pi4J 4.x FFM + gpiochip approach.
pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/servomotor.adoc Updates PWM provider to ffm-pwm.
pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/rgbLed.adoc Updates multi-PWM provider to ffm-pwm.
pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/passivebuzzer.adoc Updates PWM provider to ffm-pwm.
pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/motor.adoc Updates PWM and digital-output providers to FFM variants.
pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/led.adoc Updates digital-output provider to ffm-digital-output.
pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/fourDigitSevenSegment.adoc Updates digital-output provider to ffm-digital-output.
pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/fan.adoc Updates PWM provider to ffm-pwm.
pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/activebuzzer.adoc Updates PWM provider to ffm-pwm.
pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/ultraSonicSensor.adoc Updates digital input/output providers to FFM variants.
pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/touchSwitch.adoc Updates digital input/output providers to FFM variants.
pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/tiltSwitch.adoc Updates digital input/output providers to FFM variants.
pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/speedSensor.adoc Updates digital-input provider to ffm-digital-input.
pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/slideSwitch.adoc Updates digital-input provider to ffm-digital-input.
pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/rotaryEncoder.adoc Updates multi digital-input provider to ffm-digital-input.
pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/reedSwitch.adoc Updates digital input/output providers to FFM variants.
pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/pushButton.adoc Updates digital input/output providers to FFM variants.
pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/pirSensor.adoc Updates digital-input provider to ffm-digital-input.
pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/photoresistorSensor.adoc Updates digital input/output providers to FFM variants.
pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/microSwitch.adoc Updates digital input/output providers to FFM variants.
pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/IRObstacleAvoidance.adoc Updates digital-input provider to ffm-digital-input.
pi4micronaut-utils/src/docs/asciidoc/components/commun_WithHardware/pwm.adoc Updates PWM provider references to ffm-*.
pi4micronaut-utils/src/docs/asciidoc/components/commun_WithHardware/digitalOutput.adoc Updates digital-output provider references to ffm-digital-output.
pi4micronaut-utils/src/docs/asciidoc/components/commun_WithHardware/digitalInput.adoc Updates digital-input provider references to ffm-digital-input.
pi4micronaut-utils/src/docs/asciidoc/components/commun_WithHardware.adoc Updates high-level description from pigpio to FFM + gpiochip.
pi4micronaut-utils/build.gradle Bumps Micronaut/Pi4J versions and sets Java compatibility to 25.
gradle/wrapper/gradle-wrapper.properties Updates Gradle wrapper to 9.6.1.
components/src/main/resources/application.yml Updates provider IDs throughout sample configuration to FFM variants.
components/build.gradle Bumps plugin versions, sets Java 25, and adjusts test task behavior.
build.gradle Bumps shared plugin versions (Micronaut + Shadow).
.github/workflows/javadoc-gh-pages.yml Updates CI JDK to 25 for Javadoc publishing.
.github/workflows/github-actions.yml Updates CI JDK to 25.
.github/workflows/build-reusable.yml Updates CI JDK to 25 across reusable workflow jobs.
Comments suppressed due to low confidence (1)

pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/RFidHelper.java:42

  • Same issue as the other constructor: SpiConfig should use baud() instead of getBaud() when targeting Pi4J 4.x (you already migrated getAddress() to channel()).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread components/build.gradle
Comment thread components/src/main/resources/application.yml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants