A couple of years ago, I ordered a couple of Wi-Fi switches from a well-known Chinese vendor whose cave overflows with electronic gadgets. Surprise, the switches were not based on the ubiquitous ESP chips. Instead there was a tiny daughter board which was labeled TW-02, V2.0. This is a small Wi-Fi module based on the W600 from Beijing Winner Microelectronics. Some months later I ordered a Wemos W600-Pico with the idea that it could be used to learn something about the W600. Then this week I finally resumed my time consuming and costly quest to hide the shame of my $10 mistake and managed to upload some MicroPython scripts to the board [...more]
On uploading a blink sketch onto a NodeMCU ESP-12H-Kit which is a development board using the single core ESP32-S2 that I had never used before. There was no problem with the upload, I just could not get the Arduino IDE serial monitor to open correctly to see the serial output from the sketch [...more]
This is a complete rewrite of the post that was about two years old. The coverage of the Seeeduino XIAO is broader and hopefully better. Twenty Arduino sketches accompany the overview. [...more]
Four hardware serial interfaces on the Seeeduino XIAO, can anyone do better? Here's why I feel pretty confident that this is the limit and how to go about doing it. It's also a story about getting tripped by an almost trivial mistake and how frustrating it can be to get out of such a self created mess [...more]
Refreshed the post about the SAM D21 serial communication interface (SERCOM) on the XIAO which is still being consulted. Hopefully, the additional SERCOM pad multiplexing table will be of help, along with the correction to the previous table showing the mapping in SERCOM order. Also added warnings about the inadvisability of moving I²C to any other SERCOM port on the XIAO. An error in the wiring diagram for I²C on SERCOM0 was removed, with abject apologies for time lost until the penny dropped that the SDA signal could not be connected to the single ADC pin. In the inimitable style of Bart Simpson: D'oh. Finally there's a warning about the fact that pin assignment is not as simple as the post makes it appear [...more]
Perhaps not surprisingly given other posts along the same line (The Mosquitto MQTT Broker in Raspberry Pi OS (Bullseye) and WireGuard on Raspberry Pi OS (Bullseye)), the newer versions of Raspberry Pi OS Lite break my previous instructions about streaming sound with Bluetooth®. While BlueALSA has been removed, it can, nevertheless, be installed or replaced with PulseAudio to continue to stream sound to or from the Pi running Raspberry Pi OS Lite (Bullseye) [...more]
Some niggling points concerning the
TThread class mostly about memory leaks
How to mount an NFS share on a remote OpenMediaVault system accessed through a WireGuard virtual private network [...more]
A short note on creating a minimal working configuration for version 2.0.11 of the Mosquitto MQTT broker included in the January 2022 release of Raspberry Pi OS [...more]
The January 28, 2022 release of Raspberry Pi OS based on Debian 11 (
Bullseye) broke the the installation procedure described in the September 2021 post because the
iptables package is no longer included. While I put up a temporary addendum in February 6 to document the problem and a work around, I decided it was best to redo the complete guide which now shows how to route IP packets through a Wireguard VPN "server" using
nftables. The old guide remains available for those not yet using Bulleye (including the Legacy version of Raspberry Pi OS)
Another post about the
CameraWebServer example by Espressif, which is a video server based on the ESP32 module with a camera. I have adapted the code in such a way that it is compatible with both the Arduino and PlatformIO development platforms, adding some features, including support for an LED that serves as a photographic flash found on the ESP32-CAM by AI Thinker
[...more (in French)]
With the ESP32-CAM module from Ai Thinker, DIY enthusiasts have access to the equivalent of a low-end Wi-Fi camera for a very low price. It is therefore not surprising that it has generated a lot of interest. Although it's been a year since I bought a clone, it wasn't until recently that I started examining this development board. Here is the story of my initial experiences with this module that I plan to install in the garage as the ultimate means of checking if the cars are parked there and if the door is properly closed. [...more (in French)]
Here is an idiosyncratic choice of tools to help in cleaning HTML files. It reflects constraints imposed by some design decisions when I created my web site and particular requirements, notably that I prefer programs that can be used locally on my desktop [...more]
On how I installed and ran the W3C LogValidator on my remotely hosted web site. This was done with a mixture of cPanel tools and standard Linux tools using an SSH session [...more]
I will not be moving to the latest Debian 11 Bullseye based version of Raspberry Pi OS for a while yet. Consequently I updated the guide to installing the OS on a Raspberry Pi to explain why it may be prefereable to continue using the Debian 10 Buster based version of the operating systm and showing how to get that older version [...more]
Changes to the Site
The process of updating the appearance of old posts started back in August of 2020 continues at a slow pace. It is boring, to say the least. At the same time, there have been some internal changes made to the GTML project file and source files needed because of an unfortunate choice of delimiters when the site was first started. I had not anticipated that
:] would appear in the text of a number of posts and confuse the GTML preprocessor. The delimiters were changed to
²). If I remember correctly, the only systematic use of the
² glyph is in some serial communication protocol names such as I²C which should not cause any problems. It would have been too much work to manually change the delimiters in all the source files so it was done with typical Linux tools (
sed and so on). That did introduce some errors, but I hope that the most egregious ones have been eliminated. If you find an error, please warn me by sending an e-mail. There is a link at the bottom of each page for that purpose.
Another change is that local searches with Startpage (using the SP button beside the search box at the top of each post) function again. I do not know when it stopped working, but the problem was easily identified: the syntax query was changed for reasons that escape me. Not as easy was finding the new incantation which required considerable trial and error. Unfortunately, there is no guarantee that the syntax will not be changed in the future.
While only two search engines, DuckDuckGo and the above-mentioned Startpage, can be used for a local search from the top of each page on this site, another three engines are provided on the Achives page: Qwant, Google and Bing. I removed Yahoo search because it gets its results from Bing without providing any additional value that I could see.
Surprisingly little has changed in the couple of years since I last looked at Bluetooth on the Raspberry Pi. As before, some tweaking is needed to use Bluetooth for audio streaming in the
Lite version of the operating system. As before, the SAP profile is still being loaded as if the Pi has a built-in SIM card. That remains a simple thing to fix. Unfortunately, I have been unable to find a reliable work around for the Failed to set privacy: Rejected (0x0b) error
This is the third part of the guide on the installation of a home automation system on a Raspberry Pi. It covers setting up optional services: WireGuard a VPN server, Syncthing a file synchronization server, MJPG-Streamer a video streaming server for webcams and Raspberry Pi camera modules, Radicale a calendar and contact server and chrony as an NTP client and server.
Surprisingly, a post entitled Secure Webcam streaming with MJPG-Streamer on a Raspberry Pi remains relatively popular, despite its age and inadequate presentation of the security aspects. I hope to write a new post on video streaming. In the meantime, I decided to rush publishing this incomplete post because it does update how to set up MJPG-Streamer and shows how to use NGINX to create a reverse proxy enabling secure video streaming outside of the local network [...more]
Small addition to the post about problems when translating the ASCII "|" character [...more]
This is the second part of the guide on the installation of a home automation system on a Raspberry Pi. It covers setting up the major services needed: Domoticz a home automation application that is the hub of the system, Eclipse mosquitto an MQTT broker that is used for communication between the hub and the IoT devices, HA Bridge a service that enables local voice control of IoT devices with Dot Echo smart speakers and NGINX a Web server that can be used to upload new firmware to the IoT devices [...more]
The installation of Wireguard in the latest version of RaspberryPi OS (with a Linux 5.10 kernel) is much simpler because the
wireguard package is now available in the OS repository. Consequently the first part of the post on the VPN server (one of the most consulted posts on this site) had to be rewritten
This post is a draft of a projected multi-part guide on the installation of a home automation system on a Raspberry Pi. This first part describes the installation of the
Lite version of Raspberry Pi OS on a Raspberry Pi without connecting a monitor, keyboard or mouse to the single card computer. It is meant to replace a similar guide written in late 2019. While most things have not changed much in the intervening two years, the arrival of the Raspberry Pi Imager greatly simplifies installing the OS on a headless Pi right from the start
What can only be qualified as a malevolent attack brought down a number of servers belonging to the web hosting provider that I use. For three days, the provider has worked to restore these systems with mitigated success, but I was among the lucky customers [...more]
A description of the nerve-racking procedure to get induce Alexa to discover a newly added home automation device made available through HA Bridge [...more]
This post presents a Python script that sends an e-mail notification if the public IP address (aslo called the outward facing or wide area network IP address) of the local area network has changed or if a dynamic domain name does not resolve to the current public IP address [...more]
Corrected a mistake in the original post. Thanks to Jürgen Bellin and Seamus de Mora I now know that it is possible to connect a real time clock to I²C bus 0 [...more]
Version 0.3.6 of the utility, that only used the MQTT broker and would not run at all if the mosquitto library is not installed, and
tasmotasbacker0 which did not use MQTT at all have been combined into a single utility that offers two ways to discover Tasmota devices. Moreover the new 0.9 version of
tamostasbacker will run on a system whether the
mosquitto library is installed or not
One can find simple scripts that download the configuration of Tasmota devices. I wanted something which offered a few more options. On the other hand, there are much more complex solutions which include gathering all downloads into a database. That seemed much more than necessary for my needs: backing up to a sinple directory on a drive is sufficient. So here is what I came up with [...more]
The Canadian Hydrographic Service (CHS) at Fisheries and Oceans is changing its way of doing things and now offers access to its data a REST application programming interface. It is therefore necessary to modify the Python scripts which obtain the hours and heights of high and low tides [...more (in French)]
After printing a few objects created by others with my new 3D printer, I wanted to try my hand at creating a practical 3D object with OpenSCAD. This post shows how I designed a tablet stand made of two three-dimensional A's with curly hooks at the ends of the legs that wrap around the bottom edge of the tablet [...more]
A fractious look at the GNU gettext translation system as implemented in Free Pascal / Lazarus... Finally getting around to partly documenting the use of the reference field when dealing with PO files in the poutils utilities. [...more]
Not Much Going On
It may seem as if not much is happening on this site lately. But appearances can be deceiving and a number of projects are in various stages of development. Recently, I have uploaded three projects to my GitHub account:
- domoticiz_button: a very simple home automation controller. Based on an ESP8266 dev board such as the D1 Mini or nodemMCU, a small 0.96" OLED display and a combination rotary switch and push button, just about every IoT device in the house can be controlled through the Domoticz home automation server. MQTT is used to communicate with the server.
- lazmqttc: a basic MQTT client written in Free Pascal/Lazarus using the Eclipse mosquitto library. It was fun to program in Free Pascal again.
- poutils: which are command line utilities to modify Free Pascal/Lazarus .po translation files.
I hope to find some time to provide more information about these projects here in the future.
This is a trend that will continue: posts with more or less detailed explanations will continue to be available here, but accompanying code will be made available through GitHub if I think that distribution model is best.
There is conflict between the
python-is-python2 packages that may need to be resolved when installing TortoiseHg and Virtual Box in Mint 20.1
Yet again, the scanner in the Brother DCP-7040 multifunction printer does not work out of the box in Ubuntu 20.04 and Mint 20.1. In addition to fixing the changes to the directories that contain third-party scanner drivers, it is now necessary to install an old library to manage USB connections [...more]
In September 2020, I made a snap decision to get a ANYCUBIC Mega Zero 3D printer almost immediately after seeing YouTube videos about it. The printer was available in Canada at a surprisingly low price. The version I bought is being supplanted by the Mega Zero 2.0 but currently Americans can obtain the original Mega Zero at a very low price of $119 US + shipping charges. Not knowing how long this offer would last, I hurriedly wrote down my first impressions of the printer, in the hope that they could help other beginners who, like me, just want to try 3D printing before committing to a large expense [...more]
As a temporary measure, I have installed OctoPrint and MJPG-Streamer on a Raspberry Pi 3. Since I intend to replace the Pi with a different single-board computer, I did not install the SD image OctoPi but instead proceeded with a manual installation of the needed packages just as I will have to do it with the other sbc in a short while [...more]
Installing a WireGuard virtual private network server on openmediavault running on an x86-64 system was faster and simpler than on the Raspberry Pi. The user and server configuration script by Adrian Mihalko worked just as well with just a little tweak for the network interface name. [...more]
Setting up Wi-Fi with a static address on this very small single-board computer running the Debian or Ubuntu OS images provided by Radxa turned into something of an obstacle course. To be fair, part of the difficulties were the result of stupid mistakes and in the end, the solutions is pretty simple. I hope this post will nevertheless be useful [...more]
A second version of RaspberryPi OS has been available since December 2019. Preliminary tests have shown that, much like its predecessor, this updated version of Raspbian from the Raspberry Pi Foundation brings nothing much that is new insofar as installing and using the virtual private network software WireGuard is concerned. As far as I can tell there is one less step required in the installation process [...more]
The first version of the "minimalist" Internet Radio did not generate much enthusiasm at home, so here is a new improved version [...more]
Just set up a satisfying Internet Radio which is a minimalist implementation of the GitHub project, ESP32-Radio, in less time than it took to write this post. Many thanks to Ed Smallenburg (Edzelf) for his repository [...more]
A section with links to more information on the web about the XIAO was added to the original post [...more]
With a USB-C port and with two I/O pins providing USART Tx and Rx connectivity, the XAIO can fill in as a USB to serial converter in a pinch [...more]
The post contains a general approach to creating and using
GFXfont type fonts containing up to 224 characters arbitrarily chosen from plane 0 of the Unicode character set. This proposal respects the
Adafruit-GFX library's prime directive which is to maintain compatibility with existing Arduino sketches, since no changes are made to
Adafruite-GFX. The post is similar to the one published on October 23 and replaces the October 8 post which was withdrawn
[...more (in French)]
The default licence for my code on this site has been changed to the BSD Zero Clause License created by Rob Landley. I have also finally got around to being more explicit about the copyright for the posts found here [...more]
A few days ago, someone sent a message to my Facebook account. Unfortunately, I somehow managed to delete the message without reading it nor can I remember the coordinates of the sender. I am sorry that I cannot reply and hope that the sender will accept my apologies.
Please do not try to reach me through Facebook/Messanger which I reserve for personal use. Instead use the e-mail link at the bottom of each page and you will get a reply.
This is a much needed update of the original October 2017 post on how
to set up rsyslog on Raspberry Pi OS as a centralized
syslog server and how to
enable remote error loggin in Tasmota
By default, proportional fonts that can be used with the Adafruit GFX Library and other libraries that are compatible with GFX fonts are limited to the 95 printable 7-bit ASCII characters (code points 32 (0x20) to 126 (0x7E). This is my attempt at supporting 8 bit character sets which is throwback to the pre UCS, pre Unicode code page concept. A modified
fontconvert utility, called
fontconvert8 can extract any subset of glyphs from a TTF font although I have included only two examples: ISO 8859-1 (Latin 1) and ISO 8859-15 (Latin 9). Then I have written two
utf8tocp functions to simplify displaying UTF-8 encoded strings using these fonts with displays. This is not a universal solution, anyone wanting to use a different code page than the two provided will have to modify
fontconvert8 source and the