gpio fails as of kernel 6.6 on rpi

Please use template to report bugs and problems. Post here your questions when not sure where else to post
Only for bugs in the Domoticz application! other problems go in different subforums!

Moderators: leecollings, remb0

Forum rules
Before posting here, make sure you are on the latest Beta or Stable version.
If you have problems related to the web gui, clear your browser cache + appcache first.

Use the following template when posting here:

Version: xxxx
Platform: xxxx
Plugin/Hardware: xxxx
Description:
.....

If you are having problems with scripts/blockly, always post the script (in a spoiler or code tag) or screenshots of your blockly

If you are replying, please do not quote images/code from the first post

Please mark your topic as Solved when the problem is solved.
Post Reply
akamming
Posts: 337
Joined: Friday 17 August 2018 14:03
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

gpio fails as of kernel 6.6 on rpi

Post by akamming »

Just did an sudo apt update && sudo apt upgrade -y on my pi, which did quite an update on the pi os.

One of the changes was upgrade to kernel 6.6, and now i found out gpio does not work anymore.

On my watermeter plugin i now get the following error:

2024-03-17 20:40:37.307 Error: Watermeter: RuntimeError: Failed to add edge detection

This error is on this line:
GPIO.add_event_detect(gpio_pin, GPIO.BOTH, callback = Interrupt, bouncetime = bouncetime)

(GPIO refers to rpi.GPIO)

anyone have an idea how to fix?

EDIT: Did some research myself. Turns out a lot is changed for GPIO as of kernel 6.6 (which is now the new standard kernel for raspberry pi os), so logged an issue: https://github.com/domoticz/domoticz/issues/6040
akamming
Posts: 337
Joined: Friday 17 August 2018 14:03
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: gpio fails as of kernel 6.6 on rpi

Post by akamming »

hmmm... this is the so maniest issue where i did not get support on the forum. No pun intended for everyone who works very hard to keep this community alive. But it is a bit worrying that support is dropping for domoticz..

anyway... until the issue is solved in the code i created a workaround to be able to still control the switches. posting it here, in case someone has the same issue.

so basically what is happening that the number of the gpio is changed as of kernel 6.6 and domoticz cannot handle this. (should be fixed in the code).

the new numbers can be found if you do a "cat /sys/kernel/debug/gpio". You will get output like this:

Code: Select all

 gpio-512 (ID_SDA              )
 gpio-513 (ID_SCL              )
 gpio-514 (GPIO2               )
 gpio-515 (GPIO3               )
 gpio-516 (GPIO4               )
 gpio-517 (GPIO5               )
 gpio-518 (GPIO6               )
 gpio-519 (GPIO7               )
 gpio-520 (GPIO8               )
 gpio-521 (GPIO9               )
 gpio-522 (GPIO10              )
 gpio-523 (GPIO11              )
 gpio-524 (GPIO12              )
 gpio-525 (GPIO13              )
 gpio-526 (GPIO14              |sysfs               ) out hi ACTIVE LOW
 gpio-527 (GPIO15              |sysfs               ) in  hi
 gpio-528 (GPIO16              )
 gpio-529 (GPIO17              )
 gpio-530 (GPIO18              |lg                  ) in  hi IRQ
 gpio-531 (GPIO19              )
 gpio-532 (GPIO20              )
 gpio-533 (GPIO21              )
 gpio-534 (GPIO22              )
 gpio-535 (GPIO23              )
 gpio-536 (GPIO24              )
 gpio-537 (GPIO25              )
 gpio-538 (GPIO26              )
 
in list you can find the new number for the pin (in my case 526 for gpio-14 which controls my "buitenlamp")

you can then still activate the gpio using the sysfs interface, in my case for gpio14:

Code: Select all

echo 526 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio526/direction
echo 1 > /sys/class/gpio/gpio526/active_low
after this you can create a dummy switch and a helper script to control the gpio:

Code: Select all

-- helper script for gpio

return {
	on = {
		devices = {
			'Buitenlamp Carport'  -- the name of the dummy switch
		}
	},
	logging = {
		level = domoticz.LOG_DEBUG,
		marker = 'GPIO helper',
	},
	execute = function(domoticz, device)
		domoticz.log('Device ' .. device.name .. ' was changed to ' .. device.state, domoticz.LOG_DEBUG)
		if (device.active) then
		    domoticz.log("Switching on",domoticz.LOG_DEBUG)
		    domoticz.executeShellCommand("echo 1 > /sys/class/gpio/gpio526/value")   -- set to correct gpio
		else 
		    domoticz.log("Switching off",domoticz.LOG_DEBUG)
		    domoticz.executeShellCommand("echo 0 > /sys/class/gpio/gpio526/value")  -- set to correct gpio
		end
	end
}
willemd
Posts: 621
Joined: Saturday 21 September 2019 17:55
Target OS: Raspberry Pi / ODroid
Domoticz version: 2024.1
Location: The Netherlands
Contact:

