seantywork

01

Architecture:             aarch64
  CPU op-mode(s):         32-bit, 64-bit
  Byte Order:             Little Endian
CPU(s):                   4
  On-line CPU(s) list:    0-3
Vendor ID:                ARM
  Model name:             Cortex-A72
    Model:                3
    Thread(s) per core:   1
    Core(s) per cluster:  4
    Socket(s):            -
    Cluster(s):           1
    Stepping:             r0p3
    CPU(s) scaling MHz:   33%
    CPU max MHz:          1800.0000
    CPU min MHz:          600.0000
    BogoMIPS:             108.00
    Flags:                fp asimd evtstrm crc32 cpuid

02

seantywork@raspberrypi:~/hack/linux/linuxyz/kgpio-irqsock $ uname -a
Linux raspberrypi 6.12.25+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.25-1+rpt1 (2025-04-30) aarch64 GNU/Linux

03


seantywork@raspberrypi:~/hack/linux/linuxyz/kgpio-irqsock $ make
make -C /lib/modules/6.12.25+rpt-rpi-v8/build M=/home/seantywork/hack/linux/linuxyz/kgpio-irqsock modules
make[1]: Entering directory '/usr/src/linux-headers-6.12.25+rpt-rpi-v8'
  CC [M]  /home/seantywork/hack/linux/linuxyz/kgpio-irqsock/kgpio_irqsk.o
  MODPOST /home/seantywork/hack/linux/linuxyz/kgpio-irqsock/Module.symvers
  CC [M]  /home/seantywork/hack/linux/linuxyz/kgpio-irqsock/kgpio_irqsk.mod.o
  CC [M]  /home/seantywork/hack/linux/linuxyz/kgpio-irqsock/.module-common.o
  LD [M]  /home/seantywork/hack/linux/linuxyz/kgpio-irqsock/kgpio_irqsk.ko
make[1]: Leaving directory '/usr/src/linux-headers-6.12.25+rpt-rpi-v8'

04

seantywork@raspberrypi2:~/hack/linux/linuxyz/kgpio-irqsock $ cat ins.conf 
#CTLOUT=GPIO17
#DATAOUT=GPIO23
CTLIN=GPIO24
DATAIN=GPIO27
CTLOUT=0
DATAOUT=0

05

seantywork@raspberrypi2:~/hack/linux/linuxyz/kgpio-irqsock $ sudo ./ins.sh 
CTL OUT: 0 = 0
DATA OUT: 0 = 0
CTL IN : GPIO24 = 536
DATA IN : GPIO27 = 539
[Jun17 10:53] gpio irqsk: gpio_ctl_i to IRQ 55
[  +0.000012] gpio irqsk: gpio_data_i to IRQ 54
[  +0.000002] gpio irqsk: module is initialized into the kernel
[  +0.000002] gpio irqsk: ctl_o: 0 ctl_i: 536
[  +0.000002] gpio irqsk: data_o: 0 data_i: 539
[  +1.788774] hwmon hwmon1: Undervoltage detected!
[  +4.032053] hwmon hwmon1: Voltage normalised
[ +22.627644] value: c906ea54...b98f7b6f
[  +1.268015] value: c906ea54...b98f7b6f
[  +1.267979] value: c906ea54...b98f7b6f
[  +1.267823] value: c906ea54...b98f7b6f
[  +1.268179] value: c906ea54...b98f7b6f
[  +1.267929] value: c906ea54...b98f7b6f
[  +1.267974] value: c906ea54...b98f7b6f
[  +1.268064] value: c906ea54...b98f7b6f
[  +1.268899] value: c906ea54...b98f7b6f
[  +1.267049] value: c906ea54...b98f7b6f

06

seantywork@raspberrypi:~/hack/linux/linuxyz/kgpio-irqsock $ cat ins.conf 
CTLOUT=GPIO24
DATAOUT=GPIO27
CTLIN=0
DATAIN=0
#CTLIN=GPIO17
#DATAIN=GPIO23

07


seantywork@raspberrypi:~/hack/linux/linuxyz/kgpio-irqsock $ sudo ./ins.sh 
CTL OUT: GPIO24 = 536
DATA OUT: GPIO27 = 539
CTL IN : 0 = 0
DATA IN : 0 = 0

