Monthly Archives: August 2018

Raspberry Pi 3: LCD / Touch Screen / Touchscreen

LCD

AliExpress Raspberry Pi 7 zoll LCD Display 1024*600 TFT Monitor Bildschirm mit Stick Board für Raspberry Pi 2/ 3 modell B
-Inch-1024×600 Display Kit (without Touch Screen) SKU:Z-0051

Touchscreen

Touchscreen display and HDMI monitor, Februar 2017
how to install b9 application on raspbian jessie, März 2017

### B9Creator on Raspberry Pi 3 B 
### -----------------------------
### Let me preface this by saying that I do not have much experience with Qt.
### It may be possible to improve the configuration and approach I took here,
### but this is what worked for me after over 20 attempts just to get Qt to
### finish building successfully. My previous approach to get B9Creator running
### on the Raspberry Pi 3 B involved porting the GL code to GLES, but after
### completely converting two of the files in the project to GLES, I got tired
### of working on it. Being that I have no use for this software and was just
### treating this as a small challenge, I decided porting the code wasn't worth
### it and instead tried to see if I could get the existing GL code working.

### I used guides and information at the following links to get this done:
### - https://www.ics.com/blog/configuring-qt-creator-raspberry-pi
### - https://wiki.qt.io/RaspberryPi2EGLFS
### - https://wiki.qt.io/Building_Qt_5_from_Git
### - http://doc.qt.io/qt-5/linux-requirements.html
### - http://doc.qt.io/qt-5/configure-options.html
### - and other Qt documentation

### - I used raspberrypi.local to connect to my Raspberry Pi 3 B, but you can
###   use an IP address instead.


# 1. Install Qt on the cross-compile host system
## - Qt 5.7.1 with qtcreator packages installed from APT on Ubuntu 17.04 x86_64


# 2. Install and configure Raspbian on a micro SD card for the Raspberry Pi 3 B
## - I began with Raspbian Jessie (2017-01-11-raspbian-jessie.img)
## - I ran rpi-update (kernel 4.9.9-v7+) and upgraded to Raspbian Stretch 
## - I tested the vc4-fkms-v3d overlay with the official 7" Touchscreen Display
## - I installed Qt build dependencies on the Raspberry Pi 3 B (You'll have to
##   figure out which packages you need, refer to the online Qt build docs and
##   compare your Qt configure output to my configure output included below in
##   step 4.)

## - My cmdline.txt:
video=HDMI-1:640x480M@60m video=DSI-1:800x480M@60m net.ifnames=0 dwc_otg.lpm_enable=0 console=tty1 fbcon=rotate:2 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

## - My config.txt:
dtparam=i2c_arm=on
#dtparam=i2s=on
dtparam=spi=on
dtparam=sd_overclock=63
dtparam=audio=on
audio_pwm_mode=2
enable_uart=1
lcd_rotate=2
ignore_lcd=0
#gpu_mem=32
gpu_mem=128
#dtoverlay=vc4-kms-v3d,cma-256,rpi-ft5406
dtoverlay=vc4-fkms-v3d,cma-192,rpi-ft5406
arm_freq=1200
arm_freq_min=600
core_freq=250
core_freq_min=250
h264_freq=300
isp_freq=250
v3d_freq=500
avoid_pwm_pll=1
sdram_freq=450
sdram_schmoo=0x02000020
over_voltage=2
over_voltage_sdram=2
decode_MPG2=0x3ab16f03
decode_WVC1=0x438a78fb


# 3. Create sysroot and download the toolchain on the cross-compile host system:
## - Commands on Ubuntu 17.04 x86_64 host:
mkdir ~/raspi
cd ~/raspi
mkdir sysroot sysroot/usr sysroot/opt
rsync -avz pi@raspberrypi.local:/lib sysroot
rsync -avz pi@raspberrypi.local:/usr/include sysroot/usr
rsync -avz pi@raspberrypi.local:/usr/lib sysroot/usr
rsync -avz pi@raspberrypi.local:/opt/vc sysroot/opt
wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py
chmod +x sysroot-relativelinks.py
./sysroot-relativelinks.py sysroot
git clone https://github.com/raspberrypi/tools

## - I'm not sure if the following is necessary, but it helped get past an
##   error on one of my Qt compile attempts
cd sysroot/usr/include/EGL
ln -s ../../../opt/vc/include/EGL/eglext_brcm.h eglext_brcm.h
cd ../../../..


# 4. Build a cross-compiled Qt 5.7.1 for Raspberry Pi 3 B on the host system
wget http://download.qt.io/official_releases/qt/5.7/5.7.1/single/qt-everywhere-opensource-src-5.7.1.tar.gz
tar xzf qt-everywhere-opensource-src-5.7.1.tar.gz
cd qt-everywhere-opensource-src-5.7.1
./configure -release -opengl desktop -device linux-rpi3-vc4-g++ -device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- -sysroot ~/raspi/sysroot -opensource -confirm-license -prefix /usr/local/qt5pi -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -v -nomake examples -nomake tests -no-use-gold-linker -skip webchannel -skip webengine -skip wayland -skip multimedia -skip winextras -skip websockets -skip webview -skip location -skip script

