• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

RPi4 + CamillaDSP Tutorial

OP
M

mdsimon2

Major Contributor
Forum Donor
Joined
Oct 20, 2020
Messages
2,515
Likes
3,371
Location
Detroit, MI
I have Camilla DSP working on my Raspberry Pi using the MCHStreamer kit.

Can anyone point me to a tutorial on how to create a convolution file for Camilla from an REW impulse response?

I tried using a .wav file like I do in SqueezeDSP for convolution, but Camilla DSP does not accept a .wav file. I then used Audacity to convert the .wav file to a .raw file before uploading to Camilla, but that did not work - the .raw file just caused the music to be garbled.

CamillaDSP accepts wav files. I haven't done much with FIR and REW, but I have exported a few wav convolution filters from REW and uploaded them via Filters under the Files tab.

1710815164319.png


Then under the Filter tab if you select Conv and select your desired filter it should automatically select subtype wav.

1710815331521.png


Michael
 

terryforsythe

Senior Member
Forum Donor
Joined
May 4, 2022
Messages
489
Likes
513
CamillaDSP accepts wav files. I haven't done much with FIR and REW, but I have exported a few wav convolution filters from REW and uploaded them via Filters under the Files tab.

View attachment 357421

Then under the Filter tab if you select Conv and select your desired filter it should automatically select subtype wav.

View attachment 357422

Michael
Thank you, Michael!!!

It was an id10t error on my part - I didn't look into the subtype menu and select the "Wav" subtype. I saw RAW and just assumed I needed a RAW file.
 

terryforsythe

Senior Member
Forum Donor
Joined
May 4, 2022
Messages
489
Likes
513
There is one minor issue when streaming Tidal - the sample rate is different on different songs. Yesterday, I set the WiiM to a 192k sample rate and used a 192k configuration file. It worked on some songs that were streamed at 192k, but garbled on others. Next I set the WiiM to 48k and used a 48k configuration file. That worked for about 10 songs, then a song came out all garbled again. Now I am using 44.1k both in the WiiM and the configuration file. So far that seams to be working.

I tried installing and enabling Camilladsp-setrate to dynamically adjust the sample rate based on the incoming stream, but I when I issue the command to start Camilladsp-setrate I get the following error: E: WAIT_RATE_CHANGE: Callback: Connection to localhost:1234 failed: HS: Rejected at CLIENT_ESTABLISHED

My hunch is that the MCHStreamer kit is not compatible with the USB Gadget API, which the developer of Camilladsp-setrate used.

Does anyone have any insight to this? Is there another way to get CamillaDSP to automatically select the correct configuration file based on the sample rate of the incoming stream?

As a side note, I am using this setup on KEF LS60 wireless speakers, using the WiiM, Raspberry Pi and MCHStreamer kit in lieu of the LS60s' internal wireless streaming. With the convolution filters now activated to implement room correction (tuned to Harman Curve), the sound quality definitely is improved.
 

itsikhefez

Member
Joined
Mar 20, 2019
Messages
39
Likes
40
Location
Greater Seattle Area
I have been working on a similar python app to what @mdsimon2 provided here, but with some additional features.
It supports any remote control with a basic TSOP38238 IR receiver, in additional to a physical knob with a rotary encoder.
If you're using Squeezelite, you can change tracks and display album art or song info on the display.

Given that the app waits on events from squeezelite, a remote control and encoder, it leverages multithreading and asyncio to be as performant as possible.
The UI is very responsive to all inputs.
Another nice feature is the ability to toggle between multiple EQ options, so that you can A/B the effects of your filters/room correction etc.
I've only been testing with an IPS LCD with luma.lcd package, but it should be easy enough to swap that out for luma.oled.

Please let me know if you have any questions. I can fork this discussion to a different thread if needed.
The code is available publicly on github: https://github.com/itsikhefez/pi_player/

Pictures and demo of the finished unit coming soon (need to have the front panel fabricated)

Full list of features:
  • Supports any remote control
    • Key mapping defined in config file
  • Inputs
    • User-defined inputs (e.g TV, streamer, analog)
    • Direct input selection
    • Scroll through inputs
    • 3 modes per input -- direct, EQ and EQ alt.
    • EQ can be turned on or off (direct)
  • Volume Control
    • Coarse (3.0dB) or fine (0.5dB) steps.
    • Volume dim (20dB)
    • Events throttling to control adjustment speed
    • Via remote control or rotary encoder
    • Volume level displayed on screen during adjustment
  • Squeezelite
    • Play, pause, stop, prev track, next track.
    • Multiple display options, such as album art image or track info (album, artist, title, bitrate)
    • Continuously updates display with up-to-date information
 

melomane13

Member
Joined
Jul 24, 2023
Messages
99
Likes
70
Location
France
Pictures and demo of the finished unit coming soon (need to have the front panel fabricated)
curious to see the result!
I have quite a few questions, so I think a new thread would be better suited
 

itsikhefez

Member
Joined
Mar 20, 2019
Messages
39
Likes
40
Location
Greater Seattle Area

Frunse

Active Member
Joined
Feb 21, 2024
Messages
132
Likes
20
Part 4: Advanced Configuration

Using the GUI

As mentioned previously you can view the GUI by going to any browser on your network and entering http://hostname:5005.

As of V2 the first tab the Title tab. There isn't much to do in this tab but you can populate Title and Description fields for your configuration. The Title field is displayed on the first line of the OLED display described later in this tutorial.

View attachment 334599

The Devices tab defines general parameters like capture device, playback device, sample rate, rate adjust, resampling and chunk size.

It is very important that sample format and channel count are supported by your device. If you are using my configurations this will not be an issue but if you are trying to use a different device it is something to be aware of. The majority of issues I see with CamillaDSP not starting are the result of incorrectly specified channel counts and/or formats.

View attachment 334593

In the Filters tab you can add any filter you want. A big advantage of using the GUI over a manual configuration file is that it will prompt you for the necessary information for the filter type you are using. Once you have created a filter you can view the magnitude / phase / group delay and make sure it matches your expectation. If you have questions about specific filter implementation see the CamillaDSP GitHub. Creating a filter in the Filters tab does not apply it to the pipeline, it just creates a filter that will be available for you to apply in the pipeline.

View attachment 334595

The Mixers tab defines channel routing, in addition you can change gain and polarity of each channel. Like filters your mixer will not be in effect until you apply it in the pipeline.