[Jun17 10:53] gpio irqsk: module is initialized into the kernel
[  +0.000015] gpio irqsk: ctl_o: 536 ctl_i: 0
[  +0.000005] gpio irqsk: data_o: 539 data_i: 0
[  +0.000004] gpio irqsk: test mode
[  +0.000020] value: c906ea54...b98f7b6f
[  +0.000038] waitqueue handler: job_handler
[  +0.000004] waitqueue handler waiting...
[  +0.104805] sending ctl start preamble
[  +1.172572] waitqueue handler: job_handler
[  +0.000013] waitqueue handler waiting...
[  +0.107381] sending ctl start preamble
[  +1.160622] waitqueue handler: job_handler
[  +0.000013] waitqueue handler waiting...
[  +0.107374] sending ctl start preamble
[  +1.160590] waitqueue handler: job_handler
[  +0.000012] waitqueue handler waiting...
[  +0.107411] sending ctl start preamble
[  +1.160399] waitqueue handler: job_handler
[  +0.000012] waitqueue handler waiting...
[  +0.107614] sending ctl start preamble
[  +1.160547] waitqueue handler: job_handler
[  +0.000013] waitqueue handler waiting...
[  +0.107441] sending ctl start preamble
[  +1.160471] waitqueue handler: job_handler
[  +0.000012] waitqueue handler waiting...
[  +0.107531] sending ctl start preamble
[  +1.160428] waitqueue handler: job_handler
[  +0.000011] waitqueue handler waiting...
[  +0.107573] sending ctl start preamble
[  +1.160478] waitqueue handler: job_handler
[  +0.000013] waitqueue handler waiting...
[  +0.107522] sending ctl start preamble
[  +1.161356] waitqueue handler: job_handler
[  +0.000011] waitqueue handler waiting...
[  +0.106649] sending ctl start preamble
[  +1.160377] job done

08


seantywork@raspberrypi:~/hack/linux/linuxyz/kgpio-irqsock $ cat ins.conf 
CTLOUT=GPIO24
DATAOUT=GPIO27
#CTLIN=0
#DATAIN=0
CTLIN=GPIO17
DATAIN=GPIO23
IF_ADDR=10.10.0.1/24


sudo dmesg -wH


seantywork@raspberrypi:~/hack/linux/linuxyz/kgpio-irqsock $ sudo ./ins.sh 
CTL OUT: GPIO24 = 536
DATA OUT: GPIO27 = 539
CTL IN : GPIO17 = 529
DATA IN : GPIO23 = 535
IF ADDR: 10.10.0.1/24

09

seantywork@raspberrypi2:~/hack/linux/linuxyz/kgpio-irqsock $ cat ins.conf 
CTLOUT=GPIO17
DATAOUT=GPIO23
CTLIN=GPIO24
DATAIN=GPIO27
#CTLOUT=0
#DATAOUT=0
IF_ADDR=10.10.0.2/24


sudo dmesg -wH


seantywork@raspberrypi2:~/hack/linux/linuxyz/kgpio-irqsock $ sudo ./ins.sh 
CTL OUT: GPIO17 = 529
DATA OUT: GPIO23 = 535
CTL IN : GPIO24 = 536
DATA IN : GPIO27 = 539
IF ADDR: 10.10.0.2/24

10

seantywork@raspberrypi:~/hack/linux/linuxyz/kgpio-irqsock $ ip a
...
15: geth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 47:45:54:48:30:36 brd ff:ff:ff:ff:ff:ff
    inet 10.10.0.1/24 scope global geth0
       valid_lft forever preferred_lft forever
    inet6 fe80::4545:54ff:fe48:3036/64 scope link 
       valid_lft forever preferred_lft forever

seantywork@raspberrypi2:~/hack/linux/linuxyz/kgpio-irqsock $ ip a
...
1: geth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 47:45:54:48:30:33 brd ff:ff:ff:ff:ff:ff
    inet 10.10.0.2/24 scope global geth0
       valid_lft forever preferred_lft forever
    inet6 fe80::4545:54ff:fe48:3033/64 scope link 
       valid_lft forever preferred_lft forever

11


seantywork@raspberrypi2:~/hack/linux/linuxyz/kgpio-irqsock $ nc -l 10.10.0.2 9999


seantywork@raspberrypi:~/hack/linux/linuxyz/kgpio-irqsock $ nc 10.10.0.2 9999

12

seantywork@raspberrypi2:~/hack/linux/linuxyz/kgpio-irqsock $ nc -l 10.10.0.2 9999
helllo
echo
bye

seantywork@raspberrypi:~/hack/linux/linuxyz/kgpio-irqsock $ nc 10.10.0.2 9999
helllo
echo
bye
^C

13


# PSH,ACK
[  +0.288959] entered xmit
[  +0.000014] entered hw tx
[  +0.000003] eth src: 47:45:54:48:30:36
[  +0.000007] eth dst: 47:45:54:48:30:33
[  +0.000004] src: 0a0a0001:38618
[  +0.000005] dst: 0a0a0002:09999
[  +0.051666] exiting xmit
# ACK
[  +0.049185] napi interrupt
[  +0.000015] napi receive
[  +0.000003] napi interrupt end
[  +0.000010] polling
[  +0.000015] polling done
[  +0.000004] npackets smaller than budget
[  +0.000004] napi complete
[  +0.000003] polling end