Re: gpio fails as of kernel 6.6 on rpi

Post by willemd »

akamming wrote: Friday 22 March 2024 13:57 hmmm... this is the so maniest issue where i did not get support on the forum. No pun intended for everyone who works very hard to keep this community alive. But it is a bit worrying that support is dropping for domoticz..
Keep in mind that not many users will have had this issue, so supporting experience from others was probably not existing. Maybe only the one's that installed domoticz on a RPi 5. I remember a thread about it. As a frontrunner, indeed your own research, or a post on a Raspberry Pi forum, is the way forward then.
User avatar
waltervl
Posts: 5148
Joined: Monday 28 January 2019 18:48
Target OS: Linux
Domoticz version: 2024.7
Location: NL
Contact:

Re: gpio fails as of kernel 6.6 on rpi

Post by waltervl »

And also in the github issue I mentioned an existing github issue that tried to solve your issue...
What more can we do?
Domoticz running on Udoo X86 (on Ubuntu)
Devices/plugins: ZigbeeforDomoticz (with Xiaomi, Ikea, Tuya devices), Nefit Easy, Midea Airco, Omnik Solar, Goodwe Solar
akamming
Posts: 337
Joined: Friday 17 August 2018 14:03
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: gpio fails as of kernel 6.6 on rpi

Post by akamming »

I regret a bit I made this remark caissière apparently it demotivates the people who still support this community

It’s just a bit that i see a trend. In the past any issue I posted on this forum I got much more feedback. So i am a bit worried that the Community for this very nice product is becoming smaller and smaller

Anyway really appreciate the work a lot of people like you are doing Here. So I won’t make similar remarks again
mmolema
Posts: 4
Joined: Monday 02 December 2024 15:03
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: gpio fails as of kernel 6.6 on rpi

Post by mmolema »

How do you make this dummy button?
I created a dummy in hardware and when I try to manually create a switch and select this dummy as hardware and Sysfs GPIO as type gpio516-input appears in the Sysfs GPIO field, but when I try to add the device I get the message: "undefined"
Image
User avatar
waltervl
Posts: 5148
Joined: Monday 28 January 2019 18:48
Target OS: Linux
Domoticz version: 2024.7
Location: NL
Contact:

Re: gpio fails as of kernel 6.6 on rpi

Post by waltervl »

You should not make a dummy device.
See the instructions on the wiki: https://wiki.domoticz.com/GPIO
Domoticz running on Udoo X86 (on Ubuntu)
Devices/plugins: ZigbeeforDomoticz (with Xiaomi, Ikea, Tuya devices), Nefit Easy, Midea Airco, Omnik Solar, Goodwe Solar
mmolema
Posts: 4
Joined: Monday 02 December 2024 15:03
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: gpio fails as of kernel 6.6 on rpi

Post by mmolema »

The method as described in the wiki doesn't work anymore that is what this topic is all about.
as akamming writes above you should make a dummy switch and create some scripting
User avatar
waltervl
Posts: 5148
Joined: Monday 28 January 2019 18:48
Target OS: Linux
Domoticz version: 2024.7
Location: NL
Contact:

Re: gpio fails as of kernel 6.6 on rpi

Post by waltervl »

The issue as logged in https://github.com/domoticz/domoticz/issues/6040 is solved in latest stable 2024.7

So it should work again as akamming tested it in a beta release. No need to do a workaround. But best is that @akamming will reply here indeed.
Domoticz running on Udoo X86 (on Ubuntu)
Devices/plugins: ZigbeeforDomoticz (with Xiaomi, Ikea, Tuya devices), Nefit Easy, Midea Airco, Omnik Solar, Goodwe Solar
akamming
Posts: 337
Joined: Friday 17 August 2018 14:03
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: gpio fails as of kernel 6.6 on rpi

Post by akamming »

waltervl wrote: Monday 02 December 2024 16:26 The issue as logged in https://github.com/domoticz/domoticz/issues/6040 is solved in latest stable 2024.7

