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.
3 minutes
February 2016
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.
1 minute
November 2013
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
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
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 10.0.1.69 is your router IP address) the URL: http://10.0.1.69/setup.cgi?todo=debug 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
October 2009
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
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