#    Configure summary
#
# Building on:   linux-g++ (x86_64, CPU features: mmx sse sse2)
# Building for:  devices/linux-rpi3-vc4-g++ (arm, CPU features: neon)
# Platform notes:
#
#             - Also available for Linux: linux-clang linux-kcc linux-icc linux-cxx
#
# qmake vars .......... styles += mac fusion windows QT_LIBS_DBUS = -L/home/ktb/raspi/sysroot/usr/lib/arm-linux-gnueabihf -ldbus-1 QT_CFLAGS_DBUS = -I/home/ktb/raspi/sysroot/usr/include/dbus-1.0 -I/home/ktb/raspi/sysroot/usr/lib/arm-linux-gnueabihf/dbus-1.0/include QT_HOST_CFLAGS_DBUS = -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include QT_CFLAGS_GLIB = -pthread -I/home/ktb/raspi/sysroot/usr/include/glib-2.0 -I/home/ktb/raspi/sysroot/usr/lib/arm-linux-gnueabihf/glib-2.0/include QT_LIBS_GLIB = -L/home/ktb/raspi/sysroot/usr/lib/arm-linux-gnueabihf -lgthread-2.0 -pthread -lglib-2.0 QT_CFLAGS_PULSEAUDIO = -D_REENTRANT -I/home/ktb/raspi/sysroot/usr/include/glib-2.0 -I/home/ktb/raspi/sysroot/usr/lib/arm-linux-gnueabihf/glib-2.0/include QT_LIBS_PULSEAUDIO = -L/home/ktb/raspi/sysroot/usr/lib/arm-linux-gnueabihf -lpulse-mainloop-glib -lpulse -lglib-2.0 QMAKE_CFLAGS_FONTCONFIG = -I/home/ktb/raspi/sysroot/usr/include/freetype2 QMAKE_LIBS_FONTCONFIG = -L/home/ktb/raspi/sysroot/usr/lib/arm-linux-gnueabihf -lfontconfig -lfreetype QMAKE_INCDIR_LIBUDEV =  QMAKE_LIBS_LIBUDEV = -L/home/ktb/raspi/sysroot/usr/lib/arm-linux-gnueabihf -ludev QMAKE_INCDIR_XKBCOMMON_EVDEV =  QMAKE_LIBS_XKBCOMMON_EVDEV = -L/home/ktb/raspi/sysroot/usr/lib/arm-linux-gnueabihf -lxkbcommon QMAKE_LIBINPUT_VERSION_MAJOR = 1 QMAKE_LIBINPUT_VERSION_MINOR = 6 QMAKE_INCDIR_LIBINPUT =  QMAKE_LIBS_LIBINPUT = -L/home/ktb/raspi/sysroot/usr/lib/arm-linux-gnueabihf -linput QMAKE_X11_PREFIX = /usr DEFINES += QT_NO_XKB QMAKE_XKB_CONFIG_ROOT = /usr/share/X11/xkb sql-drivers =  sql-plugins =  sqlite sqlite2 tds qmake switches ......... 
#
# Build options:
#   Configuration .......... accessibility accessibility-atspi-bridge alsa audio-backend c++11 clock-gettime clock-monotonic compile_examples concurrent cross_compile cups dbus dbus-linked doubleconversion egl eglfs eglfs_egldevice eglfs_gbm egl_x11 enable_new_dtags evdev eventfd fontconfig full-config gbm getaddrinfo getifaddrs glib gstreamer-1.0 iconv inotify ipv6ifname kms large-config largefile libinput libudev linuxfb medium-config minimal-config mremap mtdev neon opengl openssl openvg png poll_ppoll posix_fallocate precompile_header pulseaudio qpa qpa reduce_exports release rpath shared small-config system-freetype system-harfbuzz system-jpeg system-png system-zlib threadsafe-cloexec tslib xcb xcb-glx xcb-plugin xcb-render xcb-xlib xinput2 xkbcommon-evdev xkbcommon-qt xlib xrender 
#   Build parts ............ libs
#   Mode ................... release
#   Using sanitizer(s)...... none
#   Using C++ standard ..... c++11
#   Using gold linker....... no
#   Using new DTAGS ........ yes
#   Using PCH .............. yes
#   Using LTCG ............. no
#   Target compiler supports:
#     Neon ................. yes
#
# Qt modules and options:
#   Qt D-Bus ............... yes (linked to dbus-1)
#   Qt Concurrent .......... yes
#   Qt GUI ................. yes
#   Qt Widgets ............. yes
#   Large File ............. yes
#   QML debugging .......... yes
#   Use system proxies ..... no
#
# Support enabled for:
#   Accessibility .......... yes
#   ALSA ................... yes
#   CUPS ................... yes
#   DoubleConversion........ yes (bundled copy)
#   Evdev .................. yes
#   FontConfig ............. yes
#   FreeType ............... yes (system library)
#   Glib ................... yes
#   GStreamer .............. yes (1.0)
#   GTK platformtheme ...... no
#   HarfBuzz ............... yes (system library)
#   Iconv .................. yes
#   ICU .................... no
#   Image formats: 
#     GIF .................. yes (plugin, using bundled copy)
#     JPEG ................. yes (plugin, using system library)
#     PNG .................. yes (in QtGui, using system library)
#   libinput................ yes
#   Logging backends: 
#     journald ............... no
#     syslog   ............... no
#   mtdev .................. yes (system library)
#   Networking: 
#     getaddrinfo .......... yes
#     getifaddrs ........... yes
#     IPv6 ifname .......... yes
#     libproxy.............. no
#     OpenSSL .............. yes (loading libraries at run-time)
#   OpenGL / OpenVG: 
#     EGL .................. yes
#     OpenGL ............... desktop
#     OpenVG ............... yes-auto
#   PCRE ................... system
#   pkg-config ............. yes 
#   PulseAudio ............. yes
#   QPA backends: 
#     DirectFB ............. no
#     EGLFS ................ yes
#       EGLFS i.MX6 ........ no
#       EGLFS i.MX6 Wayland. no
#       EGLFS EGLDevice .... yes
#       EGLFS GBM .......... yes
#       EGLFS Mali ......... no
#       EGLFS Raspberry Pi . no
#       EGLFS X11 .......... yes
#     LinuxFB .............. yes
#     Mir client............ no
#     XCB .................. yes (system library)
#       EGL on X ........... yes
#       GLX ................ yes
#       MIT-SHM ............ yes
#       Xcb-Xlib ........... yes
#       Xcursor ............ yes (loaded at runtime)
#       Xfixes ............. yes (loaded at runtime)
#       Xi2 ................ yes
#       Xrandr ............. yes (loaded at runtime)
#       Xrender ............ yes
#       XKB ................ no
#       XShape ............. yes
#       XSync .............. yes
#   Session management ..... yes
#   SQL drivers: 
#     DB2 .................. no
#     InterBase ............ no
#     MySQL ................ no
#     OCI .................. no
#     ODBC ................. no
#     PostgreSQL ........... no
#     SQLite 2 ............. yes (plugin)
#     SQLite ............... yes (plugin, using bundled copy)
#     TDS .................. yes (plugin)
#   tslib .................. yes
#   udev ................... yes
#   xkbcommon-x11........... yes (bundled copy, XKB config root: /usr/share/X11/xkb)
#   xkbcommon-evdev......... yes
#   zlib ................... yes (system library)
#
#
# NOTE: Qt is using double for qreal on this system. This is binary incompatible against Qt 5.1.
# Configure with '-qreal float' to create a build that is binary compatible with 5.1.
#
# Qt is now configured for building. Just run 'make'.
# Once everything is built, you must run 'make install'.
# Qt will be installed into /usr/local/qt5pi
#
# Prior to reconfiguration, make sure you remove any leftovers from
# the previous build.

make -j4
make install

cp qtbase/bin/rcc ~/raspi/qt5pi/bin/
cd ..


# 5. Install Qt from the cross-compile host system to the Pi.
rsync -avz qt5pi pi@raspberrypi.local:/usr/local


# 6. Build an example on the cross-compile host and install it on the Pi
cd qt-everywhere-opensource-src-5.7.1/qtbase/examples/opengl/qopenglwidget
~/raspi/qt5/bin/qmake
make
scp qopenglwidget pi@raspberrypi.local:/home/pi


# 7. On the Pi3B, Update the shared library cache with the qt5pi directory location:
echo /usr/local/qt5pi/lib | sudo tee /etc/ld.so.conf.d/qt5pi.conf
sudo ldconfig


# 8. Set some Qt environment variables and run qopenglwidget (in /home/pi) on the Raspberry Pi 3 B.
export QT_LOGGING_RULES=qt.qpa.*=true
export QT_QPA_PLATFORM=xcb
./qopenglwidget
## Note: You can also use "-platform xcb" when running your applications


### Refer to the instructions from step 5 "Configure Qt Creator" and on at
### https://www.ics.com/blog/configuring-qt-creator-raspberry-pi for
### instructions on configuring Qt Creator on the cross-compile host in order
### to build B9Creator on the cross-compile host system,  and then deploy and run
### it on the Raspberry Pi 3 B

Adafruit 2.2″ PiTFT HAT – 320×240 Display
The Eagerly Awaited Raspberry Pi Display
Raspberry Pi Dual Screen Project (1080p + 3.5 TFT)/
How to run HDMI and Official Raspberry Pi Display (DSI) simultaneously?
Dual Raspberry PI 7″ Touch screen monitors from same PI
RPi Screens
Raspberry Pi HDMI display not working, how to solve it?
Adafruit DPI TFT Kippah for Raspberry Pi with Touch Support

Dual Screen on Raspberry Pi
Raspberry : How use two monitors?
Using a cheap “Gert VGA 666” VGA adapter – [HOWTO]
raspi2raspi – Program to copy from one Raspberry Pi display to another Raspberry Pi display

Kivy

User’s Guide » Installation on Raspberry Pi
Programming Guide » Controlling the environment

Kivy Pie: Frequently Asked Questions

Using Kivy with the official Raspberry Pi Touch Display

fix RPI touchscreen not working with KIVY_BCM_DISPMANX_ID=4
On Raspian Jessie mouse and keyboard clicks passed to background desktop screen

$ cd kivy/examples/demo/showcase
$ KIVY_BCM_DISPMANX_ID=4 python main.py

KIVY_BCM_DISPMANX_ID
    Change the default Raspberry Pi display to use.
    The list of available value is accessible in vc_dispmanx_types.h.
    Default value is 0:
        0: DISPMANX_ID_MAIN_LCD
        1: DISPMANX_ID_AUX_LCD
        2: DISPMANX_ID_HDMI
        3: DISPMANX_ID_SDTV
        4: DISPMANX_ID_FORCE_LCD
        5: DISPMANX_ID_FORCE_TV
        6: DISPMANX_ID_FORCE_OTHER
$ xinput
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Logitech MX Anywhere 2S                 	id=6	[slave  pointer  (2)]
⎜   ↳ FT5406 memory based driver              	id=9	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ DELL DELL USB Keyboard                  	id=7	[slave  keyboard (3)]
    ↳ DELL DELL USB Keyboard                  	id=8	[slave  keyboard (3)]
    ↳ Logitech MX Anywhere 2S                 	id=10	[slave  keyboard (3)]

$ xinput list-props "FT5406 memory based driver"
$ xinput set-prop "FT5406 memory based driver" "Device Enabled" 0
  • 0: DISPMANX_ID_MAIN_LCD
  • 1: DISPMANX_ID_AUX_LCD
  • 2: DISPMANX_ID_HDMI
  • 3: DISPMANX_ID_SDTV
  • 4: DISPMANX_ID_FORCE_LCD
  • 5: DISPMANX_ID_FORCE_TV
  • 6: DISPMANX_ID_FORCE_OTHER

Kivy & GTK

How To Use Both Kivy and GTK in the Same Application
Hybrid Kivy and GTK application
Simple way to toggle fullscreen with F11 in PyGTK
Raspberry PI Information Kiosk GTK+ 3
The Python GTK+ 3 Tutorial

dispmanx

QT_DISPMANX_ID=0
QT_DISPMANX_ID=4

src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/qeglfsbrcmintegration.cpp:
static const int dispmanxId = qEnvironmentVariableIntValue("QT_QPA_EGLFS_DISPMANX_ID");

QT_QPA_EGLFS_DISPMANX_ID
QtRpi

Qt for Embedded Linux
Touch Input Examples

Raspberry Pi 2 using dual display with official DSI display with QT 5.6
Qt Graphics with Multiple Displays on Embedded Linux
RaspberryPi2EGLFS – A modern guide for cross-compiling Qt for HW accelerated OpenGL with eglfs on Raspbian and setting up Qt Creator
Qt Creator Cross Compiling Environment for Raspberry Pi3 with QtRpi
Which OpenGL implementation is my Qt Quick app using today?
Raspberry Pi VideoCore APIs
raspidmx – Some examples using the DispmanX API on the Raspberry Pi
Category: DispmanX API

Official 7″ Touchscreen

How to support the 7″ touch display from raspberrypi org on a custom kernel?
Dual display Official 7″ DSI Touch Display and HDMI display using Raspberry pi 3 , OS raspbian jessie pixel, 24.02.2017
drm/vc4: Backport to 4.9, 23.01.2017
Add VC4 open source driver support
gentoo Raspberry Pi VC4
Official 7” Raspberry Pi Touch Screen FAQ

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=28019932-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
#disable_overscan=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

# Uncomment this to enable the lirc-rpi module
#dtoverlay=lirc-rpi

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.14.62-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611)) #1134 SMP Tue Aug 14 17:10:10 BST 2018
[    0.000000] CPU: ARMv7 Processor [410fd034] revision 4 (ARMv7), cr=10c5383d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: Raspberry Pi 3 Model B Rev 1.2
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] cma: Reserved 8 MiB at 0x3ac00000
[    0.000000] On node 0 totalpages: 242688
[    0.000000] free_area_init_node: node 0, pgdat 80c85000, node_mem_map ba39f000
[    0.000000]   Normal zone: 2133 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 242688 pages, LIFO batch:31
[    0.000000] percpu: Embedded 17 pages/cpu @ba348000 s38720 r8192 d22720 u69632
[    0.000000] pcpu-alloc: s38720 r8192 d22720 u69632 alloc=17*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 240555
[    0.000000] Kernel command line: 8250.nr_uarts=0 bcm2708_fb.fbwidth=800 bcm2708_fb.fbheight=480 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000  dwc_otg.lpm_enable=0 console=ttyS0,115200 console=tty1 root=PARTUUID=28019932-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Memory: 940228K/970752K available (7168K kernel code, 575K rwdata, 2076K rodata, 1024K init, 706K bss, 22332K reserved, 8192K cma-reserved)
[    0.000000] Virtual kernel memory layout:
                   vector  : 0xffff0000 - 0xffff1000   (   4 kB)
                   fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
                   vmalloc : 0xbb800000 - 0xff800000   (1088 MB)
                   lowmem  : 0x80000000 - 0xbb400000   ( 948 MB)
                   modules : 0x7f000000 - 0x80000000   (  16 MB)
                     .text : 0x80008000 - 0x80800000   (8160 kB)
                     .init : 0x80b00000 - 0x80c00000   (1024 kB)
                     .data : 0x80c00000 - 0x80c8fef4   ( 576 kB)
                      .bss : 0x80c96f34 - 0x80d478b4   ( 707 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] ftrace: allocating 25267 entries in 75 pages
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] arch_timer: cp15 timer(s) running at 19.20MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x46d987e47, max_idle_ns: 440795202767 ns
[    0.000007] sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 4398046511078ns
[    0.000018] Switching to timer-based delay loop, resolution 52ns
[    0.000264] Console: colour dummy device 80x30
[    0.000282] console [tty1] enabled
[    0.000308] Calibrating delay loop (skipped), value calculated using timer frequency.. 38.40 BogoMIPS (lpj=192000)
[    0.000322] pid_max: default: 32768 minimum: 301
[    0.000634] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000649] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.001589] Disabling memory control group subsystem
[    0.001664] CPU: Testing write buffer coherency: ok
[    0.002073] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.002469] Setting up static identity map for 0x100000 - 0x10003c
[    0.002593] Hierarchical SRCU implementation.
[    0.003266] smp: Bringing up secondary CPUs ...
[    0.004036] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.004869] CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
[    0.005688] CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
[    0.005792] smp: Brought up 1 node, 4 CPUs
[    0.005803] SMP: Total of 4 processors activated (153.60 BogoMIPS).
[    0.005808] CPU: All CPU(s) started in HYP mode.
[    0.005812] CPU: Virtualization extensions available.
[    0.006691] devtmpfs: initialized
[    0.017066] random: get_random_u32 called from bucket_table_alloc+0xfc/0x24c with crng_init=0
[    0.017829] VFP support v0.3: implementor 41 architecture 3 part 40 variant 3 rev 4
[    0.018049] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.018066] futex hash table entries: 1024 (order: 4, 65536 bytes)
[    0.018622] pinctrl core: initialized pinctrl subsystem
[    0.019367] NET: Registered protocol family 16
[    0.022113] DMA: preallocated 1024 KiB pool for atomic coherent allocations
[    0.027043] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[    0.027050] hw-breakpoint: maximum watchpoint size is 8 bytes.
[    0.027255] Serial: AMBA PL011 UART driver
[    0.029122] bcm2835-mbox 3f00b880.mailbox: mailbox enabled
[    0.029580] uart-pl011 3f201000.serial: could not find pctldev for node /soc/gpio@7e200000/uart0_pins, deferring probe
[    0.061476] bcm2835-dma 3f007000.dma: DMA legacy API manager at bb813000, dmachans=0x1
[    0.062882] SCSI subsystem initialized
[    0.063107] usbcore: registered new interface driver usbfs
[    0.063158] usbcore: registered new interface driver hub
[    0.063244] usbcore: registered new device driver usb
[    0.070086] raspberrypi-firmware soc:firmware: Attached to firmware from 2018-08-16 17:30
[    0.071524] clocksource: Switched to clocksource arch_sys_counter
[    0.148042] VFS: Disk quotas dquot_6.6.0
[    0.148127] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.148310] FS-Cache: Loaded
[    0.148510] CacheFiles: Loaded
[    0.157315] NET: Registered protocol family 2
[    0.158039] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[    0.158148] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    0.158333] TCP: Hash tables configured (established 8192 bind 8192)
[    0.158460] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.158504] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.158729] NET: Registered protocol family 1
[    0.159180] RPC: Registered named UNIX socket transport module.
[    0.159186] RPC: Registered udp transport module.
[    0.159191] RPC: Registered tcp transport module.
[    0.159196] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.160809] hw perfevents: enabled with armv7_cortex_a7 PMU driver, 7 counters available
[    0.163575] workingset: timestamp_bits=14 max_order=18 bucket_order=4
[    0.171715] FS-Cache: Netfs 'nfs' registered for caching
[    0.172320] NFS: Registering the id_resolver key type
[    0.172345] Key type id_resolver registered
[    0.172351] Key type id_legacy registered
[    0.172365] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.174295] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[    0.174424] io scheduler noop registered
[    0.174430] io scheduler deadline registered (default)
[    0.174710] io scheduler cfq registered
[    0.174717] io scheduler mq-deadline registered
[    0.174722] io scheduler kyber registered
[    0.177441] BCM2708FB: allocated DMA memory fad10000
[    0.177466] BCM2708FB: allocated DMA channel 0 @ bb813000
[    0.188954] Console: switching to colour frame buffer device 100x30
[    0.196689] bcm2835-rng 3f104000.rng: hwrng registered
[    0.196817] vc-mem: phys_addr:0x00000000 mem_base=0x3ec00000 mem_size:0x40000000(1024 MiB)
[    0.197279] vc-sm: Videocore shared memory driver
[    0.197548] gpiomem-bcm2835 3f200000.gpiomem: Initialised: Registers at 0x3f200000
[    0.207131] brd: module loaded
[    0.215830] loop: module loaded
[    0.215844] Loading iSCSI transport class v2.0-870.
[    0.216476] libphy: Fixed MDIO Bus: probed
[    0.216579] usbcore: registered new interface driver lan78xx
[    0.216632] usbcore: registered new interface driver smsc95xx
[    0.216646] dwc_otg: version 3.00a 10-AUG-2012 (platform bus)
[    0.244541] dwc_otg 3f980000.usb: base=0xf0980000
[    0.261521] NOHZ: local_softirq_pending 80
[    0.321517] NOHZ: local_softirq_pending 80
[    0.341517] NOHZ: local_softirq_pending 80
[    0.361517] NOHZ: local_softirq_pending 80
[    0.381517] NOHZ: local_softirq_pending 80
[    0.401518] NOHZ: local_softirq_pending 80
[    0.421517] NOHZ: local_softirq_pending 80
[    0.441517] NOHZ: local_softirq_pending 80
[    0.444780] Core Release: 2.80a
[    0.444789] Setting default values for core params
[    0.444819] Finished setting default values for core params
[    0.645061] Using Buffer DMA mode
[    0.645067] Periodic Transfer Interrupt Enhancement - disabled
[    0.645072] Multiprocessor Interrupt Enhancement - disabled
[    0.645078] OTG VER PARAM: 0, OTG VER FLAG: 0
[    0.645092] Dedicated Tx FIFOs mode
[    0.645493] WARN::dwc_otg_hcd_init:1046: FIQ DMA bounce buffers: virt = 0xbad04000 dma = 0xfad04000 len=9024
[    0.645518] FIQ FSM acceleration enabled for :
               Non-periodic Split Transactions
               Periodic Split Transactions
               High-Speed Isochronous Endpoints
               Interrupt/Control Split Transaction hack enabled
[    0.645525] dwc_otg: Microframe scheduler enabled
[    0.645570] WARN::hcd_init_fiq:459: FIQ on core 1 at 0x805e8e80
[    0.645580] WARN::hcd_init_fiq:460: FIQ ASM at 0x805e91e8 length 36
[    0.645592] WARN::hcd_init_fiq:486: MPHI regs_base at 0xf0006000
[    0.645642] dwc_otg 3f980000.usb: DWC OTG Controller
[    0.645673] dwc_otg 3f980000.usb: new USB bus registered, assigned bus number 1
[    0.645703] dwc_otg 3f980000.usb: irq 62, io mem 0x00000000
[    0.645750] Init: Port Power? op_state=1
[    0.645755] Init: Power Port (0)
[    0.645953] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    0.645964] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.645972] usb usb1: Product: DWC OTG Controller
[    0.645980] usb usb1: Manufacturer: Linux 4.14.62-v7+ dwc_otg_hcd
[    0.645988] usb usb1: SerialNumber: 3f980000.usb
[    0.646567] hub 1-0:1.0: USB hub found
[    0.646605] hub 1-0:1.0: 1 port detected
[    0.647106] dwc_otg: FIQ enabled
[    0.647112] dwc_otg: NAK holdoff enabled
[    0.647116] dwc_otg: FIQ split-transaction FSM enabled
[    0.647126] Module dwc_common_port init
[    0.647357] usbcore: registered new interface driver usb-storage
[    0.647513] mousedev: PS/2 mouse device common for all mice
[    0.647579] IR NEC protocol handler initialized
[    0.647585] IR RC5(x/sz) protocol handler initialized
[    0.647589] IR RC6 protocol handler initialized
[    0.647594] IR JVC protocol handler initialized
[    0.647599] IR Sony protocol handler initialized
[    0.647604] IR SANYO protocol handler initialized
[    0.647609] IR Sharp protocol handler initialized
[    0.647614] IR MCE Keyboard/mouse protocol handler initialized
[    0.647619] IR XMP protocol handler initialized
[    0.648284] bcm2835-wdt 3f100000.watchdog: Broadcom BCM2835 watchdog timer
[    0.648542] bcm2835-cpufreq: min=600000 max=1200000
[    0.648890] sdhci: Secure Digital Host Controller Interface driver
[    0.648895] sdhci: Copyright(c) Pierre Ossman
[    0.649237] mmc-bcm2835 3f300000.mmc: could not get clk, deferring probe
[    0.649546] sdhost-bcm2835 3f202000.mmc: could not get clk, deferring probe
[    0.649638] sdhci-pltfm: SDHCI platform and OF driver helper
[    0.651015] ledtrig-cpu: registered to indicate activity on CPUs
[    0.651184] hidraw: raw HID events driver (C) Jiri Kosina
[    0.651325] usbcore: registered new interface driver usbhid
[    0.651330] usbhid: USB HID core driver
[    0.652080] vchiq: vchiq_init_state: slot_zero = bad80000, is_master = 0
[    0.653481] [vc_sm_connected_init]: start
[    0.662175] [vc_sm_connected_init]: end - returning 0
[    0.662773] Initializing XFRM netlink socket
[    0.662795] NET: Registered protocol family 17
[    0.662889] Key type dns_resolver registered
[    0.663424] Registering SWP/SWPB emulation handler
[    0.663973] registered taskstats version 1
[    0.669655] uart-pl011 3f201000.serial: cts_event_workaround enabled
[    0.669723] 3f201000.serial: ttyAMA0 at MMIO 0x3f201000 (irq = 87, base_baud = 0) is a PL011 rev2
[    0.671393] mmc-bcm2835 3f300000.mmc: mmc_debug:0 mmc_debug2:0
[    0.671402] mmc-bcm2835 3f300000.mmc: DMA channel allocated
[    0.732147] sdhost: log_buf @ bad07000 (fad07000)
[    0.770710] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)
[    0.772281] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[    0.773832] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[    0.776613] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)
[    0.811539] mmc0: sdhost-bcm2835 loaded - DMA enabled (>1)
[    0.812541] of_cfs_init
[    0.812629] of_cfs_init: OK
[    0.813203] Waiting for root device PARTUUID=28019932-02...
[    0.854363] random: fast init done
[    0.861631] Indeed it is in host mode hprt0 = 00021501
[    0.871520] NOHZ: local_softirq_pending 80
[    0.891520] NOHZ: local_softirq_pending 80
[    0.954278] mmc1: new high speed SDIO card at address 0001
[    0.991814] mmc0: host does not support reading read-only switch, assuming write-enable
[    0.995746] mmc0: new high speed SDHC card at address aaaa
[    0.996167] mmcblk0: mmc0:aaaa SC16G 14.8 GiB
[    0.998698]  mmcblk0: p1 p2
[    1.034274] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    1.034327] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
[    1.041713] devtmpfs: mounted
[    1.044841] Freeing unused kernel memory: 1024K
[    1.071560] usb 1-1: new high-speed USB device number 2 using dwc_otg
[    1.071696] Indeed it is in host mode hprt0 = 00001101
[    1.311849] usb 1-1: New USB device found, idVendor=0424, idProduct=9514
[    1.311863] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    1.312483] hub 1-1:1.0: USB hub found
[    1.312573] hub 1-1:1.0: 5 ports detected
[    1.524941] systemd[1]: System time before build time, advancing clock.
[    1.631633] usb 1-1.1: new high-speed USB device number 3 using dwc_otg
[    1.644653] NET: Registered protocol family 10
[    1.645798] Segment Routing with IPv6
[    1.657105] ip_tables: (C) 2000-2006 Netfilter Core Team
[    1.674260] random: systemd: uninitialized urandom read (16 bytes read)
[    1.679344] systemd[1]: systemd 232 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[    1.679892] systemd[1]: Detected architecture arm.
[    1.680819] systemd[1]: Set hostname to <raspberrypi>.
[    1.721187] random: systemd: uninitialized urandom read (16 bytes read)
[    1.748448] random: systemd-cryptse: uninitialized urandom read (16 bytes read)
[    1.762058] usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00
[    1.762083] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    1.764976] smsc95xx v1.0.6
[    1.855174] smsc95xx 1-1.1:1.0 eth0: register 'smsc95xx' at usb-3f980000.usb-1.1, smsc95xx USB 2.0 Ethernet, b8:27:eb:9d:91:ba
[    1.961573] usb 1-1.2: new full-speed USB device number 4 using dwc_otg
[    2.118596] usb 1-1.2: New USB device found, idVendor=046d, idProduct=c52b
[    2.118611] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    2.118619] usb 1-1.2: Product: USB Receiver
[    2.118628] usb 1-1.2: Manufacturer: Logitech
[    2.167010] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[    2.167542] systemd[1]: Listening on Journal Socket (/dev/log).
[    2.167678] systemd[1]: Reached target Swap.
[    2.167910] systemd[1]: Listening on udev Kernel Socket.
[    2.168111] systemd[1]: Listening on fsck to fsckd communication Socket.
[    2.168313] systemd[1]: Listening on Syslog Socket.
[    2.168579] systemd[1]: Listening on udev Control Socket.
[    2.241692] usb 1-1.3: new low-speed USB device number 5 using dwc_otg
[    2.402503] usb 1-1.3: New USB device found, idVendor=413c, idProduct=2003
[    2.402522] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    2.402533] usb 1-1.3: Product: DELL USB Keyboard
[    2.402541] usb 1-1.3: Manufacturer: DELL
[    2.403250] i2c /dev entries driver
[    2.421948] input: DELL DELL USB Keyboard as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/0003:413C:2003.0004/input/input0
[    2.492308] hid-generic 0003:413C:2003.0004: input,hidraw0: USB HID v1.10 Keyboard [DELL DELL USB Keyboard] on usb-3f980000.usb-1.3/input0
[    2.519886] input: DELL DELL USB Keyboard as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.1/0003:413C:2003.0005/input/input1
[    2.581975] hid-generic 0003:413C:2003.0005: input,hidraw1: USB HID v1.10 Device [DELL DELL USB Keyboard] on usb-3f980000.usb-1.3/input1
[    2.630826] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[    2.724813] systemd-journald[91]: Received request to flush runtime journal from PID 1
[    3.094209] rpi-ft5406 rpi_ft5406: Probing device
[    3.096234] input: FT5406 memory based driver as /devices/virtual/input/input2
[    3.284522] snd_bcm2835: module is from the staging directory, the quality is unknown, you have been warned.
[    3.294827] bcm2835_alsa bcm2835_alsa: card created with 8 channels
[    3.435254] brcmfmac: F1 signature read @0x18000000=0x1541a9a6
[    3.442045] brcmfmac: brcmf_fw_map_chip_to_name: using brcm/brcmfmac43430-sdio.bin for chip 0x00a9a6(43430) rev 0x000001
[    3.442335] usbcore: registered new interface driver brcmfmac
[    3.451490] logitech-djreceiver 0003:046D:C52B.0003: hiddev96,hidraw2: USB HID v1.11 Device [Logitech USB Receiver] on usb-3f980000.usb-1.2/input2
[    3.703315] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Oct 23 2017 03:55:53 version 7.45.98.38 (r674442 CY) FWID 01-e58d219f
[    3.704151] brcmfmac: brcmf_c_preinit_dcmds: CLM version = API: 12.2 Data: 7.11.15 Compiler: 1.24.2 ClmImport: 1.24.1 Creation: 2014-05-26 10:53:55 Inc Data: 9.10.39 Inc Compiler: 1.29.4 Inc ClmImport: 1.36.3 Creation: 2017-10-23 03:47:14 
[    3.868550] input: Logitech MX Anywhere 2S as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.2/0003:046D:C52B.0003/0003:046D:406A.0006/input/input3
[    3.869883] logitech-hidpp-device 0003:046D:406A.0006: input,hidraw3: USB HID v1.11 Keyboard [Logitech MX Anywhere 2S] on usb-3f980000.usb-1.2:1
[    4.671136] random: crng init done
[    4.671152] random: 7 urandom warning(s) missed due to ratelimiting
[    4.834489] uart-pl011 3f201000.serial: no DMA platform data
[    5.249032] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[    5.249061] brcmfmac: power management disabled
[    5.783863] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup
[    5.784129] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[    6.233900] Adding 102396k swap on /var/swap.  Priority:-2 extents:1 across:102396k SSFS
[    6.382098] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[    9.293477] Bluetooth: Core ver 2.22
[    9.293613] NET: Registered protocol family 31
[    9.293622] Bluetooth: HCI device and connection manager initialized
[    9.295570] Bluetooth: HCI socket layer initialized
[    9.295599] Bluetooth: L2CAP socket layer initialized
[    9.295654] Bluetooth: SCO socket layer initialized
[    9.323407] Bluetooth: HCI UART driver ver 2.3
[    9.323420] Bluetooth: HCI UART protocol H4 registered
[    9.323426] Bluetooth: HCI UART protocol Three-wire (H5) registered
[    9.323632] Bluetooth: HCI UART protocol Broadcom registered
[    9.648818] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    9.648827] Bluetooth: BNEP filters: protocol multicast
[    9.648842] Bluetooth: BNEP socket layer initialized
[    9.699996] Bluetooth: RFCOMM TTY layer initialized
[    9.700020] Bluetooth: RFCOMM socket layer initialized
[    9.700084] Bluetooth: RFCOMM ver 1.11
[   10.756508] fuse init (API version 7.26)
[   17.410250] logitech-hidpp-device 0003:046D:406A.0006: HID++ 4.5 device connected.
[  448.892340] systemd[1]: apt-daily-upgrade.timer: Adding 43min 2.154694s random time.
[  448.892662] systemd[1]: apt-daily.timer: Adding 9h 43min 57.191724s random time.