As in the Devices tab it is very important that the channel counts in the Mixers tab exactly match the channel counts of your device. Again if you use my configurations this will not be an issue but it is something to be aware of if you are using a different device. You do not need to use all channels in your mixer but they need to specified in the "in" and "out" section. For example in the screenshot below 8 input and 8 output channels are specified although only 2 input channels (0 and 1) are used in the mixer definition.

View attachment 334596

Another new addition with V2 is the Processors tab. I haven't used this personally, but you can use it to implement a compressor.

View attachment 334602

The Pipeline tab is where everything comes together, this is where you apply filters, mixers and processors created in the previous tabs. You can plot the entire pipeline to show how the mixer and filters are applied as well as the combined magnitude / phase / group delay on each channel.

View attachment 334598
View attachment 334597

The Files tab stores configurations and convolution filters. It will show configuration files located in ~/camilladsp/configs/ and convolution filters located in ~/camilladsp/coeffs/. You can download/upload configurations and convolution filters to/from your local computer. You can also save the configuration currently loaded in the GUI to either a new configuration file or an existing one.

To load a configuration in the GUI press the clockwise arrow button next to your desired configuration. Once this is done you will see the configuration name appear in the lower left under "Config", in the screenshot below you can see that a configuration called lxminibsc.yml is loaded in the GUI.

Just because a configuration is loaded in the GUI does NOT mean it is actually applied to the DSP. To apply a configuration to the DSP click the "Apply to DSP" button. This will apply the configuration in the GUI to the DSP but it will NOT save any changes made via the GUI. If you would like to save changes click the "Save to File" button. If you would like both of these operations done at the same time you can click the "Apply and save" button. Alternatively you can use the "Apply automatically" and "Save automatically" check boxes to do these operations automatically after a change is made in the GUI.

If you have a question about what settings are currently applied to the DSP click the "Fetch from DSP" button and it will load the GUI with the current DSP settings. Note it only pulls the settings and does NOT change the configuration name in the lower left.

In order to set a configuration as default (i.e. the configuration that will be loaded when CamillaDSP starts) click the star button next to your desired configuration. After you do this the star button will now be green next to your default configuration.

View attachment 334594

There is a nice compact view that is great for changing volume or configurations from a smartphone or tablet. You can access it by clicking the "Change to compact view" button just to the right of the CamillaDSP logo.

If you add filters named "Bass" and "Treble" you can use the sliders in this view as bass / treble tone controls to control the boost / cut of those filters. Recommended parameters for bass and treble tone control are lowshelf, f=85 Hz, q=0.9 and highshelf, f=6500 Hz, q=0.7 respectively.

View attachment 334600

This is where things get fun! When looking at these options you will notice the Okto has a lot of really nice features that are not available on the other DACs such IR volume control, a big volume display and trigger output. Wouldn’t it be great if we could get the same functionality on other DACs? Turns out you can do this relatively easily.

FLIRC USB IR Receiver

A FLIRC IR receiver is an easy way to add IR volume control for around $20. I’ve created a python script so setting this up is very easy. The first step is to download the FLIRC software on your main computer and connect the FLIRC receiver to that computer. Use the software to pair your remote so that volume up is KEY UP, volume down is KEY DOWN, mute is KEY LEFT and source change is KEY RIGHT.

Pressing KEY LEFT will cause CamillaDSP to mute, if you switch configurations this mute will stay set. You can change volume up and down while muted, the mute will only be removed by either pressing KEY LEFT again or unmuting in the GUI.

Install evdev.

Rich (BB code):
sudo apt install python3-evdev

Copy / paste python the FLIRC python script attached to this post to ~/flirc.py using nano.

Rich (BB code):
nano ~/flirc.py

As of 12/13/2023, configuration switching in flirc.py has been changed to accommodate CamillaDSP V2. To identify which configurations you would like to switch between, add a "_" in front of the configuration file. For example, if you had a configurations titled _ultralitemk5_toslink48.yml, _ultralitemk5_streamer.yml, _ultralitemk5_analog.yml and ultralitemk5_streamer.yml, pressing KEY RIGHT would switch between _ultralitemk5_toslink48.yml, _ultralitemk5_streamer.yml and _ultralitemk5_analog.yml but NOT ultralitemk5_streamer.yml because it does not start with "_".

Enable USB-C port for use, this is needed to run the IR receiver from the USB-C port (you will see why you might want to do this in the section discussing cases). If you have the FLIRC plugged in to a USB-A port this is not needed.

Rich (BB code):
sudo nano /boot/firmware/config.txt

In the section starting with "# Config settings specific to arm64" add ,dr_mode=host after dtoverlay=dwc2 such that it looks like the line below. Reboot for the changes to take effect.

Rich (BB code):
# Config settings specific to arm64
arm_64bit=1
dtoverlay=dwc2,dr_mode=host

Check that your FLIRC is recognized. Run lsusb and make sure you see an entry for Clay Logic flirc as shown below.

Rich (BB code):
lsusb

Rich (BB code):
username@hostname:~$ lsusb
Bus 003 Device 002: ID 20a0:0006 Clay Logic flirc
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 07fd:000c Mark of the Unicorn UltraLite-mk5
Bus 001 Device 005: ID 07fd:0008 Mark of the Unicorn M Series
Bus 001 Device 004: ID 262a:10e7 SAVITECH Corp. UR23 USB SPDIF Rx
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Next check that the FLIRC device is named what we expect.

Rich (BB code):
ls /dev/input/by-id/

Expected output is:

Rich (BB code):
username@hostname:~$ ls /dev/input/by-id/
usb-flirc.tv_flirc-if01-event-kbd

If you see something different, potentially like usb-flirc.tv_flirc_E7A648F650554C39322E3120FF08122E-if01-event-kbd you will need to modify flirc.py to reflect this.

Rich (BB code):
nano ~/flirc.py

If needed change the flirc=evdev.InputDevice line near the top to reflect your FLIRC name.

Rich (BB code):
flirc=evdev.InputDevice('/dev/input/by-id/usb-flirc.tv_flirc-if01-event-kbd')

Create service to start FLIRC python script. Change User field to reflect your username.

Rich (BB code):
sudo nano /lib/systemd/system/flirc.service

Rich (BB code):
[Unit]
After=syslog.target
StartLimitIntervalSec=10
StartLimitBurst=10

[Service]
Type=simple
User=username
WorkingDirectory=~
ExecStart=python3 flirc.py
Restart=always
RestartSec=1
StandardOutput=journal
StandardError=journal
SyslogIdentifier=flirc

[Install]
WantedBy=multi-user.target

Enable FLIRC service.

Rich (BB code):
sudo systemctl enable flirc

Start FLIRC service.

Rich (BB code):
sudo service flirc start

Trigger Output

It is easy to add a trigger output to the Ultralite Mk5 using a Bobwire DAT1. Simply connect the TOSLINK output of the Ultralite Mk5 to the Bobwire DAT1 and use the Audio Detect output port. All of my configuration files are set to stop after 5 seconds of output less than -100 dB, as a result CamillaDSP will stop after 5 seconds and after 60 seconds the trigger from the Bobwire DAT1 will stop and your amplifiers will turn off. Once CamillaDSP starts playing the Bobwire DAT1 trigger will fire up immediately. The only issues I have with the Bobwire DAT1 are that it is relatively expensive (~$70) and for me the provided power supply had a high frequency noise coming from the power supply itself, I swapped this out with another generic 12 V power supply and the noise went away.

OLED Display

RPis have GPIO pins which can be used to interface with a variety of displays. I’ve developed a python script that works with the buydisplay.com 3.2” diagonal SSD1322 OLED display which is around ~$30 + shipping. Be sure to order the display in the 6800 8 bit configuration, I also recommend you have them solder a pin header as it is only an additional cost of $0.59.

I should warn that my code is messy and will make actual programmers cringe but it works well and it is decently easy to modify. The base setup turns the display off after 10 seconds of no volume changes to avoid OLED burn in. It will turn back on if you change the volume or the CamillaDSP status or configuration changes.

As of 02/21/2023 there are now two options for the oled python script, one based on lgpio and one based on rpi-gpio. @LandscapeJohn did some testing as noted here and found that rpi-gpio was significantly faster than the lgpio. This makes a considerable difference in the responsiveness of the display. I originally chose lgpio over rpi-gpio as I had read that rpi-gpio support was going away (see here and here). However, as of Ubuntu 23.10 rpi-gpio still works and it is well worth using for the significant performance increase. @LandscapeJohn also made some slight changes to the way the routine sends data / commands to the display which I implemented in the lgpio version as well for a slight performance increase.

Note, RPi5s do NOT support rpi-gpio and need to use lgpio, in addition you need to change the line "chip = sbc.gpiochip_open(0)" to "chip = sbc.gpiochip_open(4)".

The python script has the ability to show user defined text on the first line of the display based on loaded configuration file. With CamillaDSP V2, this will show the Title field under the Title tab of the GUI. If this field is blank, "CamillaDSP" will be displayed.

If using lgpio based routine install lgpio.

Rich (BB code):
sudo apt install python3-lgpio

If using rpi-gpio routine (recommended) install rpi-gpio.

Rich (BB code):
sudo apt install python3-rpi.gpio

Copy / paste python script in attached “oled.py” in to ~/oled.py using nano.

Rich (BB code):
nano ~/oled.py

Create service to start OLED python script.

Rich (BB code):
sudo nano /lib/systemd/system/oled.service

If using Ubuntu 22.04 LTS, use the service below and change User field to reflect your username.

Rich (BB code):
[Unit]
After=syslog.target
StartLimitIntervalSec=10
StartLimitBurst=10

[Service]
Type=simple
User=username
WorkingDirectory=~
ExecStart=python3 oled.py
Restart=always
RestartSec=1
StandardOutput=journal
StandardError=journal
SyslogIdentifier=oled

[Install]
WantedBy=multi-user.target

If using Ubuntu 23.10, use the service below and change the username in the WorkingDirectory field to reflect your username. A different service is required for Ubuntu 23.10 as it requires oled.py to be run as root.

Code:
[Unit]
After=syslog.target
StartLimitIntervalSec=10
StartLimitBurst=10

[Service]
Type=simple
WorkingDirectory=/home/username/
ExecStart=python3 oled.py
Restart=always
RestartSec=1
StandardOutput=journal
StandardError=journal
SyslogIdentifier=oled
User=root
Group=root

[Install]
WantedBy=multi-user.target

Enable OLED service.

Rich (BB code):
sudo systemctl enable oled

Start OLED service.

Rich (BB code):
sudo service oled start

Wiring configuration from the display to the RPi GPIO header is listed below. Note, these pins can be changed as desired, see here for more information on RPi4 pinout -> https://www.tomshardware.com/reviews/raspberry-pi-gpio-pinout,6122.html. Specifically using GPIO 18 for the display may be an issue if you are using the display with a DAC HAT.

01 (ground) -> ground
02 (supply voltage) -> 3.3 V
03 (no connection) -> no connection
04 (data bus 0) -> GPIO 26
05 (data bus 1) -> GPIO 13
06 (data bus 2) -> GPIO 6
07 (data bus 3) -> GPIO 5
08 (data bus 4) -> GPIO 22
09 (data bus 5) -> GPIO 27
10 (data bus 6) -> GPIO 17
11 (data bus 7) -> GPIO 18
12 (enable) -> GPIO 23
13 (read/write) -> ground
14 (data/command) -> GPIO 16
15 (reset) -> GPIO 12
16 (chip select)-> GPIO 25

For wiring I used prefabbed 8” long 0.1” header jumpers. These are a bit long but allow you to remove the front panel with the wiring remaining connected which is a nice feature.

Modushop Case

Modushop offers CNC machining of aluminum cases for custom projects. You provide the CAD files and they do the machining. I have found ordering directly from Modushop is slightly cheaper than ordering from DIYAudio Store which is the US distributor, this may change as exchange rates and shipping costs change so be sure to check before ordering. All cases are based on the Galaxy GX247 chassis (230 mm x 170 mm x 40 mm) with 2 mm aluminum covers. I dislike the 1 mm steel covers as they are rather flimsy.

Case designs discussed below are designed to be used with a display and IR receiver. Drawings in dwg, pdf and vsdx format are attached in a zip file.

A challenge with these cases was how to get a USB port in the front of the case for the IR receiver and how to get a power connection in the rear of the case. The only USB port that is accessible from inside the case is the USB-C port which is typically used for power, however this port can be used as a normal USB port and the RPi can be powered via the pin header. Therefore I use a USB-A socket to USB-C plug adapter on the USB-C port coupled with a panel mount USB-A extension cable to connect to the IR receiver at the front of the case. For power I installed a 5.5 mm x 2.1 mm jack in the rear of the case and soldered 20 awg wire with pin connectors at the end to the jack. In my case I used two wires for 5 V and two wires for ground and connected all four wires to the pin header. The double wiring is likely overkill but I wanted to make sure I avoided under voltage issues. I recommend using at least 20 awg here for the same reason. This is the only part of the project that requires soldering, if you are totally against soldering you can purchase a 5.5 mm x 2.1 mm jack with prefabbed wiring and crimp prefabbed 20 awg 0.1” header wiring on the ends. If you do this you will likely need to change the diameter of the power jack hole in the rear case, most the prefabbed options I have seen require a larger diameter than 8 mm so it would be easy for you to drill out the hole yourself to accommodate the larger diameter or you can modify the drawings and have Modushop drill a larger hole.

For a power supply you can either use a standard RPi4 power supply with a USB-C to 5.5 mm adapter or another 5V power supply with the appropriate 5.5 mm jack. Your power supply should be at leas 3 A. I have found that RPi4 power supplies work best as they provide a bit more than 5 V to help tolerate voltage sag.

10 mm front panel - single sided machining - 50€ add-on

This option machines a 10 mm aluminum panel from the back side only. The screen is set half way through the panel thickness and there is a hole for the FLIRC IR receiver, mounting holes for the screen and IR receiver are tapped for M2.5 screws so there are no exposed fasteners. Pictures of this panel are shown below. Overall this option looks very nice, one complaint is that due to the thickness of the front panel the top of the display text can be obstructed from view if you are sitting very near to the case and looking down on the screen. If that bothers you it is possible to modify the layout of the text so that it is more centered on the screen or you can look at my option which chamfers the screen opening from the front side at an additional cost.

Recommended hardware:
display mounting screws: M2.5 x 3 mm long
FLIRC mounting screws: M2.5 x 16 mm long w/ 8 mm spacers
USB-C male to USB-A female: Adafruit USB A Socket to USB Type C Plug Adapter
USB panel extension: Adafruit Panel Mount USB Cable - A Male to A Female

View attachment 238642
View attachment 238647
View attachment 238644

10 mm front panel - double sided machining - 70€ add-on

This is the same as the first option but has a 45 deg chamfer around the screen opening to improve viewing angles.

Recommend hardware: same as single sided 10 mm front panel

View attachment 238643

3 mm front panel - 31€ add-on

This option uses all through holes so the machining cost is lower, it does require you to purchase a separate 3 mm front panel. It may be possible to swap out the default 10 mm front panel for a 3 mm front panel at reduced cost. This design has a lot of exposed fasteners due to the through holes but has no issues with viewing angle due to the thinner panel. The IR receiver holes are slightly larger than the display holes so that they can accept M3 screws which match the threading of the Adafruit USB panel extension cable, alternatively you can use M2.5 screw with nuts to keep the hardware consistent.

Recommended hardware:
display mounting screws: M2.5 x 12 mm long
FLIRC mounting screws: M2.5 x 30 mm long w/ 15 mm spacers
nuts: M2.5
USB-C male to USB-A female: Adafruit USB A Socket to USB Type C Plug Adapter
USB panel extension: Adafruit Panel Mount USB Cable - A Male to A Female

View attachment 238646
View attachment 238649

2 mm bottom panel - 30€ add-on

I recommend paying the 5€ for a solid aluminum bottom panel as in my experience the venting gets in the way of the mounting holes. However the additional 25€ machining cost for 4 RPi4 mounting holes is probably not worth it if you can drill 4 decently accurate holes yourself.

Recommended hardware:
RPi4 mounting screws: M2.5 x 16 mm long w/ 10 mm spacers
nuts: M2.5 (as an alternative you can use the top part of aluminum heatsink case which is tapped for M2.5 screws, this is what I used).

View attachment 238645

2 mm back panel - 25€ add-on

This is another area where you may be able to save money. For example you could leave the back panel completely off to save on machining costs. I’ve drilled / hand filed similar panels myself which is not fun but certainly can be done at home and the rear will likely not be exposed. This panel has cutouts for RPi4 USB ports and ethernet port. There is also an 8 mm diameter hole for a 5.5 mm barrel connector.

View attachment 238648

For reference at the time of writing (12/2021) here are prices in USD including priority shipping to my location (Detroit, MI US) for the three basic case options including front panel, bottom panel and rear panel machining.

3 mm front panel: $171
10 mm front panel, one sided machining: $189
10 mm front panel, double sided machining: $212

USB Wifi Dongle

I have been using RPis for a while as squeezelite end points and noticed that if I use the built in wifi I get the occasional drop out. As a result I switched to a more powerful USB wifi adapter. This option may not be the easiest as it does require you to install a driver but it seems to work really well. Instructions below walk through how to install the driver and change the wifi setup to use this adapter.

Do this while connected to LAN!

Instructions shown here were originally found here:
Rich (BB code):
sudo apt install -y dkms git build-essential
mkdir ~/src
cd ~/src
git clone https://github.com/morrownr/8821au-20210708.git
cd 8821au-20210708
./ARM64_RPI.sh
sudo ./install-driver.sh
sudo reboot

Run iwconfig from terminal and identify the name of your adapter. If you are using the same model as me it should be something like wlx984827e1c95c.

Rich (BB code):
sudo cp /etc/netplan/50-cloud-init.yaml /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg
sudo nano /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg

Rich (BB code):
wifis:
        wlx984827e1c95c:
            access-points:
                networkname:
                    password: passed
            dhcp4: true
            optional: true

I also comment out the existing wlan0 entry so that only the USB adapter is used.

Rich (BB code):
sudo cloud-init clean
sudo cloud-init init
sudo reboot

That is it! Hope everyone finds this useful and if you have any questions or comments please let me know!

Michael
Hello, i have an big Problem to install Flirc on an Raspberry 5 and Ubuntu 23.1

I used that Instruction:
I have simmilar problem using curl instaling version on Ubuntu 22.04 64bit. Script successful executed, but nothing was installed. (I think the repo is broken or unavailable)


Then I tryed manual install from sources with success :


1. https://flirc.com/ubuntu-software-installation-guide - download Latest Archive 64bit


2. Unzip and copy flirc_util and Flirc files to /usr/local/bin/


3 In directory /etc/udev/rules.d create new file and name it 99-flirc.rules. Paste bellow content:


# Flirc Devices


# Bootloader
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="20a0", ATTR{idProduct}=="0000", MODE="0666"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="20a0", ATTR{idProduct}=="0002", MODE="0666"
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="20a0", ATTRS{idProduct}=="0005", MODE="0666"


