Proxmox cluster setup

I recently created a Proxmox cluster for some physical machine … for making it short, it sometime more efficient to run its own machine that going to cloud, in particular when you can manage a lower service level. So I use a mix of solutions, some on VM running on cloud provider solution like for critical production (Helium services as an example) and I have some bare-metal machine for high computation service (like Helium ETL) where cloud provider would invoice $3000 a month and for the rest I decided to run a Proxmox cluster to have an intermediate low cost infra with a minimum of redundancy I can master.

I started with 2 nodes with the ability to move workload from one to the other and as recently i got a corruption on one of my ZFS storage loosing one of the NVME, I’ve been happy of this setup. Unfortunately, when restarting the damaged node after being repaired, the second one restarted all the VMs causing an unexpected service failure. Let’s see how to setup a Proxmox cluster for not getting into this.

Continue reading

STM32WL and Flash memory usage in a LoRaWan / Sigfox use-case

The choice of an STM32WL microcontroller precludes the use of internal EEPROM, requiring the use of either an external EEPROM or the internal Flash memory for storing persistent data. The latter option is often favored in many designs (and modems) for cost reasons, though it comes with certain implications.

Using networks like LoRaWAN and Sigfox involves regular persistent writes. In the case of LoRaWAN, using OTAA (Over-The-Air Activation) mode, the devNonce must be recorded during each join procedure to ensure its uniqueness over network connections. Here, the number of persistent memory writes will theoretically be low (except for the battery end-of-life scenario discussed later). For an ABP (Activation By Personalization) connection, the situation differs significantly; the frame counter (FCnt) must be recorded so that it does not reset to zero in the event of a reboot. The same applies to Sigfox and its SeqId, which must increment with each communication. Without specific logic, LoRaWAN ABP and Sigfox will write to persistent memory with each data transmission.

While an EEPROM memory area has a lifespan of about 100,000 to 1,000,000 cycles (still potentially lower than the number of messages sent during the object’s lifecycle), a Flash memory area lasts only 10,000 writes, a number quickly reached in IoT communications. Therefore, using Flash as persistent storage requires a different approach compared to EEPROM in this context.

Continue reading

Install UniFi-controller on Raspberry-Pi

UniFi is a really good brand from Ubiquiti for network equipment (no sponsorship, just my feeling) in particular for home and small businesses. It comes with a controller to manage the whole network. This controller can be deployed on a small computer like raspberry Pi. It runs mongoDB, Java, so I recommend to use a PI4.

I was running a UniFi controller on my RPI4 since a while… But I had the wrong idea to apt-get upgrade the system and it crashed… Why ? Mostly because the controller distribution is a bit a mess with the MogoDB version and the 32b / 64b, but at the end you’re stuck.

So I’ll describe here how to install the controller in a proper way with docker.

Continue reading

Let’s Get Started with Helium & RAK11300 (RP2040 + SX1262)

In this blog post, we are going to see the steps to get started on Helium, with Chirpstack LNS using a RAK11300 module on a RAK wisblock board.

We are just going to setup a device with a LoRaWAN heartbeat to display it on Chirpstack.

Continue reading

Access Helium Off-Chain PoC on AWS

With the Solana migration, the Helium ETL has became obsolete, the Proof of Coverage (PoC) data are not anymore on the chain but they can be publicly accessed from an AWS bucket. We are going to see how to access these data and what I’m developing to manage them.

Discover my github project to manage Helium Off-Chain POC data

Continue reading

Kerlink Wirnet iZeptoCell

Kerlink iZepToCell

The new baby in Kerlink family has arrived, it’s iZeptoCell ! Ok, I’m a bit late to write this blog post and it came alive a couple of months ago. When I say baby, I really mean baby, no due to its age but more related to its size !

This LoRaWan gateway is really small and can take place in any indoor environment looking like a sensor but providing a wide range connectivity for many devices deploy around. This is a really good option to cover a small / medium company floor up to a building.

This gateway exists with an Ethernet connectivity like the one I’m testing and with a Cellular connectivity, something appreciated when corporate IT dislike having devices on the corporate network.

Continue reading

Fix Postgresql data corruption “invalid page in block … of relation base/16384/…

Bad news yesterday after a power failure on a server, impossible to restart my Helium ETL service: the database has been corrupted and the service is failing with the message “invalid page in block 54206178 of relation base/16384/186119818”

I had to spend time on the web and chatGPT wasn’t helping me (I’m kidding, this bot is stupid) to find a correct way to solve this, luckily, this has been resolved and here is the way I did it.

Continue reading