Qt Signals & Slots

Must-Read Site

Signal-Slot-Konzept
Crash course in Qt for C++ developers, Part 3, Signals and slots – communication between object

Rest

The C++ preprocessor changes or removes the signals, slots, and emit keywords so that the compiler is presented with standard C++.
Qt Signals & Slots
Wikipedia Signal-Slot-Konzept
Wikibooks Qt für C++ Anfänger: Signale und Slots

class Zahl : public QObject 
{
    Q_OBJECT

private:
    int wert;
   
public:
    Zahl();

public slots:
    void setzeWert(int wert);
 
signals:
    void wertGeaendert(int neuerWert);
};

Tutorials

NICLAS ROSSBERGER

Qt Signals & Slots: How they work

woboq

How Qt Signals and Slots Work
How Qt Signals and Slots Work – Part 2 – Qt5 New Syntax
How Qt Signals and Slots Work – Part 3 – Queued and Inter Thread Connections
QMetaType knows your types

Flir

Flir

Lepton Maker Community – Maker community for Lepton thermal imaging camera

GroupGets

Boson
Lepton 2.0
Lepton 2.5
Lepton 3.0
Lepton 3.5
FLIR Lepton Breakout Board v1.4
PureThermal 2
Raspberry Pi 3 FLIR Lepton Dev Kit
DIY-Thermocam

OEM Cameras

FLIR BOSON VPC Accessory with USB Cable
FLIR BOSON VPC Accessory with USB-ANALOG CABLE

PureThermal 2

GroupGets PureThermal 2
Digikey SparkFun Electronics DEV-14670
Mouser SparkFun DEV-14670
Mouser SparkFun DEV-14670-Board
SparkFun PureThermal 2 – FLIR Lepton Smart I/O Board
SparkFun FLIR Radiometric Lepton Dev Kit

GroupGets Store

PureThermal 2
Flir Boson 640
FLIR Boson & Accessories

github

github.com/groupgets/purethermal1-firmware, Reference firmware for PureThermal 1 FLIR Lepton Dev Kit
github.com/groupgets/purethermal1-uvc-capture, USB Video Class capture examples for PureThermal 1 / PureThermal 2 FLIR Lepton Dev Kit
github.com/groupgets/libuvc, a cross-platform library for USB video devices (FORK!)
github.com/groupgets/LeptonModule, Code for getting started with the FLIR Lepton breakout board
github.com/groupgets/pylepton, Quick and dirty pure python library for interfacing with FLIR lepton
github.com/groupgets/GetThermal, Cross-platform USB thermal camera viewer
github.com/groupgets/GetThermal/wiki/Building-for-Raspberry-Pi, Building for Raspberry Pi

RaspberryPi2EGLFS
“EGLFS is a platform plugin for running Qt5 applications on top of EGL and OpenGL ES 2.0 without an actual windowing system (like X11 or Wayland).”
Qt for Embedded Linux

github.com/maxritter/DIY-Thermocam
github.com/maxritter/diythermocam_firmware

Rest

LK Shop Blog

PureThermal2


$ git clone git@github.com:groupgets/purethermal1-uvc-capture.git
$ cd purethermal1-uvc-capture/python/
$ ./uvc-radiometry.py 
Error: could not find libuvc!

$ sudo apt-get install libuvc-dev

$ dpkg-query -L libuvc-dev
[...]
/usr/lib/x86_64-linux-gnu/libuvc.so
[...]

$ ./uvc-radiometry.py 
Traceback (most recent call last):
  File "./uvc-radiometry.py", line 6, in <module>
    import cv2
ImportError: No module named cv2

$ sudo apt-get install python-opencv

$ ./uvc-radiometry.py 
uvc_open error

$ dmesg | tail -n 30
[  733.814416] usb 1-1: new full-speed USB device number 7 using xhci_hcd
[  733.966127] usb 1-1: New USB device found, idVendor=1e4e, idProduct=0100
[  733.966142] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  733.966153] usb 1-1: Product: PureThermal 1
[  733.966162] usb 1-1: Manufacturer: GroupGets
[  733.966171] usb 1-1: SerialNumber: v1.1.0
[  733.968005] uvcvideo: Found UVC 1.00 device PureThermal 1 (1e4e:0100)
[  733.969256] uvcvideo 1-1:1.0: Entity type for entity Extension 3 was not initialized!
[  733.969273] uvcvideo 1-1:1.0: Entity type for entity Processing 2 was not initialized!
[  733.969284] uvcvideo 1-1:1.0: Entity type for entity Extension 4 was not initialized!
[  733.969294] uvcvideo 1-1:1.0: Entity type for entity Extension 5 was not initialized!
[  733.969305] uvcvideo 1-1:1.0: Entity type for entity Extension 6 was not initialized!
[  733.969315] uvcvideo 1-1:1.0: Entity type for entity Extension 7 was not initialized!
[  733.969326] uvcvideo 1-1:1.0: Entity type for entity Extension 21 was not initialized!
[  733.969337] uvcvideo 1-1:1.0: Entity type for entity Extension 254 was not initialized!
[  733.969348] uvcvideo 1-1:1.0: Entity type for entity Camera 1 was not initialized!
[  733.971018] input: PureThermal 1: PureThermal 1 as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/input/input13

$ ./uvc-radiometry.py 
uvc_open error