So it should work again as akamming tested it in a beta release. No need to do a workaround. But best is that @akamming will reply here indeed.
it's indeed fixed in the domoticz code.. so the above mentioned workaround is no longer neccessary...
mmolema
Posts: 4
Joined: Monday 02 December 2024 15:03
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: gpio fails as of kernel 6.6 on rpi

Post by mmolema »

Ok, then it might just be me.
I tired to run the sysfs commands in the terminal and that only worked if I added 512 to the required number. and if I did so finally something appeared in domoticz (see screenshot above)
But now I installed an older version of pi os with kernel 6.1 to be sure. and now things like sudo sh -c 'echo 4 > /sys/class/gpio/export' don't give errors in the terminal.
I modified /etc/rc.local to look like:
Image
after reboot I still don't have a gpio pin available in domoticz "No sysfs-gpio exports"

a little background:
I was running a pi1B for 10 years, 2 weeks ago I tried an update because a couldn't connect to it anymore with the domoticz app.
since the it's dark arround the house, after a lot of struggling I found out that the Pi1 is no longer supported so I upgraded to a pi3B
but somehow I cant get the GPIO running again.
mmolema
Posts: 4
Joined: Monday 02 December 2024 15:03
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: gpio fails as of kernel 6.6 on rpi

Post by mmolema »

If anyone can help me on this that wile be much appreciated:

1) I create a new install of PI OS
2) I install domoticz using ' sudo bash -c "$(curl -sSfL https://install.domoticz.com)" '
4 ) I add folowing lines to the end of /etc/init.d/domoticz.sh :
echo 538 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio538/direction
5) Using the console I can switch a LED that I wired to pin 26 with:
echo 1 > /sys/class/gpio/gpio538/value
echo 0 > /sys/class/gpio/gpio538/value
6) I open domoticz in the browser and create Genric sysfs GPIO Hardware
7) I try to manually add a switch of type Sysfs GPIO and behind Sysfs GPIO: I read 'No sysfs-gpio exports'

What am I doing wrong?
theo11
Posts: 14
Joined: Saturday 11 April 2020 11:23
Target OS: Raspberry Pi / ODroid
Domoticz version: 2024.7
Location: Netherland
Contact:

Re: gpio fails as of kernel 6.6 on rpi

Post by theo11 »

Hi,

I was using GPIO, doorbell application, on Buster and that was working fine with Generic sysfs GPIO in domoticz on PI 3B+.

I completely re-installed with Bookworm and using docker and I had the same problem, I cannot get it to work again.
I am running Bookworm Linux rpi2-3b 6.6.51+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.51-1+rpt3 (2024-10-08) aarch64 GNU/Linux.

Sysfs is already for a longer time deprecated and the new interface is https://github.com/brgl/libgpiod.
The libgpiod is already pre-installed in Bookworm.

I have created a dummy doorbell device in Domoticz and created the following script:
#!/bin/bash
#
# Monitor GPIO doorbell application
#
CHIP_NAME=gpiochip0
GPIO=4

ACTIVE_STATE=--active-low
NUM_EVENTS="--num-events=20"
EDGE_EVENT=-f

RPI="192.168.111.102:8080/"
SWITCH_CMD="json.htm?type=command&param=switchlight&"
# Dummy doorbell device Domoticz
IDX=96

while :
do
# gpiomon -l -n 1 -f gpiochip0 $GPIO
EVENT=`/usr/bin/gpiomon $ACTIVE_STATE $NUM_EVENTS $EDGE_EVENT $CHIP_NAME $GPIO`
# echo $EVENT
hostcmd="http://${RPI}${SWITCH_CMD}idx=${IDX}&switchcmd=On"
# echo $hostcmd
curlres=`/usr/bin/curl -sS $hostcmd`
done

This mon_doorbell.sh script runs as daemon.
Created the following file etc/systemd/system/mon_doorbell.service:
Unit]
Description=Monitor doorbell

[Service]
ExecStart=/opt/domoticz/store/scripts/scripts/mon_doorbell.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target


Then run the following commands to enable and start the daemon.
sudo systemctl daemon reload
sudo systemctl enable mon_doorbell.service
sudo systemctl start mon_doorbell.service

The dummy doorbell device sends a telegram notification to my cellphone.

Works perfectly.
Domoticz v2024.2, running on Raspberry PI 3B+ (2x)
Devices/plugins: RPI1: Milight hub , Z-wave, LMS, Denon, Homebridge (eDomoticz), RFXCOM; RPI2: SolarEdge, P1 Smart meter UBS, Plugwise Anna, Generic sysfs GPIO (Doorbell)
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest