module “QtQuick.Controls” is not installed

This error comes on runtime of a QML app, I got this error on my Yocto build and, /usr/lib/qt5/qml/QtQuick/ does not contain a directory Controls.

To fix this error

Add these to your conf file. Edit the conf file


then add this to your conf file

IMAGE_INSTALL_append = " qtdeclarative-qmlplugins qtquickcontrols-qmlplugins"

In some cases this, wont bring change check whether /usr/lib/qt5/qml/QtQuick/ contain a directory named Controls else the change is not affected. Then make these chnages to your conf file

PACKAGECONFIG_append_pn-qtbase = " accessibility"
PACKAGECONFIG_append_pn-qtquickcontrols = " accessibility"

IMAGE_INSTALL_append = " qtdeclarative-qmlplugins qtquickcontrols-qmlplugins"

and rebuild Yocto.

Happy Hacking 🙂


Weston Wayland Tips and Tricks

Here are some Weston Wayland Configuration tricks

To find Video Adapters Identified by Weston

$ ls /sys/class/drm

To find supported modes

$ cat /sys/class/drm/card0-LVDS-1/modes 

Set a resolution


To set a custom resolution or with modeline

First issue this command on any system to get modeline of your custom resolution, Here i am using 1920×768@60Hz, you can get modelines for your preffered resolutions using the cvt utility

$ cvt 1920 768 60
# 1920x768 59.86 Hz (CVT) hsync: 47.77 kHz; pclk: 120.00 MHz
Modeline "1920x768_60.00"  120.00  1920 2024 2216 2512  768 771 781 798 -hsync +vsync

Then in weston.ini, the following sets the mode with a modeline,

mode=120.00  1920 2024 2216 2512  768 771 781 798 -hsync +vsync

To turn off a Video adapter


To remove top panel of weston desktop


Disabling Linux serial console on Embedded Development Boards

In different boards the systemctl behaved in different manner. For most of the boards to disable linux serial debug console and use it for user purpose use this command

systemctl disable serial-getty@ttyS0.service

systemctl disable getty@ttyS0

In some boards this method didn’t workout an alternate way was to use this command

systemctl mask serial-getty@ttyAMA0.service

To get non root access to serial port add it to dialout group, some systems don’t add debug console to dialout group so edit /etc/inittab and change the permissions.

Happy Hacking 🙂

Raspberry Pi SPI Loopback Testing

This post explains how to do SPI loopback testing in RaspberryPi.
This is the pinout of RaspbeyyPi GPIO header.

Next short the MOSI and MISO pins (GPIO10 and GPIO09)

Now download SPI test code from below link

Compile it

gcc -o spidev_test spidev_test.c

Run the code using spi dev

./spidev_test -D /dev/spidev0.0

If you are getting the hex characters as shown in screenshot, the SPI loopback is working.

Enabling SPI on Raspberry Pi

The Serial Peripheral Interface bus (SPI) is a synchronous serial communication interface specification used for short distance communication, primarily in embedded systems. The interface was developed by Motorola.

SPI devices communicate in full duplex mode using a master-slave architecture with a single master. The master device originates the frame for reading and writing. Multiple slave devices are supported through selection with individual slave select (SS) lines.

Read more details on Wikipedia

The SPI bus specifies five logic signals:

SCLK: Serial Clock (output from master).
MOSI: Master Out Slave In (data output from master).
MISO: Master In Slave Out (data output from slave).
SDIO: Serial Data I/O (bidirectional I/O)
SS: Slave Select (often active low, output from master).

I am using RaspberryPi Model B. First i turned on the Pi, i used NOOBS Raspbian operating system ( I don’t have a HDMI display, so i connected it to network found out the ip of the Pi and did ssh using the following command

ssh pi@ip-address

The default password for ssh is “raspberry” if you are using NOOBS debian distro.

The SPI is not enabled by default. To enable SPI issue the following command

sudo raspi-config

Then Select Interfacing Options

Select SPI

It will ask for Enable or Disable, Enable SPI

Finish the config and reboot

After reboot you can see two spidev’s by issuing the command

ls /dev/spi*

This mean SPI is enabled on your Raspberry Pi

Increase USBFS memory limit in Ubuntu

When using USB3 camera on Linux you may face this USB memory limit issue.
By default, Linux limits image capture to 2 MB. To capture images over 2 MB, extend the USBFS limit on how many buffers can be locked into the driver.

sudo sh -c 'echo 1000 > /sys/module/usbcore/parameters/usbfs_memory_mb'

To confirm that you have successfully updated the memory limit, run the following command:

cat /sys/module/usbcore/parameters/usbfs_memory_mb

To set the maximum usbfs memory limit permanently:
Open the /etc/default/grub file in any text editor. Find and replace:


with this:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=1000"

Update grub with these settings:

$ sudo update-grub

You need to reboot the system after updating grub.

Fail2ban – Prevent Postfix Brute Force


# apt-get install fail2ban

To limit memory usage, add to /etc/default/fail2ban:

+ulimit -s 256

Local config file
Create a local config file /etc/fail2ban/jail.local to override settings in jail.conf:

To ban authentication via SSH after 3 failed attempts add the following to /etc/fail2ban/jail.local:

enabled   = true
port      = ssh
filter    = sshd
logpath   = /var/log/auth.log
maxretry  = 3


# /etc/init.d/fail2ban restart

Postfix and Dovecot
To ban authentication to Postfix and Dovecot after 3 failed attempts add the following to /etc/fail2ban/jail.local:

enabled = true
port = pop3,pop3s,imap,imaps
filter = dovecot
logpath = /var/log/mail.log
maxretry  = 3

enabled  = true
port     = smtp,ssmtp
filter   = postfix
logpath  = /var/log/mail.log
maxretry  = 3

enabled   = true
port      = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
filter    = sasl
logpath   = /var/log/mail.log
maxretry  = 3

Fail2ban (Debian Squeeze) isn’t shipped with a configuration for Dovecot, so create /etc/fail2ban/filter.d/dovecot.conf:

failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed).*rip=(?P\S*),.*
ignoreregex =

Restart fail2ban:

# /etc/init.d/fail2ban restart

To ban IPs after 3 failed login attempts add the following to /etc/fail2ban/jail.local:

enabled = true
port    = http,https
filter  = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 3