iDiD Debian player master documentation

This is a technical documentation of iDiD Debian 2021/2022.

Content

Technical information

Installation instructions

Installation status

Basic usage
    4.1 Keyboard shortcuts
    4.2 Power commands (run in terminal) 
    4.3 Stopping and starting iDiD (run in terminal) 

Locale settings

Network connections
    6.1 Static ip

Connecting to Wi-Fi

Screensettings
    8.1 Rotation
    8.2 Setting resolution
    8.3 Configuring videowall settings
        8.3.1 With virtual display (intel)
        8.3.2 Configuring obconf for videowalls

Setting ntp servers

10 Services
    10.1 Managing services
    10.2 Keepalive
    
10.3 Updater
    10.4 Screensettings
    10.5 Teamviewer keepalive
    10.6 Network check
    10.7 Unattended upgrades
    10.8 Wifi reconnect

11 Firewall
        11.1 Allow incoming traffic from port
        11.2 Deny incoming traffic from port
        11.3 Remove rule

12 Touch settings


1 Technical information

  • Os version: Debian buster (10)
  • Window manager: openbox
  • Display manager: lightdm
  • Default text editor: gedit
  • Default firewall: ufw
  • Network manager: network-manager-gnome
  • Default time zone: Europe/Helsinki (wintertime GMT+2, summertime GMT+3)
  • Default keyboard layout: fi
  • Default Debian package mirror: nic.funet.fi
  • iDiD repository: apt.idid.fi
  • Default username: idid-player
  • Default password: iDiDiDiD (Note: the password will change when iDiD is registered)
  • Minimum specs: 20gb of disk space, 1gb of ram, x86_amd64 single core processor

2 Installation instructions

NOTE: the following instructions will overwrite all data on the usb drive and the disk the operating system is installed on.

  1. Download amd64 netinst image from https://www.debian.org/releases/buster/debian-installer/.
  2. Burn iso to usb or start install in a vm manager
    1. Burning image to usb
    2. Configuring a vm
      • Select the Debian iso as the installation media, configure the vm to have at least 1gb of memory, 1 cpu core and 20gb of disk space.
  3. Run the installer
    1. Connect the device to a network (preferably one with dhcp).
    2. Select “Advanced options”
    3. Select “Automated install”
    4. When the installer prompts for the “Location of initial preconfiguration file“ enter http://apt.idid.fi and select continue. (the installer uses US keyboard layout at this point)
  4. Disk formatting and grub
    1. If the installer prompts you to format the disk and select “Guided - use entire disk”.
    2. If the installer prompts you to select the disk to install grub on it is usually safe to assume the correct disk is /dev/sda. (the installer uses Finnish keyboard layout by default at this point shift+7 will type /).
  5. After os installation the image will reboot and install teamviewer and iDiD. The installation is complete when iDiD displays the slides “Soita tai lähetä sähköpostia osoitteeseen support@idid.fi +358 10 281 4350” and “Please contact us via email or call us. support@idid.fi +358 10 281 4350”.

3 Installation status

When the os is installing ctrl+alt+f4 will display a console view of the installation.

When the os has been installed but iDiD installer is still running status can be checked by opening a terminal window (ctrl+alt+t) and running sudo systemctl status -u run-setup -f .

4 Basic usage

4.1 Keyboard shortcuts

  1. Refresh iDiD: ctrl+shift+5
  2. Disable iDiD kiosk mode: ctrl+shift+9
  3. Open a terminal window: ctrl+alt+t

4.2 Power commands (run in terminal)

  1. Power off: shutdown now
  2. Reboot: reboot

4.3 Stopping and starting iDiD (run in terminal)

  1. Stop iDiD: stop
  2. Start iDiD: start

5 Locale settings

  1. Change keyboard layout: run sudo dpkg-reconfigure keyboard-configuration in the terminal
  2. Change time zone: run sudo dpkg-reconfigure tzdata

6 Network connections

IP-address

  1. Type in terminal: ip address
  2. IP information is printed on the screen.

6.1 Static ip

  1. Select connection and press the settings cog.
  2. Select IPv4 Settings and select Manual from the Method dropdown.
  3. Press the Add button and input the ip address, Netmask and Gateway. Note: Netmask can be either a cidr value or the full subnetmask but cirdr value is the only value displayed. For example, typing 255.255.255.0 will result the Netmask field displaying 24.
  4. Input DNS server(s) in the DNS servers field. Use commas to separate addresses.

