Irda infrared help

I am perfectly aware that this is neither the right place nor the right forum, but I am trying in every way to solve this huge problem. My PC is a Toshiba satellite pro 4600 750mhz at 512mb of ram.
Installed Antix 23.2 perfectly working. The only device, unfortunately that I can not get working is the irda. On the ANTIX forum there is no help, or rather they tried, but nothing to do, Really complicated.
I installed everything perfectly, the Antix runs very well.
I wanted to know if there is anyone who can help me with the installation of the IDRA infrared, present in my laptop.
I tried to run a guide https://groups.google.com/g/subsurfa.../c/sLQ4QKUK34Y
I think it is not possible to compile the module on my kernel 5.10.224-antix.1-486-smp (i686), in fact running the guide if I have correctly interpreted:
(First downloaded: https://archive.debian.org/debian/po.../i/irda-utils/ I must also download irda-utils_0.9.18-12_i386.deb and set aside)
Procedure of the guide:

1: git clone https://github.com/cschramm/irda.git
3: autoconf
4: ./configure
5: sudo dkms add .

Here an error is generated:

Code:

Error! Arguments <module> and <module-version> are not specified. Usage: add <module>/<module-version> or add -m <module>/<module-version> or add -m <module> -v <module-version>)

the discrepancy is the version reported by the guide: 1.0 and the one I found: 20241102~7920262

Code:


sudo dkms add -m irda -v 20241102~7920262

But it shows the error: Error! Could not find module source directory. Directory: /usr/src/irda-20241102~7920262 does not exist.
Then I had to copy the required file to the folder where I am operating:

Code:

sudo cp /home/Andrea/irda/src/dkms.conf /usr/src/irda-20241102~7920262/

So at this point, I resumed the process of configuring and installing the DKMS modules

Code:

sudo dkms add -m irda -v 20241102~7920262

Then:

Code:

sudo dkms build -m irda -v 20241102~7920262

But the command generated:

Code:

$ sudo dkms build -m irda -v 20241102~7920262 Sign command: /lib/modules/5.10.224-antix.1-486-smp/build/scripts/sign-file Signing key: /var/lib/dkms/mok.key Public certificate (MOK): /var/lib/dkms/mok.pub Building modules: Cleaning build area....(bad exit status: 2) make -j1 KERNELRELEASE=5.10.224-antix.1-486-smp...(bad exit status: 2) Error! Bad return status for module build on kernel: 5.10.224-antix.1-486-smp (i686) Consult /var/lib/dkms/irda/20241102~7920262/build/make.log for more information.

I went to see the file:

Code:

DKMS make.log for irda-20241102~7920262 for kernel 5.10.224-antix.1-486-smp (i686) Mon Jan 27 2025, 16:40:32, CET make: *** No target specified and no makefile found. Crashing.

And here I think this error is due to an incompatibility. I’m stuck.

It looks the DKMS package you are using has a mismatch with your 5.10 kernel. You may have a package that is intended for an older or a later kernel. Many distros are on 6.11, now...

I see you tried building the module manually with dkms commands, but it could not find the module source in the supplied directory for IRDA - This makes me think that the IRDA package you are using is what is mismatched.
Even so, you might try checking you have the correct kernel headers, just in case

sudo apt install linux-headers-$(uname -r)

I do wonder, if oddly... the Kernel is actually too new for the IRDA packages you are installing.

Unfortunately it is already updated to the latest version: 5.70.224-antix.1-486-smp-2
I hadn't noticed I should use a minimum kernel version of 6.6 or an older lernel up to 4.15.
I think upgrading to kernel 6.6 is too much for my poor machine, which is already at the limit.
Maybe I need to find a suitable DKMS for my kernel, as you suggested?

EDIT:
Checking the available kernels on antix I found the only one that is probably compatible:

$ apt-cache search linux-image | grep 686 | grep antix
linux-image-4.9. 0-326-antix.1-686-smp-pae
$ apt-cache search linux-headers | grep 686
linux-headers-4.9. 0-326-antix.1-686-smp-pae

There are the most recent kernels 6.x and later but they are in my opinion too heavy for my poor old machine.

I see you had some success with Slitaz but better experience with Antix. In another thread I accidentally suggested Q4OS Trinity Edition which on checking is for 64-bit machines which would not work on your notebook. You could give Q40S 32-bit edition a try. The only downside to this is, having tested it using Ventoy, is there is no 'live' environment, just a straight install. You would need to backup your existing system before trying.