$ sudo ./uvc-radiometry.py 
unsupported descriptor subtype VS_COLORFORMAT
unsupported descriptor subtype VS_COLORFORMAT
unsupported descriptor subtype VS_COLORFORMAT
unsupported descriptor subtype VS_COLORFORMAT
unsupported descriptor subtype VS_COLORFORMAT
device opened!
Version gpp: 3.3.26 dsp: 3.3.26
FLIR part #: 500-0771-01
FLIR serial #: '{"(\x00\x00\x00\x00\x00'
format: UYVY
  frame 160x120 @ 9fps
format: Y16 
  frame 160x120 @ 9fps
  frame 160x122 @ 9fps
format: Y8  
  frame 160x120 @ 9fps
format: RGBP
  frame 160x120 @ 9fps
format: }�6�
  frame 160x120 @ 9fps
uvc_start_streaming failed: -2
$ sudo apt-get remove libuvc-dev

UVC Y16 reading raw values – Pure Thermal 1

$ cd ..
$ git clone https://github.com/groupgets/GetThermal.git
$ cd GetThermal
$ git submodule update --init
Submodule 'libuvc' (https://github.com/groupgets/libuvc) registered for path 'libuvc'
Cloning into '/home/andreas/src/GetThermal/libuvc'...
Submodule path 'libuvc': checked out '5e866910de3f172bd5adab72baec40a066bbbe3a'

$ cmake ..
Command 'cmake' not found, but can be installed with:
sudo apt install cmake

$ sudo apt install cmake
$ cmake ..
-- The C compiler identification is GNU 7.3.0
-- The CXX compiler identification is GNU 7.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- No build type selected, default to Release
-- No target type selected, default to shared library
CMake Warning at CMakeLists.txt:58 (message):
  JPEG not found.  libuvc will not support JPEG decoding.


CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
LIBUSB_INCLUDE_DIR
   used as include directory in directory /home/andreas/src/GetThermal/libuvc
   used as include directory in directory /home/andreas/src/GetThermal/libuvc
   used as include directory in directory /home/andreas/src/GetThermal/libuvc
   used as include directory in directory /home/andreas/src/GetThermal/libuvc
   used as include directory in directory /home/andreas/src/GetThermal/libuvc
   used as include directory in directory /home/andreas/src/GetThermal/libuvc
   used as include directory in directory /home/andreas/src/GetThermal/libuvc
   used as include directory in directory /home/andreas/src/GetThermal/libuvc
LIBUSB_LIBRARY_NAMES
    linked by target "uvc" in directory /home/andreas/src/GetThermal/libuvc

-- Configuring incomplete, errors occurred!
See also "/home/andreas/src/GetThermal/libuvc/build/CMakeFiles/CMakeOutput.log".

$ sudo apt-get install libusb-1.0-0-dev
$ cmake ..
CMake Warning at CMakeLists.txt:58 (message):
  JPEG not found.  libuvc will not support JPEG decoding.


-- Configuring done
-- Generating done
-- Build files have been written to: /home/andreas/src/GetThermal/libuvc/build

$ sudo apt-get install libjpeg-dev
The following NEW packages will be installed:
  libjpeg-dev libjpeg-turbo8-dev libjpeg8-dev

$ xed $HOME/src/GetThermal/libuvc/CMakeLists.txt
# Try to find JPEG using a module or pkg-config. If that doesn't work, search for the header.
find_package(jpeg QUIET)
if(NOT JPEG_FOUND)
  find_path(JPEG_INCLUDE_DIR jpeglib.h)
  if(JPEG_INCLUDE_DIR)
    set(JPEG_FOUND ON)
    set(JPEG_LIBRARIES -ljpeg)
  endif()
endif()

$ cmake ..
-- The C compiler identification is GNU 7.3.0
-- The CXX compiler identification is GNU 7.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- No build type selected, default to Release
-- No target type selected, default to shared library
-- Building libuvc with JPEG support.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/andreas/src/GetThermal/libuvc/build
$ make
[ 50%] Linking C shared library libuvc.so
[100%] Linking C static library libuvcstatic.a

$ xed $HOME/src/purethermal1-uvc-capture/python/uvctypes.py
    libuvc = cdll.LoadLibrary("/home/andreas/src/GetThermal/libuvc/build/libuvc.so")

$ sudo ./uvc-radiometry.py 
device opened!
Version gpp: 3.3.26 dsp: 3.3.26
FLIR part #: 500-0771-01
FLIR serial #: '{"(\x00\x00\x00\x00\x00'
format: UYVY
  frame 160x120 @ 9fps
format: Y16 
  frame 160x120 @ 9fps
  frame 160x122 @ 9fps
format: Y8  
  frame 160x120 @ 9fps
format: RGBP
  frame 160x120 @ 9fps
format: }�6�
  frame 160x120 @ 9fps
Estimated / selected altsetting bandwith : 18 / 962. 

Lepton Camera feed not available

$ sudo sh -c "echo 'SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"1e4e\", ATTRS{idProduct}==\"0100\", SYMLINK+=\"pt1\", GROUP=\"usb\", MODE=\"666\"' > /etc/udev/rules.d/99-pt1.rules"

$ ls -la /dev
0 lrwxrwxrwx  1 root root            15 Nov 16 17:46 pt1 -> bus/usb/001/013

$ vlc

$ ls -la /dev
0 drwxr-xr-x  4 root root            80 Nov 16 17:46 v4l
0 crw-rw-rw-+ 1 root root     81,     0 Nov 16 17:46 video0

VideoCapure: uncompressed 16 bit video stream (Y16)

$ python
>>> import cv2
>>> cam = cv2.VideoCapture("/dev/video0")
>>> cam.get(cv2.CAP_PROP_FORMAT)
16.0
>>> cam.set(cv2.CAP_PROP_FORMAT,cv2.CV_16U)
VIDEOIO ERROR: V4L2: setting property #8 is not supported
True

>>> print(cv2.CV_16U)
2
>>> print(cv2.CV_8UC3)
16

>>> cam.set(cv2.CAP_PROP_FORMAT, 2.0)
VIDEOIO ERROR: V4L2: setting property #8 is not supported
True

Captured frame RGB to YUV and Reverse
Creating a video with OpenCV


$ sudo apt install v4l-utils

$ v4l2-ctl -d /dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
	Index       : 0
	Type        : Video Capture
	Pixel Format: 'UYVY'
	Name        : UYVY 4:2:2
		Size: Discrete 160x120
			Interval: Discrete 0.111s (9.000 fps)

	Index       : 1
	Type        : Video Capture
	Pixel Format: 'Y16 '
	Name        : 16-bit Greyscale
		Size: Discrete 160x120
			Interval: Discrete 0.111s (9.000 fps)
		Size: Discrete 160x122
			Interval: Discrete 0.111s (9.000 fps)

	Index       : 2
	Type        : Video Capture
	Pixel Format: 'GREY'
	Name        : 8-bit Greyscale
		Size: Discrete 160x120
			Interval: Discrete 0.111s (9.000 fps)

	Index       : 3
	Type        : Video Capture
	Pixel Format: 'RGBP'
	Name        : 16-bit RGB 5-6-5
		Size: Discrete 160x120
			Interval: Discrete 0.111s (9.000 fps)

	Index       : 4
	Type        : Video Capture
	Pixel Format: 'BGR3'
	Name        : 24-bit BGR 8-8-8
		Size: Discrete 160x120
			Interval: Discrete 0.111s (9.000 fps)

Boson

$ uname -a
Linux udoo-x86 4.15.0-32-generic #35-Ubuntu SMP Fri Aug 10 17:58:07 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

$ dmesg
[...]
[  168.770386] usb 1-3: new high-speed USB device number 6 using xhci_hcd
[  168.921648] usb 1-3: New USB device found, idVendor=09cb, idProduct=4007
[  168.921663] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  168.921673] usb 1-3: Product: Boson
[  168.921682] usb 1-3: Manufacturer: FLIR
[  168.921690] usb 1-3: SerialNumber: 6088
[  168.930320] cdc_acm 1-3:1.2: ttyACM1: USB ACM device
[  169.013588] media: Linux media interface: v0.10
[  169.032892] Linux video capture interface: v2.00
[  169.062065] uvcvideo: Unknown video format 3132564e-0000-0010-8000-00aa00389b71
[  169.062075] uvcvideo: Found UVC 1.00 device Boson (09cb:4007)
[  169.064103] uvcvideo 1-3:1.0: Entity type for entity Processing 3 was not initialized!
[  169.064108] uvcvideo 1-3:1.0: Entity type for entity Camera 1 was not initialized!
[  169.064461] usbcore: registered new interface driver uvcvideo
[  169.064463] USB Video Class driver (1.1.1)

$ v4l2-ctl -d /dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
	Index       : 0
	Type        : Video Capture
	Pixel Format: 'YU12'
	Name        : Planar YUV 4:2:0
		Size: Discrete 640x512
			Interval: Discrete 0.111s (9.000 fps)
			Interval: Discrete 0.133s (7.500 fps)

	Index       : 1
	Type        : Video Capture
	Pixel Format: 'Y16 '
	Name        : 16-bit Greyscale
		Size: Discrete 320x256
			Interval: Discrete 0.111s (9.000 fps)
			Interval: Discrete 0.133s (7.500 fps)

	Index       : 2
	Type        : Video Capture
	Pixel Format: 'NV12'
	Name        : Y/CbCr 4:2:0
		Size: Discrete 640x512
			Interval: Discrete 0.111s (9.000 fps)
			Interval: Discrete 0.133s (7.500 fps)

	Index       : 3
	Type        : Video Capture
	Pixel Format: ''
	Name        : 3132564e-0000-0010-8000-00aa003
		Size: Discrete 640x512
			Interval: Discrete 0.111s (9.000 fps)
			Interval: Discrete 0.133s (7.500 fps)

$ ./GetThermal-v0.1.3-x86_64-Linux.AppImage 
UVC initialized
Device found
uvc_open: Access denied (-3)

$ sudo ./GetThermal-v0.1.3-x86_64-Linux.AppImage 
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
UVC initialized
Device found
Device opened
DEVICE CONFIGURATION (09cb:4007/6088) ---
Status: idle
VideoControl:
	bcdUVC: 0x0100
VideoStreaming(1):
	bEndpointAddress: 129
	Formats:
	UncompressedFormat(1)
		  bits per pixel: 12
		  GUID: 4934323000001000800000aa00389b71 (I420)
		  default frame: 1
		  aspect ratio: 0x0
		  interlace flags: 00
		  copy protect: 00
			FrameDescriptor(1)
			  capabilities: 02
			  size: 640x512
			  bit rate: 10592000-235929600
			  max frame size: 491520
			  default interval: 1/9
			  interval[0]: 1/9
			  interval[1]: 1/7
	UncompressedFormat(2)
		  bits per pixel: 16
		  GUID: 5931362000001000800000aa00389b71 (Y16 )
		  default frame: 1
		  aspect ratio: 0x0
		  interlace flags: 00
		  copy protect: 00
			FrameDescriptor(1)
			  capabilities: 02
			  size: 320x256
			  bit rate: 10592000-78643200
			  max frame size: 163840
			  default interval: 1/9
			  interval[0]: 1/9
			  interval[1]: 1/7
	UncompressedFormat(3)
		  bits per pixel: 12
		  GUID: 4e56313200001000800000aa00389b71 (NV12)
		  default frame: 1
		  aspect ratio: 0x0
		  interlace flags: 00
		  copy protect: 00
			FrameDescriptor(1)
			  capabilities: 02
			  size: 640x512
			  bit rate: 10592000-235929600
			  max frame size: 491520
			  default interval: 1/9
			  interval[0]: 1/9
			  interval[1]: 1/7
	UncompressedFormat(4)
		  bits per pixel: 12
		  GUID: 4e56323100001000800000aa00389b71 (NV21)
		  default frame: 1
		  aspect ratio: 0x0
		  interlace flags: 00
		  copy protect: 00
			FrameDescriptor(1)
			  capabilities: 02
			  size: 640x512
			  bit rate: 10592000-235929600
			  max frame size: 491520
			  default interval: 1/9
			  interval[0]: 1/9
			  interval[1]: 1/7
END DEVICE CONFIGURATION
Initializing Boson with UVC backend...
Using FLIR Boson with firmware 6088
Initialize: 0x00000000
bmHint: 0001
bFormatIndex: 1
bFrameIndex: 1
dwFrameInterval: 1111111
wKeyFrameRate: 1
wPFrameRate: 0
wCompQuality: 0
wCompWindowSize: 0
wDelay: 14240
dwMaxVideoFrameSize: 491520
dwMaxPayloadTransferSize: 491532
bInterfaceNumber: 1
Streaming...
QQmlExpression: Expression qrc:/ViewerForm.ui.qml:69:22 depends on non-NOTIFYable properties:
    BosonVariation::supportsRadiometry
QQmlExpression: Expression qrc:/ViewerForm.ui.qml:53:30 depends on non-NOTIFYable properties:
    BosonVariation::supportsRadiometry
Surface set. Supported formats: 18 19 22 23 20 21 3 1 10 8 5
Surface supports format 18 width 640 height 512QQmlExpression: Expression qrc:/boson/InfoControls.qml:44:23 depends on non-NOTIFYable properties:
    BosonVariation::softwareRev
QQmlExpression: Expression qrc:/boson/InfoControls.qml:40:23 depends on non-NOTIFYable properties:
    BosonVariation::cameraSerialNumber
QQmlExpression: Expression qrc:/boson/InfoControls.qml:36:23 depends on non-NOTIFYable properties:
    BosonVariation::cameraPartNumber
QQmlExpression: Expression qrc:/boson/InfoControls.qml:32:23 depends on non-NOTIFYable properties:
    BosonVariation::sensorSerialNumber
QQmlExpression: Expression qrc:/boson/InfoControls.qml:28:23 depends on non-NOTIFYable properties:
    BosonVariation::sensorPartNumber
QQmlExpression: Expression qrc:/boson/VidControls.qml:47:22 depends on non-NOTIFYable properties:
    BosonVariation::supportsHwPseudoColor
QQmlExpression: Expression qrc:/boson/VidControls.qml:25:22 depends on non-NOTIFYable properties:
    BosonVariation::supportsHwPseudoColor
qrc:/controls/VideoRoi.qml:18: TypeError: Cannot read property 'height' of undefined
qrc:/controls/VideoRoi.qml:17: TypeError: Cannot read property 'width' of undefined
qrc:/controls/VideoRoi.qml:16: TypeError: Cannot read property 'y' of undefined
qrc:/controls/VideoRoi.qml:15: TypeError: Cannot read property 'x' of undefined

Closing...
Done streaming.
Device closed
UVC exited