7 Connecting to Wi-Fi

  1. Press the plus button.
  2. Choose Wi-Fi and press Create.
  3. Input the SSID of the network.
    Note: In some cases, choosing the network band is necessary. The recommended band is B/G (2.4 GHz).
  4. Select Wi-Fi Security if the connection has security enabled.
    Note: Most Wi-Fi networks use WPA & WPA2 Personal
  5. Input the password and press save.
  6. If the network is hidden run: 
    nmcli con mod "Wi-Fi connection 1" 802-11-wireless.hidden yes

8 Screensettings

To edit screensettings run gedit screensettings in the terminal.

8.1 Rotation

Remove # from the start of the line that contains the output and change normal to the correct rotation. Possible rotations: left, right, normal, and inverted. 

For example, the following configuration rotates the screen connected to HDMI1 90° and HDMI2 270°.

8.2 Setting resolution

To set the outputs to send fullhd signal remove # from line “#xrandr --newmode FullHD 138.5 1920 1968 2000 2080 1080 1083 1088 1111 +HSync -VSync” to define a new resolution and from the start of the line that contains the output.

For example, the following configuration outputs fullhd signal from HDMI1 and HDMI2. 

Rotation can also be set by replacing normal with left, right or inverted.

After editing the file press save and reboot by running reboot in terminal.

8.3. Configuring videowall settings

Note: replace output names with the corresponding display names from xrandr list (run xrandr command in terminal). Obconf also needs to configured for videowall to work correctly.

8.3.1 With virtual display (intel):

2 landscape screens side by side

#!/bin/bash
xrandr --newmode "DoubleFullHD" 345.02 3840 4080 4496 5152 1080 1081 1084 1118 -HSync +Vsync
xrandr --newmode "FullHD" 138.5 1920 1968 2000 2080 1080 1083 1088 1111 +HSync -VSync
xrandr --addmode VIRTUAL1 "DoubleFullHD"
xrandr --addmode HDMI1 "FullHD"
xrandr --addmode HDMI2 "FullHD"
xrandr --output VIRTUAL1 --primary --mode DoubleFullHD --pos 0x0
xrandr --output HDMI1 --mode FullHD --rotate normal --pos 0x0
xrandr --output HDMI2 --mode FullHD --rotate normal --pos 1920x0

2 landscape screens stacked

#!/bin/bash
xrandr --newmode "DoubleFullHD" 345.02 3840 4080 4496 5152 1080 1081 1084 1118 -HSync +Vsync
xrandr --newmode "FullHD" 138.5 1920 1968 2000 2080 1080 1083 1088 1111 +HSync -VSync
xrandr --addmode VIRTUAL1 "DoubleFullHD"
xrandr --addmode HDMI1 "FullHD"
xrandr --addmode HDMI2 "FullHD"
xrandr --output VIRTUAL1 --primary --mode DoubleFullHD --pos 0x0
xrandr --output HDMI1 --mode FullHD --rotate normal --pos 0x0
xrandr --output HDMI2 --mode FullHD --rotate normal --pos 0x1080

2 portrait screens side by side

#!/bin/bash
xrandr --newmode "DoubleFullHD" 354.80 2160 2328 2568 2976 1920 1921 1924 1987 -HSync +Vsync
xrandr --newmode "FullHD" 138.5 1920 1968 2000 2080 1080 1083 1088 1111 +HSync -VSync
xrandr --addmode VIRTUAL1 "DoubleFullHD"
xrandr --addmode HDMI1 "FullHD"
xrandr --addmode HDMI2 "FullHD"
xrandr --output VIRTUAL1 --primary --mode DoubleFullHD --pos 0x0
xrandr --output HDMI1 --mode FullHD --rotate left --pos 0x0
xrandr --output HDMI2 --mode FullHD --rotate left --pos 1080x0

3 landscape screens side by side

#!/bin/bash
xrandr --newmode "Combo" 519.25 5760 6128 6744 7728 1080 1083 1093 1120 -hsync +vsync
xrandr --newmode "FullHD" 138.5 1920 1968 2000 2080 1080 1083 1088 1111 +HSync -VSync
xrandr --addmode VIRTUAL1 "Combo"
xrandr --addmode HDMI1 "FullHD"
xrandr --addmode HDMI2 "FullHD"
xrandr --addmode HDMI3 "FullHD"
xrandr --output VIRTUAL1 --mode Combo --rotate normal --pos 0x0 –primary
xrandr --output HDMI1 --mode FullHD --rotate normal --pos 0x0
xrandr --output HDMI2 --mode FullHD --rotate normal --pos 1920x0
xrandr --output HDMI3 --mode FullHD --rotate normal --pos 3840x0