# Flirc Application
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="20a0", ATTR{idProduct}=="0001", MODE="0666"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="20a0", ATTR{idProduct}=="0004", MODE="0666"
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="20a0", ATTRS{idProduct}=="0006", MODE="0666"


4. Restart computer


5.When I try to start Flirc I got libreadline.so.7 missing dependencies error. In Ubuntu 22.04 is now version libreadline.so.8 installed so I crate symlink :


sudo ln -s /lib/x86_64-linux-gnu/libreadline.so.8 /lib/x86_64-linux-gnu/libreadline.so.7


6. Install other dependencies. (not all will install, but don't afraid and continue)


sudo apt install libhidapi-hidraw0


sudo apt install libqt5core5a

sudo apt install libqt5network5
sudo apt install libqt5xml5
sudo apt install libqt5xmlpatterns5
sudo apt install libhid
sudo apt install qt5-qtbase
sudo apt install qt5-qtsvg
sudo apt install hidapi

7. Start configuration program using sudo command (without sudo program starting, but throw errors) :


sudo Flirc


But already after Reboot i cant start Flirc i see the Files in /usr/local/bin/ but after i type "sudo Flirc" i get this Error dont't know why!

frunse@Camilla:/usr/local/bin$ sudo ./Flirc
[sudo] password for frunse:
sudo: unable to execute ./Flirc: No such file or directory
frunse@Camilla:/usr/local/bin$

I used the Package here for Arm:

https://flirc.com/ubuntu-software-installation-guide

May be i need to use that Archive for 64Bit but not sure why there is an Arm Archive i will try that as next

Used this Package but also Error:

frunse@Camilla:/usr/local/bin$ sudo ./Flirc
./Flirc: 1: Syntax error: "(" unexpected
frunse@Camilla:/usr/local/bin$

So don't know how to deal with.

Robert
 
Last edited:
OP
M

mdsimon2

Major Contributor
Forum Donor
Joined
Oct 20, 2020
Messages
2,515
Likes
3,371
Location
Detroit, MI
Hello, i have an big Problem to install Flirc on an Raspberry 5 and Ubuntu 23.1

I used that Instruction:
I have simmilar problem using curl instaling version on Ubuntu 22.04 64bit. Script successful executed, but nothing was installed. (I think the repo is broken or unavailable)


Then I tryed manual install from sources with success :


1. https://flirc.com/ubuntu-software-installation-guide - download Latest Archive 64bit


2. Unzip and copy flirc_util and Flirc files to /usr/local/bin/


3 In directory /etc/udev/rules.d create new file and name it 99-flirc.rules. Paste bellow content:


# Flirc Devices


# Bootloader
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="20a0", ATTR{idProduct}=="0000", MODE="0666"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="20a0", ATTR{idProduct}=="0002", MODE="0666"
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="20a0", ATTRS{idProduct}=="0005", MODE="0666"


# Flirc Application
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="20a0", ATTR{idProduct}=="0001", MODE="0666"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="20a0", ATTR{idProduct}=="0004", MODE="0666"
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="20a0", ATTRS{idProduct}=="0006", MODE="0666"


4. Restart computer


5.When I try to start Flirc I got libreadline.so.7 missing dependencies error. In Ubuntu 22.04 is now version libreadline.so.8 installed so I crate symlink :


sudo ln -s /lib/x86_64-linux-gnu/libreadline.so.8 /lib/x86_64-linux-gnu/libreadline.so.7


6. Install other dependencies. (not all will install, but don't afraid and continue)


sudo apt install libhidapi-hidraw0


sudo apt install libqt5core5a

sudo apt install libqt5network5
sudo apt install libqt5xml5
sudo apt install libqt5xmlpatterns5
sudo apt install libhid
sudo apt install qt5-qtbase
sudo apt install qt5-qtsvg
sudo apt install hidapi

7. Start configuration program using sudo command (without sudo program starting, but throw errors) :


sudo Flirc


But already after Reboot i cant start Flirc i see the Files in /usr/local/bin/ but after i type "sudo Flirc" i get this Error dont't know why!

frunse@Camilla:/usr/local/bin$ sudo ./Flirc
[sudo] password for frunse:
sudo: unable to execute ./Flirc: No such file or directory
frunse@Camilla:/usr/local/bin$

I used the Package here for Arm:

https://flirc.com/ubuntu-software-installation-guide

May be i need to use that Archive for 64Bit but not sure why there is an Arm Archive i will try that as next

Used this Package but also Error:

frunse@Camilla:/usr/local/bin$ sudo ./Flirc
./Flirc: 1: Syntax error: "(" unexpected
frunse@Camilla:/usr/local/bin$

So don't know how to deal with.

Robert

FLIRC software is only needed to set the remote button mapping. I’ve always done this on a separate Mac or PC and have no experience installing / using the software on Linux.

Michael
 

Frunse

Active Member
Joined
Feb 21, 2024
Messages
132
Likes
20
FLIRC software is only needed to set the remote button mapping. I’ve always done this on a separate Mac or PC and have no experience installing / using the software on Linux.

Michael
Ok so what i need than to Use it?
I made the Mapping also on Windows but guessed that i need to install that Package to use it on Linux.
I am abit confused now???

How to work with it?

I used youre Advice:

FLIRC USB IR Receiver

A FLIRC IR receiver is an easy way to add IR volume control for around $20. I’ve created a python script so setting this up is very easy. The first step is to download the FLIRC software on your main computer and connect the FLIRC receiver to that computer. Use the software to pair your remote so that volume up is KEY UP, volume down is KEY DOWN, mute is KEY LEFT and source change is KEY RIGHT.

Pressing KEY LEFT will cause CamillaDSP to mute, if you switch configurations this mute will stay set. You can change volume up and down while muted, the mute will only be removed by either pressing KEY LEFT again or unmuting in the GUI.

Install evdev.



Rich (BB code):

sudo apt install python3-evdev

But didn't Understand this:

"Copy / paste python the FLIRC python script attached to this post to ~/flirc.py using nano."

Where i need it to copy it to "/home/frunse/" or elsewhere or it isn't importand where it is?

Robert
 
OP
M

mdsimon2

Major Contributor
Forum Donor
Joined
Oct 20, 2020
Messages
2,515
Likes
3,371
Location
Detroit, MI
The first step is to download the FLIRC software on your main computer and connect the FLIRC receiver to that computer.

I should probably clarify that I mean a separate Mac or PC here. You do not need to install anything on the pi other than evdev. The instructions are meant to tell you exactly what you need to do and nothing else should be required.

But didn't Understand this:

"Copy / paste python the FLIRC python script attached to this post to ~/flirc.py using nano."

Where i need it to copy it to "/home/frunse/" or elsewhere or it isn't importand where it is?

The instructions have you create a file in /home/frunse/ called flirc.py using nano. Download the zipped flirc.py attached to the tutorial and copy the text from that file in to flirc.py using nano. The instructions explaining this are shown below.

IMG_9114.jpeg


This is another area I could probably improve the wording on.

Michael
 

somebodyelse

Major Contributor
Joined
Dec 5, 2018
Messages
3,760
Likes
3,067
Some background explanation for anyone new to linux:
  • nano is a command line text editor, often suggested for those new to linux because it is simpler than vi.
  • ~ is a short notation for the current user's home directory.
  • File names are case sensitive, so flirc.py and Flirc.py are NOT interchangeable, unlike in Windows.
 
  • Like
Reactions: MCH

Frunse

Active Member
Joined
Feb 21, 2024
Messages
132
Likes
20
I should probably clarify that I mean a separate Mac or PC here. You do not need to install anything on the pi other than evdev. The instructions are meant to tell you exactly what you need to do and nothing else should be required.



The instructions have you create a file in /home/frunse/ called flirc.py using nano. Download the zipped flirc.py attached to the tutorial and copy the text from that file in to flirc.py using nano. The instructions explaining this are shown below.

View attachment 361057

This is another area I could probably improve the wording on.

Michael
did all but still Remote didn't work for me how i can debug if the flirc.py is working
I used the Flirc Software on Windows and synced an simple Remote with it like Apple Remote.
But Volume didn't work with Up and down Keys.

I have changed only this :

flirc=evdev.InputDevice('/dev/input/by-id/usb-flirc.tv_flirc_00A07E865030534E532E3120FF0E3010-if01-event-kbd')

frunse@Camilla:~$ lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 006: ID 07fd:000c Mark of the Unicorn UltraLite-mk5
Bus 003 Device 005: ID 0451:8027 Texas Instruments, Inc.
Bus 003 Device 008: ID 20a0:0006 Clay Logic flirc
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
frunse@Camilla:~$

USB Flirc is there

frunse@Camilla:~$ ls /dev/input/by-id/
usb-flirc.tv_flirc_00A07E865030534E532E3120FF0E3010-if01-event-kbd

So not sure what i need to check else now.

The Dongle is put in an Blue USB 3 and the config.txt got the lines:
"
# Config settings specific to arm64
arm_64bit=1
dtoverlay=dwc2,dr_mode=host
"

Robert
 

Attachments

  • Flirc Setup Remote.jpg
    Flirc Setup Remote.jpg
    90.6 KB · Views: 11
Last edited:

Frunse

Active Member
Joined
Feb 21, 2024
Messages
132
Likes
20
Some background explanation for anyone new to linux:
  • nano is a command line text editor, often suggested for those new to linux because it is simpler than vi.
  • ~ is a short notation for the current user's home directory.
  • File names are case sensitive, so flirc.py and Flirc.py are NOT interchangeable, unlike in Windows.
I used nano already offten so no problem here. But never used Python so i am abit new there ;)
and i need to learn that ~/... means home directory /home/frunse/ in my Case
 
OP
M

mdsimon2

Major Contributor
Forum Donor
Joined
Oct 20, 2020
Messages
2,515
Likes
3,371
Location
Detroit, MI
I believe @Wirrunna is using a RPi5 with the FLIRC, I don’t remember him mentioning any issues with setting up the FLIRC but I could be wrong.

For troubleshooting, I’d disable the flirc service (assuming you’ve already created / enabled it) and run flirc.py directly from the command line using “python3 /home/frunse/flirc.py”. If just running that gives you an error we can start from there.

Otherwise, when troubleshooting I usually add print statements to the routine to show when commands are being received by the flirc. Unfortunately I am away from home for about a week, so can’t be provide more detailed help until I get back.

Michael
 

Frunse

Active Member
Joined
Feb 21, 2024
Messages
132
Likes
20
I believe @Wirrunna is using a RPi5 with the FLIRC, I don’t remember him mentioning any issues with setting up the FLIRC but I could be wrong.

For troubleshooting, I’d disable the flirc service (assuming you’ve already created / enabled it) and run flirc.py directly from the command line using “python3 /home/frunse/flirc.py”. If just running that gives you an error we can start from there.

Otherwise, when troubleshooting I usually add print statements to the routine to show when commands are being received by the flirc. Unfortunately I am away from home for about a week, so can’t be provide more detailed help until I get back.

Michael
Dammm got permission denied error if itry this:
python3 /home/frunse/flirc.py

frunse@Camilla:~$ python3 /home/frunse/flirc.py
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/evdev/device.py", line 125, in __init__
fd = os.open(dev, os.O_RDWR | os.O_NONBLOCK)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: '/dev/input/by-id/usb-flirc.tv_flirc_00A07E865030534E532E3120FF0E3010-if01-event-kbd'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/frunse/flirc.py", line 12, in <module>
flirc=evdev.InputDevice('/dev/input/by-id/usb-flirc.tv_flirc_00A07E865030534E532E3120FF0E3010-if01-event-kbd')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/evdev/device.py", line 127, in __init__
fd = os.open(dev, os.O_RDONLY | os.O_NONBLOCK)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: '/dev/input/by-id/usb-flirc.tv_flirc_00A07E865030534E532E3120FF0E3010-if01-event-kbd'

If i start it with Sudo it works the Remote too!!

may be
chmod 777 flirc.py???

this wasn't helping at all so dont know what the Problem is

sudo nano /lib/systemd/system/flirc.service

[Unit]
After=syslog.target
StartLimitIntervalSec=10
StartLimitBurst=10

[Service]
Type=simple
User=frunse
WorkingDirectory=~
ExecStart=python3 flirc.py
Restart=always
RestartSec=1
StandardOutput=journal
StandardError=journal
SyslogIdentifier=flirc

[Install]
WantedBy=multi-user.target

User frunse must be right there

but i try to change

ExecStart=python3 flirc.py
to
ExecStart=sudo python3 flirc.py

didn't help :(

frunse@Camilla:~$ sudo systemctl status flirc.service
● flirc.service
Loaded: loaded (/lib/systemd/system/flirc.service; disabled; preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Wed 2024-04-03 14:08:15 CEST; 406ms ago
Process: 4621 ExecStart=/usr/bin/python3 /home/frunse/flirc.py (code=exited, status=1/FAILURE)
Main PID: 4621 (code=exited, status=1/FAILURE)
CPU: 241ms
frunse@Camilla:~$

Direct after Boot:

frunse@Camilla:~$ sudo systemctl status flirc.service
○ flirc.service
Loaded: loaded (/lib/systemd/system/flirc.service; disabled; preset: enabled)
Active: inactive (dead)
frunse@Camilla:~$

Edit the flirc.service to this and it works now \o/
"
[Unit]
After=syslog.target
StartLimitIntervalSec=10
StartLimitBurst=10

[Service]
Type=simple
User=root
WorkingDirectory=/home/frunse/
ExecStart=/usr/bin/python3 /home/frunse/flirc.py
Restart=always
RestartSec=1
StandardOutput=journal
StandardError=journal
SyslogIdentifier=flirc

[Install]
WantedBy=multi-user.target
"

Damm after boot again dont work, man iam confused now......like offten ;)

???
after :
sudo systemctl stop flirc.service
frunse@Camilla:~$ sudo systemctl start flirc.service

worked again ????

But not after an new boot
without restarting the Service
like this:
frunse@Camilla:~$ sudo systemctl restart flirc.service
[sudo] password for frunse:
frunse@Camilla:~$

The question is why i need to be superuser to use the flirc USB Dongle????

frunse@Camilla:/dev/input/by-id$ ls
usb-flirc.tv_flirc_00A07E865030534E532E3120FF0E3010-if01-event-kbd
frunse@Camilla:/dev/input/by-id$ stat usb-flirc.tv_flirc_00A07E865030534E532E3120FF0E3010-if01-event-kbd
File: usb-flirc.tv_flirc_00A07E865030534E532E3120FF0E3010-if01-event-kbd -> ../event3
Size: 9 Blocks: 0 IO Block: 4096 symbolic link
Device: 0,5 Inode: 2302 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2024-04-03 14:40:33.060951589 +0200
Modify: 2024-04-03 14:39:15.839999998 +0200
Change: 2024-04-03 14:39:15.839999998 +0200
Birth: 2024-04-03 14:39:15.839999998 +0200
frunse@Camilla:/dev/input/by-id$

so this USB Device is in the root group that why!

can i add user frunse to that group root and thats it did not help at all!
But i gues i have some secutity problems than right? All People from Net could access thrue my user to that PI right?

Something an Expert need to deal with i guess

frunse@Camilla:~$ systemctl show flirc.service -p Conflicts
Conflicts=shutdown.target
frunse@Camilla:~$

At the End i got it!!!

You need to use User=root

and use this to aktivate the service!!!


sudo systemctl enable flirc --no-ask-password

on RPI5 and Ubuntu 23.10


Robert
 
Last edited:

Frunse

Active Member
Joined
Feb 21, 2024
Messages
132
Likes
20
Hello, is there an easy way to see what kind of keys i pressed if i use the skip Remote or anything like this, i have much more Keys.

The left and right key i need to use for Input switch between I2S
But i have 2 more buttons that i can Use for Mute and Config switch but how i can identify them??? (One Butten is "Mute" and one Play/Pause on my little cheep Remote)

$ python3 -m evdev.evtest

this didn't show me anything if i hit an Button ;(
the Flirc is on event3

frunse@Camilla:~$ sudo python3 -m evdev.evtest
ID Device Name Phys Uniq
---------------------------------------------------------------------------------------------------------------------------------
0 /dev/input/event0 pwr_button gpio-keys/input0
1 /dev/input/event1 vc4-hdmi-0 vc4-hdmi-0/input0
2 /dev/input/event2 vc4-hdmi-1 vc4-hdmi-1/input0
3 /dev/input/event3 flirc.tv flirc Keyboard usb-xhci-hcd.1-1/input1 00A07E865030534E532E3120FF0E3010

Select devices [0-3]: 3
Listening for events (press ctrl-c to exit) ...

Or i need to be local on my RPI5 and this isn't work remotly on Terminal?
even local on Terminal didn't show me anything :(
Need more Info how to use this i guess

Found this from Melomane13 i hope this will work ;)

