April 2021

Kubeplay: A Kubernetes cluster in a VirtualBox

Kubeplay You can find everything you need to deploy your Kubernetes cluster in a VirtualBox in the kubeplay repository. Current pinned version of the components are: Base system: Ubuntu LTS Focal 20.04 Kubernetes: 1.20.5 CRI-O: 1.20 Cilium: 1.9.5 The Vagrant configuration to setup a Kubernetes cluster is in the directory cluster. It uses CRI-O as a container runtime. It uses public networking, so be careful if you are not on a trusted network.


6 minutes

February 2021

Using spidev with mainline Linux kernel on the Raspberry Pi 4

A couple of weeks ago I finally moved my Arch Linux Arm based Raspberries to the mainline Linux kernel (linux-aarch64) and u-boot. The transition was pretty smooth with one exception: the spidev driver, which is needed to show rainbows (and other information) on the attached Pimoroni Display-O-HAT. Most probably, the reason of this absence is because the spidev driver should not be declared in the Device Tree according to the kernel developers.

Linux Embedded

3 minutes

January 2021

Reverse Engineering fun for just 9.33 € + shipping

This article is a brief introduction to the reverse engineering of a Bluetooth LE Temperature and Humidity sensor and data logger. This is done, according to the EU reverse engineering law, only for interoperability purposes. The device is called SensorBlue or ThermoBeacon or ORIA on Aliexpress and here is a photo of what you get: You can download an Android application to get you started and test the device. Next we will see some tools useful to inspect a Bluetooth device.

Android Linux Desktop

3 minutes

May 2020

Notes on using a TPM2 module on Linux

Here I collected some notes on using the TPM2 on Linux, specifically Arch Linux. The motherboard used is an ASRock E3C222D4U with the ASRock TPM2 module. This article focuses on enabling the usage of the keys stored in the TPM2 by various tools using the PKCS#11 interface. The module should be configured to allow the access to these keys only after some measurement of the state of the system is done, to guarantee that it was not tampered.

Linux Desktop

7 minutes

January 2017

YAACA, Yet Another AstroCam Application

Yaaca is an application to acquire images from ZWO ASICams and apply various astronomical image processing to them. It is available and documented on yaaca github page. Here are some examples.

Astronomy Linux Desktop

1 minute

April 2016

Using Google Nik Collection with GIMP under Linux and WINE.

Ideally we should have Free Software that serves our needs, but sometimes we must settle for a temporary solution. Google Nik Collection is now free as in free beer, some of its filters are just amazing and it is pretty straightforward to use. It is not difficult to make it work as a GIMP plugin on Linux, even if it is for Windows, thanks to WINE.

Linux Desktop

4 minutes

February 2016

Blue Light Meter

Blue Light Meter is a remote light meter for photography that can be used, via Bluetooth LE, from an Android/Linux phone. Maybe some day in the future a lightmeter GATT profile could be developed and camera may use it. Miniaturized BTLE enabled light meters could be easily carried around or concealed in clothes while shooting. You can find the source code and the hardware description on github.

Linux Embedded

1 minute

August 2014

Per process routing take 2: using cgroups, iptables and policy routing

In a previous article we saw how it’s possible to do per process routing using namespaces. In this one we will achieve the same by using cgroups, iptables and policy routing. Perhaps the user case is a bit marginal (see the introduction in the mentioned article) but this article is a tribute to the extreme flexibility of cgroups.

Cgroups Iptables Linux Desktop Netfilter Policy Routing

6 minutes

November 2013

Using Linux Network Namespaces for per processes routing

The use case for this article may seem a bit strange in year 2013 but I swear it’s real. I have a (relatively) fast connection but I have a traffic cap on it and a (really) slow one which is flat. I would like to run not interactive task like “aptitude safe-upgrade” on the slow one but the bulk of my connections should go through the fast one. The work is done on a Debian Wheezy system, check that the “ip” command is not too old and lacks network namespace support.

Linux Linux Desktop Namespaces Networking Routing Sysadmin

7 minutes

Linux benchmark on Xilinx Spartan-6 LX45 (SP605 evk)