I am currently installing the 32-bit version of Q4OS as a VM set to 1 Core (Single Processor) with 512 Mb RAM. Dad's Taxi duty calls so back later with some images. I may even do a video!

Q4OS already tried last year, as incredible as it is as a distro and I liked it a lot, it is extremely heavy, very heavy. So discarded.
Yes right now I'm asking for help from everyone, even on Slitaz. I really want to solve this problem.

This is a VM of the i386 version and hardly uses any memory:

The problem is that your PC is much newer. Even though my laptop met the minimum requirements, this linux distribution is very heavy. As if my laptop doesn't like it.

And that was definitely the i386 CD .iso you downloaded? When I created the Virtual Machine of the 32-bit .iso I only allocated 1 Core and 512 Mb.

Yes the ISO is the one on the download page. I created the CD and installed the operating system. Keep in mind that you set 1 Core, but mine is a 750Mhz.
Sure I could try again with Q4OS but I think it would give the same bad result.
I will try linux-image-4.9. 0-326-antix.1-686-smp-pae and see if this time the situation is solved.

1 Like

I did wonder if pae might be an issue. I remember earlier versions of Zorin causing issues for users of Intel processors that did not have p.a.e. (physical address extension) and I think the first release in Zorin that had p.a.e. present was Zorin 9 if memory serves me correctly. Just had another look at my VM and it is passing through 3.39 GHz. Looked at ways to cap Processor but not possible in virt-manager or Virtual Box, only VMWare paid versions can do this. Sorry! I would stick with your plan and see if adding any application like 'anyremote' using Synaptic Package Manager makes any difference.

Following a user on the Slitaz distribution he tried to compile IrDA on a system with kernel 5.10.221 (very close to my 5.10.224) and followed these steps:

He extracted the 5.10.221 kernel sources.
He copied the kernel configuration file specific to his distribution (linux-slitaz.config64).
He prepared the environment for building modules.
He downloaded the kernel-5.4 branch from the IrDA GitHub repository.
He compiled the module successfully.

So I did this:

Deleted the current IrDA directory:
rm -rf ~/irda

Cloned the repository with the correct branch (kernel-5.4):
git clone --branch kernel-5.4 https://github.com/cschramm/irda.git ~/irda

Verify that the correct branch has been downloaded and Compiling the module:

cd ~/irda
git tag
git checkout kernel-5.4
make -C src

Using DKMS

autoconf -f && ./configure
sudo dkms add src
sudo dkms install "irda/$(git show --pretty=format:"%cd~%h" --date="format:%Y%m%d" | head -1)"

Searching for the infrared model, in this case, thanks to Windows 2000 I have SMC IrCC Fast Infrared Port on Intel 82801 BAM LPC controller.
According to the README the correct driver is smsc-ircc2.
sudo modprobe smsc-ircc2

Checking for correctly loaded module and presence of device:

lsmod | grep ircc
dmesg | grep -i irda

Since the modules were correctly loaded but the device was not visible I ran:
sudo mknod /dev/irda0 c 237 0

This command manually creates the IrDA device if it does not exist. Then I checked if /dev/irda0 was created:
ls /dev/irda0

However the device could not be used.
Even if the kernel detects the device:

dmesg | grep -i irda
5991.309410 irda: loading out-of-tree module taints kernel.
5991.334948 SMsC Irda Controller found.
5991.341004 IrDA: Registered device irda0.
Even if the kernel detects the device:

Then I tried to force the module to load with hardware parameters
with Windows 2000 parameters, this indicated these resources:

I/O range: 02F8-02FF
IRQ: 10
I/O range: 0130-0137
DMA: 01
sudo rmmod smsc_ircc2 irda
sudo modprobe smsc-ircc2 dongle_id=0x09 io=0x02F8 irq=10 dma=1

However this did not work and checking:

$ dmesg | tail -n 20
[ 1539.408315] [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:01:a0:95:7f:5e:f8:a0:08:00 SRC=192.168.1.254 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=52087 DF PROTO=2
[ 1573.370857] usb 1-1: USB disconnect, device number 4
[ 1664.403542] [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:01:a0:95:7f:5e:f8:a0:08:00 SRC=192.168.1.254 DST=224.0.0.1 LEN=32 TOS=0x00 PREV=0x00 TTL=1 ID=33048 DF PROTO=2
[ 1789.397825] [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:01:a0:95:7f:5e:f8:a0:08:00 SRC=192.168.1.254 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=20918 DF PROTO=2
[ 1914.392615] [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:01:a0:95:7f:5e:f8:a0:08:00 SRC=192.168.1.254 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=25665 DF PROTO=2
[ 2039.387446] [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:01:a0:95:7f:5e:f8:a0:08:00 SRC=192.168.1.254 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=32900 DF PROTO=2
[ 2164.382137] [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:01:a0:95:7f:5e:f8:a0:08:00 SRC=192.168.1.254 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=17199 DF PROTO=2
[ 2221.875374] NET: Unregistered protocol family 23
[ 2289.376895] [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:01:a0:95:7f:5e:f8:a0:08:00 SRC=192.168.1.254 DST=224.0.0.1 LEN=32 TOS=0x00 PREV=0x00 TTL=1 ID=19662 DF PROTO=2
[ 2331.886144] NET: Registered protocol family 23
[ 2331.899299] smsc_ircc2: unknown parameter 'dongle_id' ignored
[ 2331.899314] smsc_ircc2: unknown parameter 'io' ignored
[ 2331.899320] smsc_ircc2: unknown parameter 'irq' ignored
[ 2331.899326] smsc_ircc2: unknown parameter 'dma' ignored
[ 2331.901156] found SMC SuperIO Chip (devid=0x5a rev=00 base=0x002e): LPC47N227
[ 2331.901184] smsc_superio_flat(): fir: 0x100, sir: 0x2f8, dma: 01, irq: 5, mode: 0x0e
[ 2331.901210] SMsC IrDA Controller found
 IrCC version 2.0, firport 0x100, sirport 0x2f8 dma=1, irq=5
[ 2331.903000] No transceiver found. Defaulting to Fast pin select
[ 2331.906458] IrDA: Registered device irda0

The message: No transceiver found. Defaulting to Fast pin select means that the smsc_ircc2 module was loaded correctly, recognized the hardware and registered irda0, but did not detect a transceiver (the hardware component that allows infrared communication).

I wanted to check if the serial port was correct.

$ sudo dmesg | grep tty
[ 0.114823] printk: console [tty0] enabled
[ 5.073519] 00:06: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A

The message I got from dmesg | grep tty indicates that the serial port ttyS0 was recognized correctly and is on I/O port 0x3f8 with IRQ4, which is the default serial port (COM1). This is consistent with the BIOS setup I saw earlier, where the serial port is configured to COM1.

The presence of ttyS0 confirms that the part of the operating system that handles serial communication (which is critical for IrDA) is up and running. However, the fact that you are not seeing irda0 in /dev implies that the infrared device was not created correctly, despite the smsc_ircc2 module being loaded.
I tried using Kernl 4.9.0 but it doesn't work. In fact the system doesn't even boot, remaining with a black screen. I guess it's the IrDA module that is not compatible.
In fact during the kernel installation it gave errors: Untitled file — Codefile
I also tried for kernel 6.10.11 but it didn't work. It didn't even install correctly, generating errors.

In the README it says.
### Minimum Linux versions?
5.4. (See the kernel- tags for versions that support previous Linux versions (up to 4.15).)*
This is strange because on the github.com page it is stated:
Minimum Linux versions?
6.6. (See the kernel- tags for versions that support previous Linux versions (up to 4.15).)*

I used Brave A.I. search engine which gave this:

Linux Irdroid Transceiver Setup

To get an IrDA transceiver recognized in Linux, follow these steps:

  1. Ensure your kernel supports IrDA. If you are using a kernel version above 4.17, you might need to use a custom build with IrDA support or a version below 4.17.

  2. Load the necessary modules. You can do this by running modprobe irda as root. This will load the IrDA subsystem into the kernel.

  3. Configure the IrDA transceiver. For USB IrDA transceivers like the Irdroid USB IrDA transceiver, ensure it is recognized by the system. It usually shows up as a USB serial port, such as /dev/ttyUSB0 .

  4. Use irattach to attach the IrDA transceiver to the system. For example, if your IrDA transceiver is recognized as /dev/ttyUSB0 , you would run irattach /dev/ttyUSB0 .

  5. Verify that the IrDA transceiver is recognized by checking the output of irdadump. This command will show you all the IrDA packets being sent and received by your system.

  6. If your system does not automatically recognize the IrDA transceiver, you may need to manually load additional modules such as ircomm-tty and ircomm by running modprobe ircomm-tty and modprobe ircomm as root.

  7. Ensure that your BIOS has the IrDA port activated, typically as SIR (Serial Infra Red) for COM2, and that it is set to IrDA mode or HPSIR.

By following these steps, you should be able to get your IrDA transceiver recognized and operational in Linux.

I know this is for a different device but wondered if anything in points 6. and 7. are relevant?

I wonder if this is a possible solution?

Having made some mistakes, I delete everything I have done previously to start over with the compilation.
Once everything is deleted, I also delete the current IrDA directory:

$ rm -rf ~/irda

Following a user on the Slitaz distribution he tried to compile IrDA on a system with kernel 5.10.221 (very close to my 5.10.224) and followed these steps:
Cloning the repository with the correct branch (kernel-5.4):

$ git clone --branch kernel-5.4 https://github.com/cschramm/irda.git ~/irda

Verifying the correct branch has been downloaded and Building the module:

$ cd ~/irda
$ git tag
$ git checkout kernel-5.4

Building the Module

$ make -C src

Using DKMS

$ autoconf -f && ./configure
$ sudo dkms add src
$ sudo dkms install "irda/$(git show --pretty=format:"%cd~%h" --date="format:%Y%m%d" | head -1)"

Finding the infrared model, in this case, thanks to Windows 2000 I have SMC IrCC Fast Infrared Port on Intel 82801 BAM LPC controller.
According to the README the correct driver is smsc-ircc2.

$ sudo modprobe smsc-ircc2

Verifying the module loaded correctly and the presence of the device:

$ lsmod | grep ircc
smsc_ircc2             20480  0
irda                  139264  1 smsc_ircc
$ sudo dmesg | grep -i irda
[ 2823.024338] irda: loading out-of-tree module taints kernel.
[ 2823.049529] SMsC IrDA Controller found
[ 2823.051546] IrDA: Registered device irda0

Installing irda-utils_0.9.18-15_i386.deb
Checking irda0 interface if active:

$ ip link show irda0
3: irda0: <NOARP> mtu 2048 qdisc noop state DOWN mode DEFAULT group default qlen 8
    link/irda 00:00:00:00 brd ff:ff:ff:ff

Since the interface is not active, I manually activate it:

$ sudo ip link set irda0 up

After activating it, I check and if I’m not mistaken it is active:

$ sudo ip link show irda0
3: irda0: <NOARP,UP,LOWER_UP> mtu 2048 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 8
    link/irda d3:05:9b:80 brd ff:ff:ff:ff

IrDA traffic control:

$ sudo irdaping irda0
IrDA ping (0x00000000 on irda0): 32 bytes

Ctrl+C to stop the process and it appears as a message:

32 packets received by filter

Keep in mind that there is no device that is connected, so I do not understand where these received packets come from.
I tried to connect my Palm m100 to the infrared of the laptop, normally when it is set to “IR transmission to PC” it connects to the Laptop, and the message “Waiting for Sender” appears. It indicates that it is connected and waiting for instructions to receive or send data. This does not happen now.
To check if it is connected, in theory on Windows you don’t have to do anything, only if you actually want to transfer data, you will need HotSync and Palm Desktop or Outlook Software. But to check the connections these are not necessary, the connection is automatic, but only the connection between the two devices.
What is missing? Maybe I did something wrong?

Regarding Transceiver, there should be no problems.

Check if setserial is installed:

$ apt-cache policy setserial
setserial:
  Installato: 2.17-53+b1
  Candidato:  2.17-53+b1
  Tabella versione:
 *** 2.17-53+b1 500
        500 http://ftp.it.debian.org/debian bookworm/main i386 Packages
        100 /var/lib/dpkg/status

Activate serial communication daemon (irattach):

sudo irattach irda0 -s

Device discovery:

$ cat /proc/net/irda/discovery
IrLMP: Discovery log:
nickname: Palm III, hint: 0x8220, saddr: 0xe8de1b8a, daddr: 0x38732053

Ping to the address of the Palm m100

$ sudo irdaping 0x38732053
IrDA ping (0x38732053 on irda0): 32 bytes
32 bytes from 0x38732053: irda_seq=0 time= 99.32 ms.
32 bytes from 0x38732053: irda_seq=1 time= 99.33 ms.
32 bytes from 0x38732053: irda_seq=3 time= 99.31 ms.
32 bytes from 0x38732053: irda_seq=4 time= 99.33 ms.
32 bytes from 0x38732053: irda_seq=6 time=101.14 ms.
32 bytes from 0x38732053: irda_seq=7 time=100.53 ms.
32 bytes from 0x38732053: irda_seq=8 time=100.66 ms.
32 bytes from 0x38732053: irda_seq=9 time=100.56 ms.
32 bytes from 0x38732053: irda_seq=10 time=100.58 ms.
32 bytes from 0x38732053: irda_seq=11 time=100.60 ms.
32 bytes from 0x38732053: irda_seq=12 time=100.60 ms.
32 bytes from 0x38732053: irda_seq=13 time=100.62 ms.
32 bytes from 0x38732053: irda_seq=14 time=100.53 ms.
32 bytes from 0x38732053: irda_seq=15 time=100.54 ms.
32 bytes from 0x38732053: irda_seq=16 time=100.58 ms.
^X32 bytes from 0x38732053: irda_seq=17 time=100.59 ms.
19 packets received by filter

It works!!! My Palm m100 connected to it and it said: Waiting for Sender.

Question how can I automatically start (make persistent) the command

$ sudo ip link set irda0 up

and

$ sudo irattach irda0 -s

Because when I start the PC I have to run the commands manually.

So I solved it like this:
Sysvinit based setup:

sudo nano /etc/rc.local

Commands to activate Irda at boot:

#!/bin/sh /sbin/ip link set irda0 up /usr/sbin/irattach irda0 -s exit 0

Made executable:

sudo chmod +x /etc/rc.local

Added Kernel module at boot:

sudo nano /etc/modules

Add:

smsc_ircc2

Now infrared will be started automatically at boot.

2 Likes

I've been trying for days to install jpilot which is the counterpart of Plam Desktop for windows. It is used to synchronize data with my Palm m100
But I can't install it.
Now in the Antix repository unfortunately there is no program, and this too must be compiled and installed manually:

git clone https://github.com/juddmon/jpilot.git
cd jpilot.

Installation dependencies:

sudo apt install build-essential libgtk2.0-dev libglib2.0-dev libgdk-pixbuf2.0-dev \
                 libpango1.0-dev libatk1.0-dev libxtst-dev libusb-dev libssl-dev autoconf \
                 automake libtool

Then also:

sudo apt install intltool
su -c "apt install libgcrypt20-dev"
sudo apt-get install libgtk-3-dev libcrypt-dev

I started the compilation process to install everything, but...
Process log ./autogen.sh
LOG: Codeshare.io - autogen.sh
The process I ran produced a number of warnings about the use of deprecated macros and other aspects of the configuration file, but it seemed to proceed fine until the configuration part.
So I continued with the command: ./configure
LOG: Codeshare.io - ./configure
The error I'm seeing, "Could not find the pilot-link header files", means that the system cannot find the pilot-link header files, which are required for the configuration to complete correctly. pilot-link is a library used to interact with Palm OS devices, and it looks like the project you're trying to compile needs this library.
And only later did I notice that the same warning appears ./autogen.sh
So I tried to find pilot-link, which is also not available in Antix.

git clone https://github.com/jichu4n/pilot-link.git
cd pilot-link

Executed the following command with error:

$ ./autogen.sh
**Error**: You must have `libtool' installed to compile pilot-link.
Get ftp://ftp.gnu.org/pub/gnu/libtool/libtool-1.5.tar.gz
(or a newer version if it is available)

Very strange because libtool is installed and it is at the latest version.
I don’t know where to turn anymore.

They offer an installation script that will add a new repository to download jpilot from. Unfortunately, it's not very flexible as it basically only works with Ubuntu proper, but it can be fixed rather easily.

First, download the installation script.

curl -s https://packagecloud.io/install/repositories/judd/jpilot/script.deb.sh -o jpilot.sh

Running the script as is will fail because "the operating system is not supported". This is what needs fixing, which can be done by editing the script (named "jpilot.sh") and adding these two lines:

#!/bin/bash

+ os=Ubuntu
+ dist=jammy

Make sure to add them below the first line that says #!/bin/bash. This will essentially fix the OS detection problem.

Add executable permissions to the script, and run it with sudo:

chmod u+x ./jpilot.sh
sudo ./jpilot.sh

Update the repository cache, and install:

sudo apt install jpilot jpilot-plugins
1 Like

I did everything correctly, without any problems, however the message continues to appear: unable to find jpilot packages, jpilot-plugins

This is what I see:

When you run ls /etc/apt/sources.list.d, do you have a file there called "judd_jpilot.list"?