##### python -m evdev.evtest to get keys
#####
# KEY_VOLUMEUP
# KEY_VOLUMEDOWN
# KEY_MIN_INTERESTING', 'KEY_MUTE
# KEY_PLAYPAUSE
# KEY_PREVIOUSSONG
# KEY_NEXTSONG
# KEY_POWER
# KEY_UP ## Treble+
# KEY_DOWN ## Treble-
# KEY_RIGHT ## Bass+
# KEY_LEFT ## Bass-
# KEY_ENTER ## Bypass tones
# KEY_BACK ## Select Configs "_"
# KEY_HOMEPAGE ## Select Configs "|"

Robert
 
Last edited:

Frunse

Active Member
Joined
Feb 21, 2024
Messages
132
Likes
20
One Other Problem i have is on CamillaDSP:

In Logfile i get every Time this but not sure why:

2024-04-03 16:56:40.110353 INFO [src/alsadevice.rs:648] Capture device supports rate adjust
2024-04-03 16:56:40.137988 INFO [src/alsadevice.rs:142] PB: Starting playback from Prepared state
2024-04-03 16:56:41.326984 ERROR [src/bin.rs:286] Playback error: ALSA function 'snd_pcm_open' failed with error 'ENODEV: No such device'
2024-04-03 16:56:41.327466 INFO [src/processing.rs:37] Playback thread has already stopped.
2024-04-03 16:56:41.789626 ERROR [src/bin.rs:286] Playback error: ALSA function 'snd_pcm_open' failed with error 'ENODEV: No such device'
2024-04-03 16:56:41.790034 INFO [src/processing.rs:37] Playback thread has already stopped.
2024-04-03 16:56:42.346612 INFO [src/alsadevice.rs:142] PB: Starting playback from Prepared state