I was asked to give at least a generic insight of “how fast” would Linux run in a Microblaze soft-CPU running on a Spartan-6 LX45 processor (specifically on the SP605 evaluation kit). Of course it has to be clear that the usage of such a processor/environment cannot focus on pure performance reasons, as you usually choose a FPGA for other reasons. For pure performance there are much better solutions (hardware based CPUs indeed) or if you need also the FPGA advantages processors with both a FPGA part and a hardware CPU, such as the Zynq family processors for example.

Linux Linux Drivers Linux Embedded Microblaze Nbench Petalinux Sp605 Spartan-6 Xilinx

2 minutes

April 2013

TOR+Privoxy minimal setup for DGN2200v3/MIPS architecture

In a previous article I talked about how to customize the Linux based WLAN+ADSL Netgear DGN2200v3 router and prepared various binary packages ready for the device. In this short article I’m offering a small full setup that can be run on this router (and many other compatible ones and in general on any MIPS+uClinux hardware setup) to be able to use easily the TOR network to browser anonymously. In this way all the users behind the router can easily achieve anonymous surfing.

Anonymizer Anonymous Surfing Dgn2200v3 Embedded Linux Linux Desktop Linux Embedded Mips Security Teaching Material The Onion Ring TOR Transparent Proxy

5 minutes

Command line PHP deobfuscation

Recently a customer asked me to debug some problems on their Joomla!/PHP site that had interoperability issues after some long time for unknown reasons. The site was using some commercial plugins which producer was long time gone and unreachable and worst of all they were all obfuscated. So even searching for some basic string that was displayed on the screen on error to understand what’s going on was not a straight forward exercise and going through the code was a mess. Apart from changing the code in a logical way, for example by adding intermediate variables or splitting variable assignations into more operations and so on, the first most annoying part of PHP obfuscators is that they modify most of the characters in the strings values with their respective hexadecimal (format \xXX) or octal (\XXX) values and eliminate any line feeds or code structure. Once you get rid of this the code stays quite very messy but is, at least in the cases I analyzed, quite readable and just needs a little more bookkeeping with automatically named vars to go through. Getting rid at least of this confusing representation is quite straightforward on the command line with a few tricks.

Command Line Deobfuscation Linux Desktop Php Reverse Engineering Security Teaching Material

4 minutes

February 2013

Linux iMX23 audio loop (or using the iMX23 as an amplifier)

As usual when working with embedded systems every component saved seems like gold to the HW guys (no matter how much software hassles or future limitations this may cause!) and in this context lately I’ve been working on the idea to use the Freescale iMX23 processor, that was anyway present in the project for other needs, as an audio amplifier to pilot a small speaker with no special volume requirements. Basically the output of a GSM module (audio out) was connected to the MIC input of the iMX23 and then the output to the speaker, just with little strictly needed passive electronics in between. As by the datasheet the processor should be able to pull out till 1.9W at 4Ω and there were some interesting registers to play with, even if not documented so very clearly nor seemed to be used anyhow in the audio driver provided. The software base used was the LTIB based BSP provided by Freescale, including their kernel patches for a 2.6.31 kernel.

Audio BM_AUDIOOUT_TEST_ADCTODAC_LOOP Drivers Embedded Freescale Imx23 Linux Linux Drivers Linux Embedded Loopback Teaching Material

4 minutes

January 2013

pyargocat: Argo Navis Catalog manager in Python

 pyargocat is a small simple Python script that can be used to program the catalogs of the Argo Navis Digital Telescope Computer from a machine with a recent Python interpreter installed using the RS232 cable that you can either buy or easily construct yourself. pyargocat can manage, that is insert to the device, all three types of catalogs in the device (asteroids, comets and user defined objects), report the number of objects present, report available space and delete previously flashed catalogs. It can be used on any machine with a Python >= 2.7 installed and it has been tested on Linux and Windows machines. The imported catalogs have to be in the standard format Argo Navis uses (please refeer to the Argo Navis manual for the details and for links to useful resources). As an example and as a possible useful addition for your advanced observing sessions you can download this sample file I created that I often use as a basis: fede-general.txt. (the file contains all the Abell planetaries, the complete ARP catalog of Peculiar galaxies, the Hickinson galaxy groups catalog, most of the PK Planetary Nebula catalog and a selection of particullar globular clusters such as the Palomars and Terzans). Also a comet database file is given as an example with the most interesting comet objects data at the time of writing: Comets.txt Download: pyargocat-0.1.tar.gz.

Argo Navis Astronomy Linux Linux Desktop Python Science

3 minutes

How to cross-compile under Linux

Recently I’ve been asked by a few people how to crosscompile programs/packages under Linux. This happened especially after the article on customizing the DGN2200v3 (you can find here) but also for work reasons. In this article I’ll try to give some insights on this operation that is often feared, but is generally not a very hard task (yes I said generally: try for example crosscompiling something like the openjdk and you’ll understand what I mean!). This article will try to be generic but with some more examples on the DGN2200v3 crosscompilation and some ARM references. Get and install the right tools The first thing to do if of course to install on the system you are working (which is called host system) the tools that run on the host and will permit you to compile something for the target system you want to compile the programs for. This set of programming tools is usually refeered as a toolchain and contains various things: usually one or a few compilers, one or a few linkers, an assembler, various header files, little or a lot of libraries and other simillar tools. If you are lucky you may get also a debugger packed. All this tools of course are compiled to run on your host machine but produce binaries that run on the target. Depending on how the toolchain was created you may also find supplied with it some set of tools that are ready to be run on the target to help your crosscompilation adventure. This operation may be very easy if you somehow received the crosscompiler package ready (as for example the DGN2200v3 you just download it from the Netgear site or you collegue may have passed it to you) as you just have to unpack it somewhere and then refeer to it.

Arm Compile Cross Crosscompile Dgn2200v3 Embedded Linux Linux Desktop Linux Drivers Linux Embedded Mips

11 minutes

November 2012

Customizing your Netgear DGN2200v3

The Netgear DGN2200v3 is a nice low cost Wireless (802.11b/g/n) ADSL2+ router that can be quite easily found. It is a nice piece of hardware and features some interesting features, such an USB host port to connect and share a USB storage device, and expecially is easily customizable for users interested in having a powerfull generic device running a Linux embedded operating system. Note: this is a heavily “Work in Progress” page so please check it out here and there if you are interested in the topic! (last update 09th June 2014) First of all you can find the source tree for the router at Netgear site starting from their GPL Open Source Code for Programmers page. The package also contains a suitable toolchain uclibc-crosstools-gcc-4.4.2-1. Everything described in this page refeers to the “official” firmware V1.1.00.10_1.00.10 . It may also apply to future updates and to the beta version that Netgear started to distribute but it may require slight modifications. The next step to access to your router internals is to enable the telnet shell using the debug backdoor present in the firmware. It is easily done by accessing (we suppose is your router IP address) the URL: This will enable telnet connections from your local network. Just login with your administrator credentials. Once you entered you can analyze the running system, briefly:

Custom Customizing Dgn2200 Dgn2200v3 Embedded Firmware Hacking Linux Linux Desktop Linux Embedded Mips Netgear Screen Torrent

87 minutes

January 2012

Android on OpenRD, part 1

Android on OpenRD This is the first article about porting Android 4.0.x AKA Ice Cream Sandwich AKA ICS on the OpenRD Client. This is a pretty powerful ARM machine (1.2 Ghz 256 KB L2 cache, 512 MB RAM and Gigabit Ethernet) with a PCIe Xgi graphics chip. The goal is having a good hacking machine, so the system will be brought up via NFS root (perhaps in a future part everything will be put on the internal NAND or a SD card, it should not be difficult). Prerequisites The standard U-boot provided with the OpenRD is used to boot the system. The environment of the boot-loader has to be set-up to start mainline kernel, as outlined on the Debian on the OpenRD page. The Android kernel and users-pace will be loaded via the network (the IP and paths refer to my development environment): setenv bootargs 'console=ttyS0,115200 root=/dev/nfs ip= nfsroot=,tcp,nolock init=/init rw' tftpboot 0x00800000 openrd-android ; bootm 0x00800000 The Linux Kernel After some research for a Linux kernel with appropriate Androidism I choose to start with the kernel published by Freescale on their Open Source git repository. I had good results with their kernel on i.MX28 and i.MX53 based machines. The patch for the OpenRD are based on the imx_2.6.38_android branch, tag imx-android-r12. ICS is based on Linux 3.0 kernel but I haven’t seen big problems using this version (just some warning about missing some IP connection tracking statistics in the sysfs file-system). You can download my latest patch for supporting the OpenRD board and the .config file I used. This patch:

Adroid Android Linux Embedded Marvell Kirkwood OpenRD

6 minutes

Cool Language Compiler Example – Compilers courses

coolc is a limited class use COOL (Classroom Object Oriented Language) compiler written in C using LEX and YACC. coolc will perform an almost complete static type-check on the given file and generate the intermediate code in a three-address language for a limited subset of the COOL constructs. The three-address code will then be interpreted by the built-in interpreter and the output displayed to the user. coolc doesn’t fully support all the COOL language constructs. coolc main features are centered around the developing of the dispatch construct of COOL: ID.ID():void Therefore, briefly, coolc is able to handle: definition of classes without inheritance definition of attributes of various types in classes definition of methods in classes definition of dispatching methods in methods body without parameters and without a return value

Compiler COOL Lex Teaching Material Yacc

2 minutes

December 2011

ftdispi, a library for interfacing SPI devices with FTDI based USB to JTAG dongles

ftdispi is a small library that can be used to interface SPI devices to FTDI based USB to JTAG interfaces. It is based on libus-1.0. It was tested with the Xverve Signalyzer (USB VID 0x0403, PID 0xbca0). Have a look at the included example testftdispi.c for usage instructions.

Drivers FTDI JTAG Linux Linux Drivers SPI USB

1 minute

December 2009

Hardware JPEG2000 on Linux

Eurotech CTR1474 Linux driver. This is a powerful PC/104 board for DVR applications. It features an JPEG2000 codec and TWA2835 video processor.

Driver DVR Eurotech Linux Linux Drivers Pc104

1 minute

October 2009

Using Slovenian characters on an Italian keyboard

An article on how to use Slovenian characters under a Linux/GNU/X11 system. (in Slovene)

Desktop I18N Linux Linux Desktop Slovene X11

1 minute

crosstool-ng for the Maverick Crunch processors

crosstool-ng for the Maverick Crunch processors. With the generated toolchain you can use the FPU unit in this line of processors to speed-up calculations.

Embedded Linux Linux Embedded Toolchain

1 minute

April 2009

Using the Friuli Venezia Giulia’s official cartography (CTRN) on a Garmin GPS

ctrtool is a tool to translate the Friuli Venezia Giulia’s official cartography (CTRN, carta tecnica regionale numerica) in a format readable by the popular Garmin hand-held GPSes. Very useful for hiking. (in Italian)

Cartography CTRN Garmin GIS GPS

1 minute

August 2008

How to build a Debian based embedded distribution

Mindeb, an embedded distribution from scratch based on Debian Etch. (in Italian)

Debian Embedded Italian Linux Linux Embedded

1 minute

December 2006

Serocco PEB/PEF 20532 Linux 2.6.12 driver

Serocco driver. Linux 2.6.12 device driver for the chip “Serocco PEB/PEF 20532”

Driver Linux Linux Drivers Serial

1 minute

October 2006

Hopeless, a system for building disk-less clusters

Hopeless, the description of a system for easy set-up of disk-less clusters, based on unionfs.

Clustering Hpc HPC And Clustering Linux Unionfs

1 minute

September 2006

Atmospheric seeing simulation and correction

Christian Pellegrin’s graduation thesis (in Italian) and the software that was developed.

Astronomy Italian PDL Perl Science Seeing Simulation

1 minute

January 2002

PostgreSQL 7.1.2 SQL3 support analysis

A brief analysis of the SQL3 support in PostgreSQL 7.1.2 can be found here. (in italian) Una breve analisi del supporto di SQL3 di PostgreSQL 7.1.2 può essere trovata qui. (in italiano)

Postgresql Sql Sql3 Teaching Material

1 minute

March 2001

Enjoying Computers, Discovering Linux

An article about the course based on the ECDL syllabus based on Linux and open-source tools organized for high-school teachers published on Linux Journal Online.

Ecdl Linux Linux Desktop Open Source Teaching Teaching Material

1 minute