Skip to content

RS485 HAT works on PIOS (kernel 6.12.47+rpt-rpi-2712) but not on (latest) HA (kernel 6.12.34-haos-raspi) #4325

@balvie

Description

@balvie

Describe the issue you are experiencing

I have home assistant (with kernel 6.12.34-haos-raspi) running on a Pi 5 with a HAT (from from Waveshare) implementing 2 serial channels created using a DUART type SC16IS752 on spi1 (as well as a CAN device on spi0). The serial ports show up in de directory /dev/ and they look all right when I do: dmesg | grep -i ‘(can|spi)’.

However, when I do: echo “tralalalalalal” > /dev/ttySC0, nothing happens with the CE wire (not the SCLK) of the spi on the board, it is and stays high.

I have seen that when I revert back to a standard Pi 5 with Pi OS having linux kernel 6.12.47+rpt-rpi-2712, it works okay.
I know that there have been some changes in the dbto files regarding the serial device used (sc16is752.dtbo and sc16is75x.dtbo). I'v experimented a lot with all kinds of configurations in config.txt, but I was not succesful.

So what is happening here?
When does the kernel 6.12.47 gets in HAOS?
Any help will be most appreciated.

What operating system image do you use?

rpi5-64 (Raspberry Pi 5 64-bit OS)

What version of Home Assistant Operating System is installed?

9.4

Did the problem occur after upgrading the Operating System?

No

Hardware details

Put HA for Pi 64bit on an SD card
A HAT froom Waveshare (Waveshare Isolated RS485 CAN HAT (B)) is mounted on the Pi.
Boot and do main config through web gui.
Create new blank dash board.
Dress up by adding File Editor and Advanced SSH & web terninal add-on's
Run: uname -r, results in 6.12.34-haos-raspi

Steps to reproduce the issue

  1. Add:
dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25,,spimaxfrequency=1000000
dtoverlay=sc16is75x-spi1,int_pin=24

to the config.sys file.
2. Reboot
3. Test 1
Check what we have:

ls -lt /mnt/boot/slot-A/overlays/sc16is75*
-rwxr-xr-x    1 root     root          3219 Sep  8 18:50 /mnt/boot/slot-A/overlays/sc16is750-i2c.dtbo
-rwxr-xr-x    1 root     root          3219 Sep  8 18:50 /mnt/boot/slot-A/overlays/sc16is752-i2c.dtbo
-rwxr-xr-x    1 root     root          4179 Sep  8 18:50 /mnt/boot/slot-A/overlays/sc16is75x-spi.dtbo
  1. Test 2
dmesg | grep -i '\(can\|spi\)'
[    0.000000] Linux version 6.12.34-haos-raspi (builder@191cce42d055) (aarch64-buildroot-linux-gnu-gcc.br_real (Buildroot -g49cc2691) 13.4.0, GNU ld (GNU Binutils) 2.43.1) #1 SMP PREEMPT Mon Sep  8 16:42:48 UTC 2025
[    0.447108] usb usb1: Manufacturer: Linux 6.12.34-haos-raspi xhci-hcd
[    0.448810] usb usb2: Manufacturer: Linux 6.12.34-haos-raspi xhci-hcd
[    0.452494] usb usb3: Manufacturer: Linux 6.12.34-haos-raspi xhci-hcd
[    0.453993] usb usb4: Manufacturer: Linux 6.12.34-haos-raspi xhci-hcd
[    0.645287] F2FS-fs (mmcblk0p3): Can't find valid F2FS filesystem in 1th superblock
[    0.646167] F2FS-fs (mmcblk0p3): Can't find valid F2FS filesystem in 2th superblock
[    2.203152] CAN device driver interface
[    2.203510] spi1.0: ttySC0 at I/O 0x0 (irq = 169, base_baud = 921600) is a SC16IS752
[    2.206375] spi1.0: ttySC1 at I/O 0x1 (irq = 169, base_baud = 921600) is a SC16IS752
[    2.222588] mcp251x spi0.0 can0: MCP2515 successfully initialized.

and the tty devices were there:

ls -l /dev/ttyS*
crw-rw----    1 root     audio     510,   0 Sep 28 21:46 /dev/ttySC0
crw-rw----    1 root     audio     510,   1 Sep 28 21:46 /dev/ttySC1
  1. Test sending
    echo “tralalalalalal” > /dev/ttySC0
    the prompt stay away for quite some time and then returns. Nothing to see at the oscillocope.

Anything in the Supervisor logs that might be useful for us?

Nothing.

Anything in the Host logs that might be useful for us?

None

System information

None relevant

Additional information

For easy access to config.txt I use a script:

mkdir /mnt/boot				# make mount point
mkdir /homeassistant/rene			# make private working location
#						  create shell commans for later use:
echo Mounting boot partition as /mnt/boot; mkdir -p /mnt/boot; mount -t vfat -o rw,noatime /dev/mmcblk0p1 /mnt/boot
echo "mount -t vfat -o rw,noatime /dev/mmcblk0p1 /mnt/boot"> homeassistant/rene/mntboot
chmod u+x homeassistant/rene/mntboot		# set executeable

Just to make life easier.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions