Category Archives: Linux

Installing Printer Brother LH-L2360DN on LinuxMint LMDE2

I just installed a new printer on my old LMDE2 server and realized that we cannot install that printer by just installing the driver from Brother support website. If we install only the cupsndiswrapper, it will install the driver and we can add a new printer but we cannot print anything. We have to install the driver using Brother Utility program. BTW, I found a good documentation here.

Basically what I did was following:

1. Download the driver install tool from here. Just click on “Agree on the EULA and Download”.

2. Create a new folder for extraction:

mkdir hl2360dn_driver

3. Change directory to the newly created folder:

cd hl2360dn_driver

4. Move the downloaded file here:

mv ../linux-brprinter-installer-2.2.2-1.gz .

5. Extract the downloaded file:

gunzip linux-brprinter-installer-2.2.2-1.gz

6. Run the installer:

sudo ./linux-brprinter-installer-2.2.2-1

7. The installer will ask you about the device model, type in “hll2360dn”.

8. Follow the installation until you are asked about the device URI, for this I answered with ‘n’ for no because I use USB connection.

9. That’s it! Now you can add a new printer from “Printer Configuration”.

How to choose a screen for Video Editing

Video-production monitors can offer a dazzling array of features with price tags running the gamut (no pun intended) from several hundred dollars all the way up to the price of a new car. So, while your budget will understandably be a primary consideration, what else should you look for in a monitor when setting up your editing system? Read on for some general factors to consider when choosing a video-editing monitor.

I’ve read various articles debating the importance of the 1080p. I want to set the record straight once and for all: if you are serious about properly setting up your viewing room, you will definitely benefit from 1080p (and even 1440p.) Why? Because the 1080p resolution is the first to deliver enough detail to your eyeball when you are seated at the proper distance from the screen.

1. Screen Size

Look for a monitor large enough for comfortable, extended viewing during those day-long (or overnight!) editing sessions. Popular sizes include 19, 21.5, 24, 27, and 32″ screens, with ultra-wide models also available. Larger, 40″+ monitors are an option if you have the room to accommodate their suitable viewing distances. If you plan on doing any work on set, a 19″ monitor offers a good compromise between screen size and portability with plenty of travel cases to choose from.

2. Screen Resolution

If you’re editing in 4K and you can swing the cost of a 4K or higher monitor, go for the higher resolution. On the other hand, if your existing editing system is 1080p-compatible and you’re not ready to upgrade to the greater processing and storage requirements of 4K, you can edit your 4K footage using proxies while viewing on a 1080p monitor. Lower-res footage can be displayed on a higher-res monitor (although it will be in a smaller, “windowed” form) so if you want to upgrade your monitor to 4K first, you can. Of course, if you’re color-grading in any significant way, you’ll be better off opting for the 4K+ resolution.

3. Supported Video Resolutions

Most production monitors support a variety of input resolutions; it’s when you’re using formats on the higher or lower ends of the spectrum or less common frame rates that it’s important to confirm compatibility. Resolutions like DCI 4K (4096 x 2160), standard-def NTSC or PAL for legacy projects, and frame rates like 1080PsF 23.98/24 fall into this category.

4. Panel Types

LCD monitors are widely used for editing and offer high-quality contrast ratios, brightness levels, and color-gamut compatibility. IPS (in-plane switching) LCD panels offer better viewing angles than their TN (twisted nematic) predecessors and support pro color spaces. OLED monitors offer wide viewing angles, high contrast ratios and brightness levels, and true blacks; they tend to be higher-priced than same-size LCDs.

5. HDR (High Dynamic Range) Support

HDR technology ups the color intensity and contrast of your images to a brilliant degree. Monitor brightness levels, expressed in cd/m(candelas per meter squared or nits), play a key role in HDR display; look for 1000 cd/m2 or higher for optimal HDR editing. HDR10 is the more common HDR standard with Dolby Vision or HDR10+ available in some monitors, look for the standard supported by your editing system.

6. Color Support: Gamut, Color Depth, Chroma Subsampling

Color gamut (color range) support is expressed in terms of the percentage the monitor covers. Wider gamuts such as Rec.2020, Adobe RGB, and DCI-P3 provide exponentially finer color detail than older standards like sRGB / Rec.709. Go for 10-bit color to maximize dynamic range, especially when working with log gamma footage. The deeper color depths provide more detail to manipulate to your liking in post-production, but remember that 10-bit color monitors require that your GPU, OS, etc. can handle the 10-bit stream. If you’re a vlogger or show host who’s simply trimming your clips and maybe making white-balance adjustments prior to posting on a social media platform, you may opt to stay with more affordable 8-bit color monitors.

Installing Guacamole on Raspberry Pi

Guacamole is a clientless remote desktop gateway. After successful implementation of this system on some PCs, now I want to use this on a Raspberry Pi 3 B+. Following is how I do the installation on Raspbian system.

OS Version: Raspbian GNU/Linux 9 (stretch)
  1. Upgrade the system:
$ sudo apt-get update
$ sudo apt-get upgrade
  1. Install the required dependencies:
$ sudo apt-get install libcairo2-dev
$ sudo apt-get install libjpeg62-turbo-dev
$ sudo apt-get install libpng12-dev
$ sudo apt-get install libossp-uuid-dev
  1. Install the optional packages:
$ sudo apt-get install libavcodec-dev libavutil-dev libswscale-dev
$ sudo apt-get install libpango1.0-dev
$ sudo apt-get install libssh2-1-dev
$ sudo apt-get install libtelnet-dev
$ sudo apt-get install libvncserver-dev
$ sudo apt-get install libpulse-dev
$ sudo apt-get install libssl-dev
$ sudo apt-get install libvorbis-dev
$ sudo apt-get install libwebp-dev
  1. Download Guacamole Server and Client packages:
$ wget
$ wget
  1. Build and install the server:
$ tar xzf guacamole-server-0.9.14.tar.gz
$ cd guacamole-server-0.9.14
$ ./configure --with-init-dir=/etc/init.d
$ make
$ sudo make install
$ sudo update-rc.d guacd defaults
$ sudo ldconfig
  1. Build the client:
$ sudo apt-get install maven
$ tar xzf guacamole-client-0.9.14.tar.gz
$ cd guacamole-client-0.9.14
$ mvn package
  1. Install jetty9 servlet container:
$ sudo apt-get install jetty9
  1. Deploy Guacamole:
$ sudo cp guacamole/target/guacamole-0.9.14.war /var/lib/jetty9/webapps/guacamole.war
$ sudo mkdir -p /etc/guacamole/extensions
$ sudo cp extensions/guacamole-auth-noauth/target/guacamole-auth-noauth-0.9.14.jar /etc/guacamole/extensions/.
  1. Copy following text and save it as “/etc/guacamole/”
#    Guacamole - Clientless Remote Desktop
#    Copyright (C) 2010  Michael Jumper
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU Affero General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    GNU Affero General Public License for more details.
#    You should have received a copy of the GNU Affero General Public License
#    along with this program.  If not, see <>.

# Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port:     4822

# Auth provider class (authenticates user/pass combination, needed if using the provided login screen)
basic-user-mapping: /etc/guacamole/user-mapping.xml

# NoAuth properties
noauth-config: /etc/guacamole/noauth-config.xml
  1. Copy following text and save it as “/etc/guacamole/noauth-config.xml”
    <config name="pi" protocol="vnc">
        <param name="hostname" value="localhost" />
        <param name="port" value="5900" />
  1. Copy following text and save it as “/etc/guacamole/user-mapping.xml”. The password is “raspberry”.
        <connection name="pi">
        <param name="hostname">localhost</param>
        <param name="port">5900</param>
        <param name="swap-red-blue">false</param>
        <param name="enable-audio">true</param>
  1. Install x11vnc VNC-Server:
$ sudo apt-get install x11vnc
  1. Copy following text and save it as “~/.config/autostart/x11vnc.desktop”
[Desktop Entry]
Name=X11 VNC
Comment=Remotedesktop Server
Exec=x11vnc -forever -nopw -rfbport 5900 -display :0
Comment[de_DE]=Remotedesktop Server
  1. Restart Raspberry Pi:
$ sudo reboot

At this point guacamole should be automatically started at system boot. You can try to open it from a web-browser, the address is “<ip-address>:<port>/guacamole”. On my network it looks like this “”.

In case you use headless system (Raspberry Pi without display attached) and you have poor display resolution, you can set the parameters in “/boot/config.txt” from this:



to this (for full HD resolution):



Restart the system and that’s it. Have fun!

LinuxMint LMDE2 64bit update kernel 4.8.8

Here is a very easy way to update kernel for LinuxMint 64 bit. I found the instruction here:
Basically what I did was following:

      1. Download linux-image and linux-headers:
$ mkdir temp
$ cd temp
$ wget
$ wget
$ wget
      2. Install all .deb files:
$ sudo dpkg -i *.deb
      3. Update GRUB:
$ sudo update-grub
      4. Reboot:
$ sudo reboot
      5. Check the kernel version:
$ uname -r
    That’s it!

Install Guacamole 0.9.9 on LMDE 2 MATE

Guacamole is a clientless Remote Desktop gateway. With this tool we can connect to a remote desktop using any modern webbrowser. Here is how I install the latest version (0.9.9) on an LMDE 2 MATE System.

1. Install dependencies:

$ sudo apt-get install libcairo2-dev libjpeg62-turbo-dev libpng12-dev libossp-uuid-dev libfreerdp-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvncserver-dev libpulse-dev libssl-dev libvorbis-dev libwebp-dev

2. Download source code:

$ wget

3. Extract file and change directory:

$ tar -xzf guacamole-server-0.9.9.tar.gz
$ cd guacamole-server-0.9.9/

4. Configure:

$ ./configure --with-init-dir=/etc/init.d
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk

guacamole-server version 0.9.9

 Library status:

 freerdp ............. yes
 pango ............... yes
 libssh2 ............. yes
 libssl .............. yes
 libtelnet ........... yes
 libVNCServer ........ yes
 libvorbis ........... yes
 libpulse ............ yes
 libwebp ............. yes

 Protocol support:

 RDP ....... yes
 SSH ....... yes
 Telnet .... yes
 VNC ....... yes

 Init scripts: /etc/init.d

Type "make" to compile guacamole-server.

5. Make:

$ make
make all-recursive
make[1]: Entering directory '/home/user/guacamole/guacamole-server-0.9.9'
Making all in src/libguac
make[2]: Entering directory '/home/user/guacamole/guacamole-server-0.9.9/src/libguac'
 CC libguac_la-audio.lo

make[2]: Leaving directory '/home/user/guacamole/guacamole-server-0.9.9/src/protocols/vnc'
make[2]: Entering directory '/home/user/guacamole/guacamole-server-0.9.9'
make[2]: Leaving directory '/home/user/guacamole/guacamole-server-0.9.9'
make[1]: Leaving directory '/home/user/guacamole/guacamole-server-0.9.9'

6. Create needed directories:

$ sudo mkdir -p /usr/local/share/man
$ sudo mkdir /etc/guacamole

7. Install guacamole-server using checkinstall:

$ sudo apt-get install checkinstall
$ sudo checkinstall

checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran
  Diese Software wurde unter der GNU GPL veröffentlicht

The package documentation directory ./doc-pak does not exist. 
Should I create a default set of package docs? [y]: 

Bereite Paket-Dokumentation vor...OK

Bitte geben Sie eine Beschreibung für das Paket ein.
Beenden Sie Ihre Beschreibung mit einer leeren Zeile oder EOF.

**** Debian package creation selected ***

Das Paket wird entsprechend dieser Vorgaben erstellt:

0 - Maintainer: [ root@lpmbox ]
1 - Summary: [ Package created with checkinstall 1.6.2 ]
2 - Name: [ guacamole-server ]
3 - Version: [ 0.9.9 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ checkinstall ]
7 - Architecture: [ amd64 ]
8 - Source location: [ guacamole-server-0.9.9 ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ guacamole-server ]
12 - Conflicts: [ ]
13 - Replaces: [ ]

Geben Sie die betreffende Nummer ein, um die Vorgaben zu ändern: 

Installing with make install...

====================== Installation erfolgreich ==========================

Copying documentation directory...

Kopiere Dateien in das temporäre Verzeichnis...OK

Stripping ELF binaries and libraries...OK

Komprimiere man-Seiten...OK

Erzeuge Datei-Liste...OK

Erstelle Debian-Paket...OK

Installiere Debian-Paket...OK

Lösche temporäre Dateien...OK

Schreibe Sicherungs-Paket...OK

Lösche temporäres Verzeichnis...OK


 Done. The new package has been installed and saved to


 You can remove it from your system anytime using: 

 dpkg -r guacamole-server


8. Make guacd to start automatically at system start:

$ sudo update-rc.d guacd defaults

9. Install Tomcat8:

$ sudo apt-get install tomcat8

10. Download web application package and put it in tomcat8 webapps directory with another name:

$ cd ..
$ wget
$ sudo cp guacamole-0.9.9.war /var/lib/tomcat8/webapps/guacamole.war

11. Configure guacamole. Edit “/etc/guacamole/user-mapping.xml”. Here is my “user-mapping.xml”:

 <authorize username="my_username"
  <connection name="my_connection_name">
   <param name="hostname">localhost</param>
   <param name="port">5900</param>

12. To get md5 hash from your password just type following line in terminal:

$ echo -n <your_password> | md5sum

13. Install “lightdm” and set it as default display manager:

$ sudo apt-get install lightdm lightdm-gtk-greeter

14. Configure “/etc/lightdm/lightdm.conf”. Here is my “lightdm.conf”:


15. Download no-authentication package, extract and install it:

$ wget
$ tar -xzf guacamole-auth-noauth-0.9.9.tar.gz
$ sudo mkdir /etc/guacamole/extensions
$ sudo cp guacamole-auth-noauth-0.9.9/guacamole-auth-noauth-0.9.9.jar /etc/guacamole/extensions/.

16. Configure no-authentication package. Here is my “/etc/guacamole/noauth-config.xml”:

 <config name="myconfig" protocol="vnc">
  <param name="hostname" value="localhost" />
  <param name="port" value="5900" />

17. Save following text as “/etc/guacamole/”:

# Guacamole - Clientless Remote Desktop
# Copyright (C) 2010 Michael Jumper
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# GNU Affero General Public License for more details.
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <>.

# Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port: 4822

# Auth provider class (authenticates user/pass combination, needed if using the provided login screen)
basic-user-mapping: /etc/guacamole/user-mapping.xml

18. Add no authentication configuration to “/etc/guacamole/” by executing following command:

$ sudo bash -c 'printf "\n%s\n%s\n" "# NoAuth properties" "noauth-config: /etc/guacamole/noauth-config.xml" >> /etc/guacamole/'

19. Create symbolic link to tomcat8 directory:

$ sudo ln -s /etc/guacamole /usr/share/tomcat8/.guacamole

20. Install VNC Server and xinetd:

$ sudo apt-get install vnc4server xinetd

21. Configure xinetd to start vnc4server. Here is my “/etc/xinetd.d/vnc”:

service vnc
 disable = no
 socket_type = stream
 protocol = tcp
 wait = no
 user = nobody
 server = /usr/bin/Xvnc4
 server_args = -inetd -once -query localhost -geometry 1920x1080 -depth 24 -securitytypes=none
 type = UNLISTED
 port = 5900

22. Restart the system and connect to this system from another computer using a webbrowser by typing in “<ip-address>:8080/guacamole”.


23. That’s it. Happy remote desktopping!

Synchronizing system clock without ntp

I have a very small system running on Busybox and I need to maintain the correctness of system time within a few seconds, so I can maintain my computers running perfectly, while for physical support I use services as Computers R Us that are really good giving maintenance to computes. Without synchronization this system clock would drift around 10 seconds every 24 hours. My solution was to create two shell scipts, one on server and the other one on the target system (system with Busybox).