snd_pcm_open ???

What could this be

Is this because the Motu UL mk5 need a bit off time to sync or anything like this?

Robert
 
Last edited:

melomane13

Member
Joined
Jul 24, 2023
Messages
99
Likes
70
Location
France
Hello, is there an easy way to see what kind of keys i pressed if i use the skip Remote or anything like this, i have much more Keys.

The left and right key i need to use for Input switch between I2S
But i have 2 more buttons that i can Use for Mute and Config switch but how i can identify them??? (One Butten is "Mute" and one Play/Pause on my little cheep Remote)

$ python3 -m evdev.evtest

this didn't show me anything if i hit an Button ;(
the Flirc is on event3

frunse@Camilla:~$ sudo python3 -m evdev.evtest
ID Device Name Phys Uniq
---------------------------------------------------------------------------------------------------------------------------------
0 /dev/input/event0 pwr_button gpio-keys/input0
1 /dev/input/event1 vc4-hdmi-0 vc4-hdmi-0/input0
2 /dev/input/event2 vc4-hdmi-1 vc4-hdmi-1/input0
3 /dev/input/event3 flirc.tv flirc Keyboard usb-xhci-hcd.1-1/input1 00A07E865030534E532E3120FF0E3010

Select devices [0-3]: 3
Listening for events (press ctrl-c to exit) ...

