Releases: Pi4J/pi4j-v1
Release v1.4
RELEASE NOTES
Version 1.4 (2021-03-01 )
2021-03-01 :: 1.4
- Changed project to Apache License, Version 2.0
- Added support for 64-bit architecture.
- Bug Fixes: https://github.com/Pi4J/pi4j/milestone/9?closed=1
- Removed
pi4j-device
library. - Removed
pi4j-gpio-extension
library. - Removed platform support for
Odroid
. - Removed platform support for
BananaPi
. - Removed platform support for
BPi
. - Removed platform support for
NanoPi
. - Removed platform support for
OrangePi
.
KNOWN ISSUES
-
The original WiringPi library has been DEPRECATED.
(See: http://wiringpi.com/wiringpi-deprecated/)NOTE: To support RaspberryPi 4B and newer systems you must install the latest unofficial WiringPi version which is
maintained here: https://github.com/WiringPi/WiringPi. (As of 2021-01-12, this is version 2.60.)Example installation commands on a RaspberryPi:
sudo apt-get remove wiringpi -y sudo apt-get --yes install git-core gcc make cd ~ git clone https://github.com/WiringPi/WiringPi --branch master --single-branch wiringpi cd ~/wiringpi sudo ./build
-
Please note that the Pi4J v1.x codebase is no longer being actively developed. Pi4J v1.x will only be maintained
and updated for major bug fixes. This codebase has been largely stable for several years and is compatible across
a wide variety of Raspberry Pi SoCs and you are welcome to continue using it. However, for new projects, it
is highly recommended to migrate to the Pi4J Version 2.x codebase. See https://v2.pi4j.com for more information. -
This project requires Java 11 (JDK) to build; however, it fails to compile using the following Oracle JDKs. The
project will successfully compile using OpenJDK, Liberica, Zulu and AdoptOpenJDK distributions.- Oracle JDK 11.0.06
- Oracle JDK 11.0.07
- Oracle JDK 11.0.09
- Oracle JDK 11.0.10
- Oracle JDK 11.0.10 (and possibly newer)
Example installation command on a RaspberryPi:sudo apt-get install openjdk-11-jdk
Release v1.3
RELEASE NOTES
Version 1.3 (2021-01-28 )
2021-01-28 :: 1.3
- Must be compiled using JDK 1.8
- Install WiringPi v2.60 or later to support RaspberryPi 4B and newer systems.
(https://pi4j.com/1.3/dependency.html) - Added support for RaspberryPi 4B
- Added support for RaspberryPi 400
- Added support for RaspberryPi Compute Module 4
- Bug Fixes: https://github.com/Pi4J/pi4j/milestone/10?closed=1
KNOWN ISSUES
- Pi4J v1.3 must be compiled using JDK 1.8. This codebase is not compatible with JDK9 and newer. Pi4J v1.4
and later will support newer JDKs. - The original WiringPi library has been DEPRECATED. (See: http://wiringpi.com/wiringpi-deprecated/)
- To support RaspberryPi 4B and newer systems you must install the latest unofficial WiringPi version which is
maintained here: https://github.com/WiringPi/WiringPi. (As of 2021-01-12, this is version 2.60.) - Please note that the Pi4J v1.x codebase is no longer being actively developed. Pi4J v1.x will only be maintained
and updated for major bug fixes. This codebase has been largely stable for several years and is compatible across
a wide variety of Raspberry Pi SoCs and you are welcome to continue using it. However, for new projects, it
is highly recommended to migrate to the Pi4J Version 2.x codebase. See https://v2.pi4j.com for more information.
Release v1.2
RELEASE NOTES
Version 1.2 (2019-02-27 )
- Removed support for statically compiled wiringPi library (for Raspberry Pi).
- Added support for Raspberry Pi 3B+
- Added support for Raspberry Pi Zero W
- Added support for Raspberry Pi Compute Module 3
- Updated to Java 8 (enhancement #203)
- Updated build dependencies/plugins to latest versions.
- Removed unsupported sub-projects (pi4j-temp, pi4j-service).
- Added SPI mode support for Odroid, BananaPi, BananaPro, and OrangePi platforms.
- Added experimental support for OrangePi platform.
- Added experimental support for Synovoip BPI (BananaPi) platform.
- Added experimental support for NanoPi platform.
- Fixed #438: ArrayIndex Out of Bounds when pin address address is >= 100
- Fixed #278: wiringPiSetup*: You must only call this once per program run.
- Fixed #294; added java runtime and compiler check to pi4j helper script
- Fixed #291; W1Device name contains "\n"
- Fixed #275; LCDExample.java doesn't work in release
- Fixed #276; RaspiBcmPin pins not firing pin state change events
- Fixed #198; Problems with data from HMC5883L class
- Fixed #351; Pi4J packages excluded in OSGI manifest ImportPackage declaration
- Fixed #360; Serial.setBreak(TRUE|FALSE) is printing debug lines to stdout
- Fixed #355; ButtonBase Executor Service should be closed on GpioController.shutdown()
- Fixed #356; SystemInfoProvider CPU temperature was divided by 1000 on OrangePi
- Fixed #272; SerialDataEvent should not fire when event.length() == 0
- Fixed #361; SerialFactory isShutdown() state not getting updated on new instance
KNOWN ISSUES
As of 2018-04-23, We have removed support for the Pi4J native library statically compiled against WiringPi. for the Raspberry Pi platform. You must now have WiringPi installed on your target Raspberry Pi system separately from Pi4J. WiringPi is now included be default in the latest Raspbian builds. We made this change in part because the WiringPi project now requests no static linking and because it would cause Pi4J to fail on newer platforms when we were not able to get a new build released in a reasonable and timely manner. This change should be of a minimal negative impact now that WiringPi is included with the OS and users will benefit from being able to take advantage of newer WiringPi builds without depending on a new Pi4J build.
On the Raspberry Pi Model 3B the hardware-based serial/UART device /dev/ttyAMA0 has been re-purposed to communicate with the the built-in Bluetooth modem and is no longer mapped to the serial RX/TX pins on the GPIO header. Instead, a new serial port "/dev/ttyS0" has been provided which is implemented with a software-based UART (miniUART). This software-based UART ("/dev/ttyS0") does not support PARITY and some have experienced some stability issues using this port at higher speeds. If you don't need the Bluetooth modem functionality, you can disable the BT modem and configure the RPi to use a device-tree overlay to re-map the hardware-based serial UART ("/dev/ttyAMA0") back to the GPIO header pins for TX/RX. See the instructions on this page for details on how to configure the device-tree overlay and disable the bluetooth modem/service: https://openenergymonitor.org/emon/node/12311
The Odroid C1/C1+/C2 only permits up to four GPIO pins to be configured with edge detection for both "rising" and "falling" edges (a.k.a., "both"). Thus, you can only use a maximum of four GPIO input pins with listener events. You can, however, implement a polling strategy to read a pin state if you need more than 4 input pins. (see: #229 & http://odroid.com/dokuwiki/doku.php?id=en:c1_hardware_irq)
PWM is not supported in the Hardkernel Odroid WiringPi port. Thus PWM is not currently supported by Pi4J for the Odroid boards (C1/C1+/C2). There is no PWM function on the 30pin GPIO header on the XU3/XU4.
(see: #229)
Support for OrangePi and Synovoip BPI platforms is considered experimental and has had limited testing. Not all Pi4J features may be supported and/or working properly.