The script on the server executes command “date” and save the output as a text file and send that file using ftp to the target system. And the script on target system will read that file and set the system time accordingly. Unfortunately with wireless network I could not predict the file transfer delay time so I had to build a mechanism to add time compensation.

Here is the script on server:

#This script writes an actual time as a text file on target system.
#This text file will be read by the script on target system
#and be used to synchronize the system time.
#Created by Okki on 07-Dec-2015
########################################################################## #This is the FTP servers host or IP address.
USER=username            #This is the FTP user that has access to the server.
PASS=password            #This is the password for the FTP user.
ADDSEC=10                #Additional seconds for FTP delay compensation.

#Split the date information into "hh:mm:ss" and write it in file.
#date | awk '{split($0,array," ")} END{print array[4]}' > time.txt
#echo "10:10:10" > time.txt

TIME=$(date | awk '{split($0,array," ")} END{print array[4]}')
HH1=$(echo $TIME | awk '{print substr($0,1,1)}')
HH2=$(echo $TIME | awk '{print substr($0,2,1)}')
MM1=$(echo $TIME | awk '{print substr($0,4,1)}')
MM2=$(echo $TIME | awk '{print substr($0,5,1)}')
SS1=$(echo $TIME | awk '{print substr($0,7,1)}')
SS2=$(echo $TIME | awk '{print substr($0,8,1)}')

HH=$(echo $HH1$HH2)
if [ $HH1 -le 0 ]
  HH=$(echo $HH2)

MM=$(echo $MM1$MM2)
if [ $MM1 -le 0 ]
  MM=$(echo $MM2)

SS=$(echo $SS1$SS2)
if [ $SS1 -le 0 ]
  SS=$(echo $SS2)

let "SS += $ADDSEC"

if [ $SS -ge 60 ]
  let "SS -= 60"
  let "MM += 1"

if [ $MM -ge 60 ]
  let "MM -= 60"
  let "HH += 1"

if [ $HH -ge 24 ]
  let "HH -= 24"

if [ $SS -lt 10 ]

if [ $MM -lt 10 ]

if [ $HH -lt 10 ]

# Write compensated time into text file
echo "$HH:$MM:$SS" > time.txt

# FTP function calls:
# Call 1: Uses the ftp command with the -inv switches.
#-i turns off interactive prompting.
#-n Restrains FTP from attempting the auto-login feature.
#-v enables verbose and progress.
ftp -inv $HOST << EOF

# Call 2: Here the login credentials are supplied by calling the variables.
user $USER $PASS

# Call 3: Here you will change to the directory where you want to put or get.
cd /system/target/path

# Call 4: Here you will tell FTP to put or get the file.
put time.txt

# End FTP Connection.


And here is the script on target system:


while true ; do
  TIME=$(date | awk '{split($0,array," ")} END{print array[4]}' | sed 's/:/-/g')
  # Wait until time changes
  while [ "$TIME_OLD" == "$TIME" ] ; do
    # Check if timesync file from linux server exists
    # and has size greater than zero (ftp copy delay!)
    # Time format hh:mm:ss
    if [ -s time.txt ]
      date -s $(cat time.txt)
      rm time.txt
      # Set system time
      hwclock -w
    TIME=$(date | awk '{split($0,array," ")} END{print array[4]}' | sed 's/:/-/g')
done # Endlosschleife...

To make this process automatically executes every day, I added following line on Crontab:

10 12 * * * root /path/to/ > /dev/null 2>&1

Line above tells crontab to execute every day on 12:10.

Display special characters for html

Sometimes we need to create a static html page which displays words with special characters like Ä, ä, Ö, ö, Ü, ü and ß. In order to make these characters can be displayed correctly by webbrowser, we need to convert them in html special character format. I use awk to convert all of those characters into html format.

In this example I need to list file names in a folder and save it as html file. Here is my code:

ls -la /path/to/folder/ | awk '{ 
 gsub (/ /,"\\&nbsp;")
 gsub (/ä/,"\\&auml;")
 gsub (/ö/,"\\&ouml;")
 gsub (/ü/,"\\&uuml;")
 gsub (/ß/,"\\&szlig;")
 gsub (/Ä/,"\\&Auml;")
 gsub (/Ö/,"\\&Ouml;")
 gsub (/Ü/,"\\&Uuml;") ;print $0"<br>"}' >> /path/to/filename.html

With that code above I can see a list of files using webbrowser and get appearance as if I would list it using linux terminal.

Linux Mint 17.1: Navit (Car Navigation) Installation

I have been using Navit for car navigation around six years now. It is a very useful piece of software if you are like me (don’t have a normal navigation system hehe..). I have been traveling around Europe using this program. My first Navit setup ran on Pentium 3 Laptop. It was a little bit slow, but it worked. My second Navit run on Intel i3 Laptop with Debian Squeeze. It worked very good. Now I use the same Laptop with Linux Mint 17.1. My hardware consists of a Laptop and a Navilock Bluetooth BT-413 GPS receiver. And here is my software installation:

1. Install Navit:

$ sudo apt-get install navit
$ sudo apt-get install maptool

2. Install gpsd:

$ sudo apt-get install gpsd

3. Configure Bluetooth Device.

3.1. Here is my “/etc/bluetooth/rfcomm.conf”:

# RFCOMM configuration file.

rfcomm0 {
    # Automatically bind the device at startup
    bind yes;

    # Bluetooth address of the device
    device 00:09:DD:10:37:7A;

    # RFCOMM channel for the connection
    channel    1;

    # Description of the connection
    comment "BT-GPS";

3.2. Here is my “/etc/rc.local”:

#!/bin/sh -e
# rc.local
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
# In order to enable or disable this script just change the execution
# bits.
# By default this script does nothing.

# BT GPS Maus mit rfcomm0 binden
/usr/bin/rfcomm bind 0

exit 0

4. Download map (

planetextractor5. Configure navit.xml. Change the Map filename in xml file with the one you have downloaded. Mine is “osm_bbox_-5.1,45.5,10.9,53.6.bin”.

<map type="binfile" enabled="yes" data="~/.navit/maps/osm_bbox_-5.1,45.5,10.9,53.6.bin"/>

6. I found out that voice produced by Mbrola sounds better than directly from Espeak. Here is how to install Mbrola:

$ sudo apt-get install mbrola
$ sudo apt-get install mbrola-de7

7. Set the speech in navit.xml. Here is my setting:

<speech type="cmdline" data="espeak -vmb-de7 -s130 -a150 '%s' &amp;"/>

8. Start Navit:

navit29. Happy driving!

Linux Mint LMDE Mate: Missing Menu Button

I have experienced disappearing Mate Menu Button. I could solve the problem using solution on this page.

1. Press Alt-F2. And you will get following window.

run2. Type in following command, click run and you will get a terminal console.

$ mate-terminal

3. Type in following command and press enter.

$ mate-panel --reset

That’s it. Enjoy!

Linux Mint LMDE: Manually Create 70-persistent-net.rules

I have installed Linux Mint LMDE on a PC with 2 LAN ports and a WLAN card. And I realized that there is no file “70-persistent-net.rules” in directory “/etc/udev/rules.d”. This file is important for keeping the same name of network adapters across boots. After googling for a while, I have found the solution on this page.

Basically what I have done was executing this command:

$ sudo udevadm trigger --action=add

Thats it!

LTSP Client: Install PXE-Boot on Harddisk

Here is an easy way to create an LTSP Client without LAN Boot ROM.

1. Start computer using Tiny Core Linux CD.

2. Install Firefox:

screenshot-20150310@223212cropped3. Start Firefox and go to “”
and download “USB Keychain disk image”.

screenshot-20150310@2238264. From command line type following command:

$ sudo dd if=gpxe-1.0.1-gpxe.usb of=/dev/sda

5. Connect LAN cable to LTSP Server and reboot computer.
6. That’s it. Enjoy!