Or i need to be local on my RPI5 and this isn't work remotly on Terminal?

Found this from Melomane13 i hope this will work ;)

##### python -m evdev.evtest to get keys
#####
# KEY_VOLUMEUP
# KEY_VOLUMEDOWN
# KEY_MIN_INTERESTING', 'KEY_MUTE
# KEY_PLAYPAUSE
# KEY_PREVIOUSSONG
# KEY_NEXTSONG
# KEY_POWER
# KEY_UP ## Treble+
# KEY_DOWN ## Treble-
# KEY_RIGHT ## Bass+
# KEY_LEFT ## Bass-
# KEY_ENTER ## Bypass tones
# KEY_BACK ## Select Configs "_"
# KEY_HOMEPAGE ## Select Configs "|"

Robert
when you use python3 -m evdev.evtest you must first STOP flirc.py , because it block message from receptor ( flirc.grab() in script)
so, sudo systemctl stop flirc.service , after you can find yours keys with evdev.evtest
dont use "my" list key, because there are only ok with my script and generic multimedia remote, not sure you have the same
 
Last edited:

Frunse

Active Member
Joined
Feb 21, 2024
Messages
132
Likes
20
Thank you now it works but:

i scan an Button it is this:
'KEY_MIN_INTERESTING', 'KEY_MUTE'
i put it in the flirc.py Script instead of KEY_RIGHT but it didn't work ???

now i will try KEY_RIGHT again if its work than ....

Strange things happen:

KEY_RIGHT works, also KEY_SELECT for Mute

But not

'KEY_MIN_INTERESTING' or 'KEY_MUTE'

This are all scanned Keys on my Remote:

Select devices [0-5]: 5
Listening for events (press ctrl-c to exit) ...
time 1712162823.782942 type 4 (EV_MSC), code 4 (MSC_SCAN), value 786498
time 1712162823.782942 type 1 (EV_KEY), code 103 (KEY_UP), value 1
time 1712162823.782942 --------- SYN_REPORT --------
time 1712162823.974961 type 4 (EV_MSC), code 4 (MSC_SCAN), value 786498
time 1712162823.974961 type 1 (EV_KEY), code 103 (KEY_UP), value 0
time 1712162823.974961 --------- SYN_REPORT --------
time 1712162826.695103 type 4 (EV_MSC), code 4 (MSC_SCAN), value 786499
time 1712162826.695103 type 1 (EV_KEY), code 108 (KEY_DOWN), value 1
time 1712162826.695103 --------- SYN_REPORT --------
time 1712162826.759118 type 4 (EV_MSC), code 4 (MSC_SCAN), value 786499
time 1712162826.759118 type 1 (EV_KEY), code 108 (KEY_DOWN), value 0
time 1712162826.759118 --------- SYN_REPORT --------
time 1712162828.583215 type 4 (EV_MSC), code 4 (MSC_SCAN), value 786501
time 1712162828.583215 type 1 (EV_KEY), code 106 (KEY_RIGHT), value 1
time 1712162828.583215 --------- SYN_REPORT --------
time 1712162828.775225 type 4 (EV_MSC), code 4 (MSC_SCAN), value 786501
time 1712162828.775225 type 1 (EV_KEY), code 106 (KEY_RIGHT), value 0
time 1712162828.775225 --------- SYN_REPORT --------
time 1712162829.83128 type 4 (EV_MSC), code 4 (MSC_SCAN), value 786500
time 1712162829.83128 type 1 (EV_KEY), code 105 (KEY_LEFT), value 1
time 1712162829.83128 --------- SYN_REPORT --------
time 1712162830.023297 type 4 (EV_MSC), code 4 (MSC_SCAN), value 786500
time 1712162830.023297 type 1 (EV_KEY), code 105 (KEY_LEFT), value 0
time 1712162830.023297 --------- SYN_REPORT --------
time 1712162832.263417 type 4 (EV_MSC), code 4 (MSC_SCAN), value 786497
time 1712162832.263417 type 1 (EV_KEY), code 353 (KEY_SELECT), value 1
time 1712162832.263417 --------- SYN_REPORT --------
time 1712162832.359423 type 4 (EV_MSC), code 4 (MSC_SCAN), value 786497
time 1712162832.359423 type 1 (EV_KEY), code 353 (KEY_SELECT), value 0
time 1712162832.359423 --------- SYN_REPORT --------
time 1712162833.351487 type 4 (EV_MSC), code 4 (MSC_SCAN), value 786496
time 1712162833.351487 type 1 (EV_KEY), code 139 (KEY_MENU), value 1
time 1712162833.351487 --------- SYN_REPORT --------
time 1712162833.543494 type 4 (EV_MSC), code 4 (MSC_SCAN), value 786496
time 1712162833.543494 type 1 (EV_KEY), code 139 (KEY_MENU), value 0
time 1712162833.543494 --------- SYN_REPORT --------
time 1712162834.535552 type 4 (EV_MSC), code 4 (MSC_SCAN), value 786658
time 1712162834.535552 type 1 (EV_KEY), code 113 (['KEY_MIN_INTERESTING', 'KEY_MUTE']), value 1
time 1712162834.535552 --------- SYN_REPORT --------
time 1712162834.663552 type 4 (EV_MSC), code 4 (MSC_SCAN), value 786658
time 1712162834.663552 type 1 (EV_KEY), code 113 (['KEY_MIN_INTERESTING', 'KEY_MUTE']), value 0
time 1712162834.663552 --------- SYN_REPORT --------

I gues i need to bind this key to an other function on Flirc Software ;)

Robert
 
Last edited:
Top Bottom