---
name: "xmode2"
section: "1"
platform: "linux"
package: "lirc"
version: "1:0.10.2-6"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/xmode2"
---

# xmode2(1)

Show the pulse/space length of infrared signals

## NAME

xmode2 - Show the pulse/space length of infrared signals

## SYNOPSIS

**xmode2** \[*options*\]

## DESCRIPTION

The main purpose of **xmode2** is to check operation of your home-brew LIRC receiver hardware and to see the IR waveform of the remote controller without an expensive oscilloscope. Very useful for debugging. Of course this program won't work with hardware that decodes the signals itself like e.g. TV cards or the Irman i. e., it only works with LIRC\_MODE\_MODE2 type drivers.

**xmode2** prints a simple graphics display of the pulse/space lengths. It accepts a few commands including time base changes; see the xmode2 -h output.

[lirc-lsplugins(1)](/lirc-lsplugins/1.md) allows checking if a driver is a LIRC\_MODE2 type one.

## OPTIONS

- **-h** **--help**

  display usage summary

- **-v** **--version**

  display version

- **-d** **--device**=*device*

  read from given device

- **-H** **--driver**=*driver*

  use given driver

- **-m** **--mode**

  enable alternative display mode

- **-r** **--raw**

  access device directly

## RUNNING AS ROOT

In many cases xmode2 needs to run as root to access devices not available to regular users. On the other hand, running as root creates problems such as log files owned by root, security concerns etc.

In order to cope with this, xmode2 by default drops root privileges after opening the input device. This support is based on that root permissions are acquired using sudo(1) e. g., using

```
        $ sudo xmode2 --driver default --device /dev/lirc0
```

If not using sudo, the same behaviour could be accomplished using the SUDO\_USER environment variable e. g.,

```
        # SUDO_USER=$LOGNAME xmode2 --raw /dev/lirc0
```

The --keep-root option will make xmode2 keep it's root privileges for the complete run.

## DRIVER LOADING

Drivers are loaded dynamically. The search path used for this is determined by (falling priority):

- \-

  The --plugindir option.

- \-

  The 'plugindir' entry in  the \[lircd\] section of the lirc\_options.conf file.

- \-

  The environment variable LIRC\_PLUGINDIR.

- \-

  A hardcoded default (usually /usr/lib\[64\]/lirc/plugins).

## FILES

- **~/.cache/xmode2.log**

  Debug output. Setting the XDG\_CACHE\_HOME environment variable relocates this file to $XDG\_CACHE\_HOME/mode2.log

## SEE ALSO

[mode2(1)](/mode2/1.md)\
 [lirc-lsplugins(1)](/lirc-lsplugins/1.md)

The documentation for **lirc** is maintained as html pages. They are located under html/ in the documentation directory.