8.3.2 Configuring obconf for videowalls

  1. Open obconf by running obconf command in the terminal.
  2. Select Windows.
  3. Set “Prefer to place windows on” to “The primary monitor”.
  4. Set “Primary monitor” to “Active monitor”.

9 Setting ntp servers

Debian uses ntp server addresses starting with debian.pool.ntp.org (for example 2.debian.pool.ntp.org).

  1. Open terminal (ctrl+alt+t) type sudo gedit /etc/systemd/timesyncd.conf and press enter.
  2. Remove # character from the start of line #NTP= and #FallbackNTP=.
  3. Add ntp servers and press save.
  4. Close gedit and reboot.

10 Services

10.1 Managing services

  1. Stopping a service: sudo systemctl stop <service_name>
  2. Starting a service: sudo systemctl start <service_name>
  3. Enabling service: sudo systemctl enable <service_name>
    Enabling a service will result the service running on startup.
  4. Disabling service: sudo systemctl disable <service_name>
    Disabling a service will prevent the service from running on startup.

10.2. Keepalive

Files: /etc/systemd/system/keepalive.service, /usr/bin/keepalive-service.sh

Functionality: Checks that iDiD process is running every 15 seconds and restarts it when necessary.

Do not disable this service.

10.3 Updater

Files: /etc/systemd/system/updater.service, /usr/bin/updater-service.sh

Functionality: Updates iDiD package every 3 hours and restarts it if the package was updated.

10.4 Screensettings

Files: /etc/systemd/system/screensettings.service, /usr/bin/screensettings-service.sh

Functionality: Runs screensettings in the user's home directory as the user on DISPLAY=:0.

10.5 Teamviewer keepalive

Files: /etc/systemd/system/teamviewer-keepalive.service, /usr/bin/teamviewer-keepalive-service.sh

Functionality: Checks if teamviewer service is enabled and running every 2 minutes. If teamviewer is not enabled the service will not automatically restart teamviewer service.

This service is only installed when Teamviewer installation is enabled.

10.6 Network check

Files: /etc/systemd/system/network-check.service, /usr/bin/network-check-service.sh

Functionality: Check if network is present on boot and every 2 hours. iDiD is restarted when network connection is active. NetworkManager service is restarted if there has not been a connection in the last 2 hours.

10.7 Unattended upgrades

/etc/systemd/system/apt-daily.timer.d/override.conf

[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=1h
/etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
/etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::MinimalSteps "true";
Unattended-Upgrade::AutoFixInterruptedDpkg "true";

10.8 Wifi reconnect

Files: /etc/systemd/system/wifi-reconnect.service, /usr/bin/wifi-reconnect-service.sh

Functionality: Reconnects to wifi networks. Needed for hidden ssids for now since nm-connection-editor doesn't automatically connect to hidden networks.

11 Firewall

11.1 Allow incoming traffic from port

sudo ufw allow <port>

For example, sudo ufw allow 22

11.2 Deny incoming traffic from port

sudo ufw deny <port>

For example, sudo ufw deny 22

11.3 Remove rule

sudo ufw delete <rule> <port>

For example, sudo ufw delete allow 22 or sudo ufw delete deny 22

12 Touch settings

Run

xinput

Example output:

⎡ Virtual core pointer id=2[master pointer  (3)]
⎜ ↳ Virtual core XTEST pointer id=4[slave pointer (2)]
⎜ ↳ Logitech USB Optical Mouse id=10[slave pointer (2)]
⎣ Virtual core keyboard id=3[master keyboard (2)]
↳ Virtual core XTEST keyboard id=5[slave keyboard (3)]
↳ Power Button id=6[slave keyboard (3)]
↳ Power Button id=7[slave keyboard (3)]
↳ USB Wired Keyboard id=8[slave keyboard (3)]
↳ USB Wired Keyboard id=9[slave keyboard (3)]

Edit file ~/touchsettings. The script doesn't do anything by default. To use it remove # character from the start of xinput line and add the name of the device after "pointer:" inside of ' characters.

# Touch rotate left
# xinput set-prop 'pointer:' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1 &

# Touch rotate right (ELO standard)
# xinput set-prop 'pointer:' 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1 &

The following example rotates Logitech USB Optical Mouse input to the left.

# Touch rotate left
xinput set-prop 'pointer:Logitech USB Optical Mouse' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1 &

# Touch rotate right (ELO standard)
# xinput set-prop 'pointer:' 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1 &

 

Document created 28.12.2020 (ER)

Document updated 2.5.2022 (JAA)

Document updated 25.5.2022 (ER)

Document updated 07.06.2022 (ER)