h4cking, ham radio, fire fighting and m0re

Flashing STM32F446RE Nucleo

After building the MMDVM shield by Toufik F0DEI I tried to flash the MMDVM firmware using the MMDVM Makefile and executed “make deploy”. That command failed and the output said something about that it could not open the port. After looking through the openocd config files I discovered that it looks for a device with 0x0483/0x3748 as VID/PID.

But in my case the board showed up with 0x0483 0x374b. After changing this in /usr/share/openocd/scripts/interface/stlink-v2.cfg the deploy command worked like a charm and transferred the firmware successfully. By the way: This was done on an Ubuntu 16.04 with openocd v0.9.0 installed from the official repositories.

IC-2820 With Fixed GPS Position

I am running an ICOM IC-2820 at home for D-Star repeater use. It has the D-Star unit built in and the GPS antenna was connected. The GPS module seems quite deaf at it takes ages for it to get a satellite fix. And what also was annoying is that the reported GPS position suffers from (small) drifts over time. That results in a bunch of point on maps and similar. So I was looking for a way around this issues and made a proof-of-concept.

Click me.
Click the image for a larger view.

Udev Rules for Quad Serial Adapter FT-4232H

After running out of available serial ports for sniffing purposes I ordered a 4-port serial adapter with FTDI FT-4232H chip. That is basically an USB-RS232 adapter with four ports built into one device. That should be sufficient to run slsnif or jpnevulator in order to debug or reverse engineer serial protocols. After plugging the device there is the usual gambling about which device has what device name. For standard FT-232 chips I have some custom udev rules that create symlinks for various purposes. That should also happen to this quad port adapter.

Determine DVmega FW Version

A while ago I published some shell code that allowed for detection of the firmware version on DVmegas. That did not work realiably. So I made a small C snippet based on the MMDVM code by Jonathan G4KLX. The source can be found under [1]. It should compile on any Linux system without errors.

Programming Arduino Due From Console

While looking around the MMDVM project I found a nice utility that allows for programming the Arduino Due from the console (see [1]). That is interesting because up to now I had always been on site to upgrade my MMDVM firmware. As I do not have a graphical environment running on the Raspberry Pi driving the MMDVM installing Arduino IDE is not an option.

Instead I can build the new MMDVM firmware with the Arduino IDE on any other computer and export the compiled sketch as binary file. That can be done using the “Sketch” menu within the Arduino IDE.

Stop Motorola Radio to Steal Default Routes

During some experiments with programming my DP3600 I experienced issues with my network connection when the radio’s programming cable is plugged to the USB port. This was also reported by Andreas, DL5APR when he plugged his DM series mobile radio in. The result is that no internet or local LAN connections are possible any more. Analyzing this reveals that it registers a new network device on my Ubuntu 16.04 host operating system. For some reason it claims the same IPv4 address as my eth0 device. That results in a broken routing table and all network stuff is interrupted.

Homebrew DMR Master With HBlink

After digging around on Twitter DB9MAT and me did some experiments with HBlink (see [1]). This is a nice little piece of Phyton code that implements some kind of homebrew protocol that can be used to link some MMDVMHosts together. After cloning the github repository on an Ubuntu 16.04 system I just had to install a Phyton library for bitstream operations. After that the binary can be launched. Of course it needs some configuration.

Making APRS Movies

As I could not visit the HamRadio this year I took various chances to see whats going on down there. I kept an eye on APRS to see what the visitors are doing. To visualize this a bit I created a little script that compiles a movie from screenshots taken every minute. The screenshots are taken from the Gnome Desktop showing the FireFox browser with the page from the location. A cronjob executes the binary scrot for taking the screenshot every minute. The result looks like this:

Click me.
Click the image for a larger view.

Guest WIFI With Netgear WNDAP360

The other day I read an article about some nice project using a Raspberry Pi as a WIFI access point generating a guest WIFI network. The key is generated randomly and presented as QR code to the user on a small TFT display. For protection purposes it is re-generated every 24 hours or the like (See [1]).

I tried to implement such a thing using 802.1X with predefined user and passwords placing the user into a separated VLAN. That failed because it required SSL certificates signed by an official Certification Authority which I do not have. The other option would be to integrate my own CA into the devices connecting the wireless network. So no option either.

Click me.
Click the image for a larger view.

Fake Virtual Box BIOS Time

Some Windows software in my virtualized Windows XP machine stopped working the other day. It says that the validity period is over. Okay that should not be too hard to get around this issue. As the machine is running on a VBox anyway I looked for some solution to fake the BIOS time - and found something:

$ VBoxManage modifyvm "Windows Testsystem" --biossystemtimeoffset -126489600000

That simly changes the offset from the system time to the virtualized BIOS time. Note: It takes milliseconds as an argument. As I needed the time to be some 4 years a ago I calculated: 60*60*24*366*4*1000. That results in:

Click me.
Click the image for a larger view.