prettier..content

main
Dominic Reich 2 months ago
parent c6b582b1bf
commit 4b9975a63e
Signed by: dominic
GPG Key ID: BC9D6AE1A3BE169A

@ -1,7 +1,6 @@
---
title: OE7DRT
description: my personal website
---
This is my personal space on the internet that I use mainly to keep track on
@ -9,4 +8,3 @@ different topics mainly on tech stuff like [**amateur radio**](/categories/amate
or general [computer](/categories/computerstuff/) related topics with some
flavour of [Linux](/tags/linux/) and [networking](/tags/networking/) (and
a bit of [\*BSD](/tags/openbsd/))

@ -4,8 +4,7 @@ date: 2019-08-21
coverCaption: >
Längenfeld at the evening.
Photo taken near [Astlehn/Fischbach](https://www.openstreetmap.org/?mlat=47.062377833333336&mlon=10.959586666666667#map=15/47.062377833333336/10.959586666666667).
lastmod: 2024-09-22T12:53:48+0000
lastmod: 2024-09-28T23:48:06+0000
comment: false
showDate: false
@ -17,7 +16,6 @@ showAuthor: false
sharingLinks: false
feed_exclude: true
---
## Who Am I
@ -56,13 +54,13 @@ I usually participate in the following [Winlink](https://winlink.org/) nets:
### [Winlink Wednesday](https://winlinkwednesday.net/)
> The original Winlink Wednesday is a weekly amateur radio digital
net where check-ins are accomplished by using the Winlink (global
email via amateur radio) system.
> net where check-ins are accomplished by using the Winlink (global
> email via amateur radio) system.
> The primary purpose of Winlink Wednesday is to encourage the regular
use of the Winlink system among amateur radio operators by providing an
opportunity to expand their skills with Winlink, and to practice them
on a regular basis.
> use of the Winlink system among amateur radio operators by providing an
> opportunity to expand their skills with Winlink, and to practice them
> on a regular basis.
I think this summarizes the Winlink Wednesday pretty well.
@ -73,14 +71,15 @@ This is a german speaking net currently maintained by Patrick, OE1LHP.
To quote the groups.io description:
> This group is for announcements and information concerning the Winlink Net "WLNET-OE".
It represents some kind of Blackboard for those who want to participate and learn about
the use of Winlink in not only emergency communication situations.
Amateur radio operators from in and outside of Austria are encouraged to join the sessions.
To be clear: everyone is welcome, but keep in mind that the primary language will be German.
> It represents some kind of Blackboard for those who want to participate and learn about
> the use of Winlink in not only emergency communication situations.
> Amateur radio operators from in and outside of Austria are encouraged to join the sessions.
> To be clear: everyone is welcome, but keep in mind that the primary language will be German.
I try to participate every week.
{{< comment >}}
### [FFWN](https://w0rmt.net/ffwn/)
Well, I'm not so active on Mastodon (in terms of writing posts) but I
@ -89,9 +88,9 @@ occassionally participate in the net when I find the time.
Also to quote the website:
> For those operators who are active on federated social media (the “Fediverse”;
i.e., Mastodon), there is a weekly Winlink net called the #FediFridayWinlinkNet
(or #FFWN). Any amateur operators are welcome to check-in and participate, and
also to take turns serving as net control! And be sure to follow #FFWN on Mastodon.
> i.e., Mastodon), there is a weekly Winlink net called the #FediFridayWinlinkNet
> (or #FFWN). Any amateur operators are welcome to check-in and participate, and
> also to take turns serving as net control! And be sure to follow #FFWN on Mastodon.
Find out more by following the hastag [#FFWN](https://mastodon.radio/tags/FFWN)
(example link -- follow it on an instance that you like/prefer).
@ -126,9 +125,9 @@ to send me emails.
Feel free to encrypt your message with OpenPGP and make sure you got this
fingerprint:
~~~
```
D49A 3CE2 CCF7 2668 4D98  9A31 BC9D 6AE1 A3BE 169A
~~~
```
My public key is on [keys.openpgp.org][key] or on [my website][web] (\~4KB).
@ -149,4 +148,3 @@ GNU/Linux is the host system that serves the websites with Apache at _(celeste.)
Some scripts still run on the old host at _bor.oe7drt.com_ which runs OpenBSD 7.5.
Moving these script to the Linux host is already in progress (when time allows) and
I don't think I will upgrade the host to OpenBSD 7.6.

@ -7,9 +7,7 @@ showReadingTime: false
showWordCount: false
feed_exclude: true
---
I will not write reviews of my equipment here, this page lists my equipment only.
The publishing dates represent usually the day I got (bought) the stuff.

@ -11,10 +11,8 @@ showPagination: false
feed_exclude: true
weight: 30
---
A few of my used notebooks are listed below.
Descriptions and/or opinions may not be complete -- they may not have
been used only for amateur radio.

@ -1,16 +1,14 @@
---
title: Apple MacBook Pro Mid 2015
summary:
summary:
date: 2015-09-29
# coverCaption:
# lastmod:
# coverCaption:
# lastmod:
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
This was my photography laptop running Lightroom and Photoshop back then.
It is still a good choice: that's why I replaced the battery in 2024.

@ -1,14 +1,13 @@
---
title: Asus X73SV-TY152V
summary:
summary:
date: 2011-09-29
# coverCaption:
# lastmod:
# coverCaption:
# lastmod:
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
I think this was my first laptop with hybrid graphics (Nvidia) and if
@ -21,4 +20,3 @@ Windows versions.
[bf2]: https://en.wikipedia.org/wiki/Battlefield_2
[Loxone]: https://www.loxone.com/

@ -1,14 +1,13 @@
---
title: HP Elitebook 830 G6
summary:
summary:
date: 2024-05-25
# coverCaption:
#lastmod:
# coverCaption:
#lastmod:
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
I got this one specifically for my Winlink stuff so I don't have
@ -22,4 +21,3 @@ and similar protections).
These protections are one big reason that will keep me from buying
an HP laptop again.

@ -2,16 +2,14 @@
title: Lenovo T420
summary: A tough notebook from Lenovo. It was quite decent when it came out.
date: 2017-07-22
# coverCaption:
lastmod: 2024-06-15T21:34:37+0000
# coverCaption:
lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
i5 quad core
It's still usable but playing the VP9 codecs (youtube) in fullscreen can lag sometimes.

@ -1,14 +1,13 @@
---
title: Lenovo T60
summary:
summary:
date: 2014-02-10
# coverCaption:
# lastmod:
# coverCaption:
# lastmod:
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
I don't use this anymore. It has a broken screen so it is packed into
@ -18,4 +17,3 @@ It ran primarily FreeBSD mostly without X. I used this often when I had
to sleep at other locations for work to check my emails and read through
some newsgroups. (I do not need a computer for my work so I used this at
the evenings when I was back in the appartement.)

@ -2,13 +2,12 @@
title: Lenovo X1 Carbon Gen7
summary: Compact notebook with solid hardware for power users.
date: 2023-05-09
# coverCaption:
# coverCaption:
# lastmod: 2024-05-09T14:26:01+0000
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
linux machine... pat, winlink, had openbsd and freebsd on it for a while...
@ -21,4 +20,3 @@ to keep them up to date.
I would like to have more power and RAM on this machine (more power cores)
but hey, it is really small so I will live with it...

@ -2,13 +2,12 @@
title: Microsoft Surface 2 Go
summary: Small tablet that runs Windows 10 (11).
date: 2022-11-11
# coverCaption:
# coverCaption:
# lastmod: 2024-05-09T14:25:51+0000
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
I currently run Fedora Linux on it -- because the touch interface
@ -20,12 +19,11 @@ hate lagging computers :winking_face_with_tongue:
Some data:
| weight | description |
| :--- | :--- |
| 541g | tablet alone |
| 561g | tablet with pen |
| 786g | tablet with keyboard |
| weight | description |
| :----- | :--------------------------- |
| 541g | tablet alone |
| 561g | tablet with pen |
| 786g | tablet with keyboard |
| 806g | tablet with keyboard and pen |
I would not buy one again -- it is way too slow to be used by normal people.

@ -1,14 +1,13 @@
---
title: Toshiba Satellite Pro P100
summary:
summary:
date: 2007-11-01
# coverCaption:
# lastmod:
# coverCaption:
# lastmod:
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
Used for some basic internet tasks like reading websites and PDFs,
@ -16,4 +15,3 @@ checking mails and editing office documents.
This one shut itself down very often when it got too hot. It was
really annoying.

@ -2,17 +2,16 @@
title: Tuxedo Polaris 17
summary: shit laptop - shit company
date: 2021-04-30
# coverCaption:
# coverCaption:
# lastmod: 2024-05-09T14:40:37+0000
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
Bought because of Linux. Tuxedo provides only very old LTS distributions like
fu***** Ubuntu 22.04...
fu**\*** Ubuntu 22.04...
Keyboard drivers must be installed in order to use backlight...
@ -20,4 +19,3 @@ lots of problems with that device - also on other installations of other distros
I still use this for cracking passwords with john or hashcat and gaming with Steam.
It is also powerful enough to run a view virtual machines.

@ -11,7 +11,4 @@ showPagination: false
feed_exclude: true
weight: 20
---

@ -11,7 +11,4 @@ showPagination: false
feed_exclude: true
weight: 20
---

@ -11,7 +11,4 @@ showPagination: false
feed_exclude: true
weight: 20
---

@ -1,6 +1,6 @@
---
title: Inateck 40l
summary:
summary:
date: 2021-06-30
showBreadcrumbs: true
@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true
draft: true
---

@ -1,6 +1,6 @@
---
title: Kombat UK Viking 60l
summary:
summary:
date: 2020-09-01
showBreadcrumbs: true
@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true
draft: true
---

@ -1,6 +1,6 @@
---
title: The North Face Jester 26l
summary:
summary:
date: 2020-10-16
showBreadcrumbs: true
@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true
draft: true
---

@ -1,6 +1,6 @@
---
title: Skysper Daypack 20l
summary:
summary:
date: 2024-05-11
showBreadcrumbs: true
@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true
draft: true
---

@ -1,6 +1,6 @@
---
title: TT Modular Pack 30l
summary:
summary:
date: 2024-05-05
showBreadcrumbs: true
@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true
draft: true
---

@ -1,6 +1,6 @@
---
title: TT Modular Trooper Pack 55l
summary:
summary:
date: 2023-06-21
showBreadcrumbs: true
@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true
draft: true
---

@ -1,6 +1,6 @@
---
title: TT Urban Tac Pack 22l
summary:
summary:
date: 2024-08-25
showBreadcrumbs: true
@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true
draft: true
---

@ -11,7 +11,4 @@ showPagination: false
feed_exclude: true
weight: 20
---

@ -1,6 +1,6 @@
---
title: Manual coffee grinder
summary:
summary:
date: 2024-09-22T22:54:30+02:00
showBreadcrumbs: true
@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true
draft: true
---

@ -1,6 +1,6 @@
---
title: Titanium French Press
summary:
summary:
date: 2024-09-22T22:54:21+02:00
showBreadcrumbs: true
@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true
draft: true
---

@ -12,10 +12,8 @@ showPagination: false
feed_exclude: true
weight: 10
---
## (Hot) outdoor food
A hot meal is sometimes needed and I haven't tested much of these -- I bought
@ -57,4 +55,3 @@ from Blasercafé.
I do have a titanium French Press and a hand mill -- a hot coffee is the best
thing to enjoy somewhere outside of civilisation (add some Speck and Brötle to it
and it is absolutely perfect!).

@ -11,7 +11,4 @@ showPagination: false
feed_exclude: true
weight: 20
---

@ -11,7 +11,4 @@ showPagination: false
feed_exclude: true
weight: 10
---

@ -20,7 +20,6 @@ showWordCount: false
feed_exclude: true
weight: 40
---
{{< alert >}}

@ -2,21 +2,20 @@
title: "Coax Cables"
summary: A quick comparison of the three coax types that I use.
date: 2024-03-02T09:55:35+01:00
lastmod: 2024-03-31T11:02:44+0000
lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
## Comparison
| Name | ∅ \[mm\] | Impedance \[Ω\] | Lenght \[m\] | Loss \[dB\] | Loss/100m \[dB\] | Weight/m \[kg\] |
|:------ | --------:| ---------------:| ------------:| -----------:| ----------------:| ---------------:|
| H-155 | 5.50 | 50.44 | 10.18 | 0.329 | 3.232 | 0.38 |
| RG-174 | 2.79 | 50.70 | 6.03 | 0.775 | 12.850 | 0.01 |
| RG-316 | 2.59 | 49.45 | 5.15 | 0.568 | 11.025 | 0.01 |
| :----- | -------: | --------------: | -----------: | ----------: | ---------------: | --------------: |
| H-155 | 5.50 | 50.44 | 10.18 | 0.329 | 3.232 | 0.38 |
| RG-174 | 2.79 | 50.70 | 6.03 | 0.775 | 12.850 | 0.01 |
| RG-316 | 2.59 | 49.45 | 5.15 | 0.568 | 11.025 | 0.01 |
Measurements have been made with a NanoVNA-H (HW version 3.4) version 1.2.19 (Build time: Jan 31 2023 - 16:06:06)
at 14.020 MHz (because that is around the frequency that I use mainly at my home QTH).
@ -33,4 +32,3 @@ and is "not so lossy" than the RG-174.
I'd take the RG-174 when I'm not sure about what lenght the antenna cable
should be because I have two cables with 6m with the appropriate connectors
already on the cables.

@ -6,12 +6,11 @@ summary: |
coverCaption: My selfmade common mode choke placed into a neat plastic case
with BNC connectors.
date: 2023-10-26T13:36:26+02:00
lastmod: 2024-03-31T11:02:19+0000
lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
So this is basically a 140-43 toroid with 9 turns of RG174 connected to
@ -27,4 +26,3 @@ I find this okay for now but I still wonder if this can be made any better
(maybe 30dB attenuation?). Would I benefit from even more attenuation?
I will probably find out on another day.

@ -1,6 +1,6 @@
---
title: "Antenna masts"
summary:
summary:
date: 2024-03-17T20:38:06+0100
showBreadcrumbs: true
@ -8,7 +8,6 @@ showReadingTime: false
showWordCount: false
draft: true
---
## FGM-Fiberglasmast

@ -1,8 +1,8 @@
---
title: Mobilinkd TNC4
summary:
summary:
date: 2023-10-01T22:24:03+01:00
#lastmod:
#lastmod:
#categories:
#- amateur-radio
#- computerstuff
@ -18,7 +18,4 @@ showWordCount: false
# site_exclude: true
draft: true
---

@ -2,12 +2,11 @@
title: NanoVNA-F
summary: A so-called "fake" NanoVNA.
date: 2020-07-05
lastmod: 2024-09-22T12:54:18+0000
lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
I bought a "fake" NanoVNA-F in my early days as an amateur radio operator
@ -19,4 +18,3 @@ I wouldn't buy any device from SYSJOINT again. Also software wise.
**Update:** I've changed one SMA connector and most problems are gone but
sometimes the curve still flickers and moves a little bit.

@ -3,16 +3,14 @@ title: NanoVNA
summary: The compact and trusty NanoVNA-H. Small and efficient.
coverCaption: The NanoVNA-H is very compact and I like it for portable operation.
date: 2022-05-16
lastmod: 2024-09-22T12:54:18+0000
lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
I leave the BNC adapter on because I usually only have BNC connectors
on my portable rigs and antennas.
This is the analyzer that is in the same bag as the TX-500.

@ -1,13 +1,12 @@
---
title: RigExpert Stick 230
summary:
summary:
date: 2022-08-11
lastmod: 2024-03-31T11:01:16+0000
lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
The RigExpert Stick 230 is nice and practical to use, but it comes with a
@ -18,4 +17,3 @@ as moving through a frequency range.
I personally don't like the user interface and I therefore don't use it much
at home and almost never when I'm portable.

@ -1,8 +1,8 @@
---
title: TinySA ultra
summary:
summary:
date: 2023-08-01
lastmod: 2023-08-12T15:25:56+0000
lastmod: 2024-09-28T23:48:06+0000
#categories:
#- amateur-radio
#tags:
@ -17,7 +17,4 @@ showWordCount: false
# site_exclude: true
draft: true
---

@ -19,5 +19,4 @@ showWordCount: false
feed_exclude: true
weight: 30
---

@ -9,4 +9,3 @@ content coming...
i heard a lot of good things about this on youtube but I cannot confirm these
thoughts -- the performance is very poor beginning at 40m (down to 80m).

@ -1,8 +1,8 @@
---
title: Homebrew 40m Hw Endfed
summary:
summary:
date: 2023-05-01T11:45:01+02:00
# lastmod:
# lastmod:
#categories:
#- amateur-radio
#- computerstuff
@ -18,7 +18,4 @@ showWordCount: false
# site_exclude: true
draft: true
---

@ -3,12 +3,11 @@ title: Homebrew dipole for 20m
summary: This is my non-plus-ultra antenna. Often used at home and portable.
date: 2023-04-23T08:51:00+02:00
coverCaption: Homebrew dipole for the 20m band made from 1.5mm² speaker cable
lastmod: 2024-05-19T20:53:34+0000
lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
I am very happy with this antenna -- it is very compact when fold together
@ -28,4 +27,3 @@ respond often within the first three requests).
I also use [a choke]({{< ref "/equipment/radio-stuff/accessories/homebrew-common-mode-choke/" >}})
with the antenna.

@ -1,7 +1,7 @@
---
title: Anytone D878UV+
date: 2019-12-08
lastmod: 2024-03-17T19:59:25+0000
lastmod: 2024-09-28T23:48:06+0000
#categories:
#- amateur-radio
@ -11,7 +11,6 @@ showBreadcrumbs: true
showReadingTime: false
showWordCount: false
# showPagination: false
---
I bought this because of its ability to do APRS (TX only) and it
@ -28,4 +27,3 @@ While this radio was in repair, I ordered my second DMR radio, the
[1]: {{< ref "hytera-pd785g" >}}
I wasn't really satisfied with its receiving capabilities anyway.

@ -2,16 +2,15 @@
title: Hytera PD785G
aliases:
- /amateur-radio/2020-01-27-aprs-with-hytera-pd785g-v9
summary:
summary:
date: 2019-12-31
lastmod: 2024-06-09T06:32:40+0000
lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true
# showDate: false
showReadingTime: false
showWordCount: false
# showPagination: false
---
This is the second DMR radio that I bought. I wanted something stable,
@ -51,4 +50,3 @@ me to trash the device and buy another one (with some discount).
The Hytera PD785G only supports 70cm.
![output power around 433.500 MHz](power.png)

@ -4,12 +4,11 @@ summary: >
A really awesome handheld radio -- and it does D-STAR as a
bonus. Check it out -- it's cool!
date: 2021-12-10
lastmod: 2024-03-17T19:59:25+0000
lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
This is actually my number one handheld radio. I find it very intuitive to use
@ -24,10 +23,10 @@ on digital mode (D-STAR).
Right away: there are two ways to open a repeater with a 1750Hz tone.
1. Push _PTT_ like you would perform a double-click with your computer mouse
and hold _PTT_ on the second "click".
and hold _PTT_ on the second "click".
2. Open _MENU >> SET >> DTMF/T-CALL >> DTMF Memory_ and select _T-CALL_ with _OK_
key. Go back to standby screen and press _PTT_. Now additionally press the
_SQL_ button.
key. Go back to standby screen and press _PTT_. Now additionally press the
_SQL_ button.
### SQL
@ -113,8 +112,8 @@ receiver information, time and date as well as some basic info about the picture
## Power output
| Power output diagrams | |
| --- | --- |
| Power output diagrams | |
| ---------------------------------------- | -------------------------------------------- |
| ![output power on 2m band](power-2m.png) | ![output power on 70cm band](power-70cm.png) |
I've found out how to measure more than 4 traces at once (hint:
@ -122,13 +121,13 @@ disable <kbd>TRACKING</kbd> in the Marker options)
The measured output power around 144.500 MHz and 433.500 MHz are:
| Power setting | Output power 2m | Output power 70cm |
| :---- | :----- | :----- |
| S-Low | 107 mW | 99 mW |
| Low1 | 539 mW | 443 mW |
| Low2 | 1.09 W | 783 mW |
| Mid | 2.45 W | 2.21 W |
| High | 6.26 W | 4.94 W |
| Power setting | Output power 2m | Output power 70cm |
| :------------ | :-------------- | :---------------- |
| S-Low | 107 mW | 99 mW |
| Low1 | 539 mW | 443 mW |
| Low2 | 1.09 W | 783 mW |
| Mid | 2.45 W | 2.21 W |
| High | 6.26 W | 4.94 W |
## Harmonics
@ -136,4 +135,3 @@ Only measured on the 2m band.
![harmonics](harmonics.png "I could not see any harmonics at <mark>145.550 MHz</mark>.
For people that cannot read the small fonts properly: the graph goes up to 3 GHz.")

@ -4,18 +4,17 @@ summary: >
Consider the OpenGD77 firmware and you're all set with a very
user friendly and customizable handheld radio.
aliases:
- /equipment/handhelds/radioddity-gd77/
- /equipment/handhelds/radioddity-gd77/
date: 2020-10-17
lastmod: 2024-09-25T03:37:50+0000
lastmod: 2024-09-28T23:48:06+0000
#categories:
#- amateur-radio
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
[Product page][1] — [OpenGD77 Firmware][2] — [Latest CPS][3]
[Product page][1] — [OpenGD77 Firmware][2] — [Latest CPS][3]
[1]: https://www.radioddity.com/products/radioddity-gd-77-dmr-two-way-radio
[2]: https://www.opengd77.com/downloads/GD77/Latest/
@ -27,7 +26,7 @@ radio usage.
## udev-Rules for Linux
~~~rb
```rb
# USB rules for GD-77
# Place this in /etc/udev/rules.d/ to let all users talk to the radios by USB.
@ -49,27 +48,27 @@ KERNEL=="hiddev*", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="0666
# OpenGD77
KERNEL=="ttyACM[0-9]*", SUBSYSTEM=="tty", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="0094", MODE="0666", GROUP="dialout", SYMLINK+="OpenGD77"
~~~
```
If you want do reload udev with the new rules, run:
~~~console
```console
$ udevadm control --reload-rules && udevadm trigger
~~~
```
## Original boot tone melody
The originally used boot-up melody. I'm not sure if it changed already, but this
was on my GD-77 when I first installed the OpenGD77 firmware.
~~~plain
```plain
38,6,0,2,38,2,0,2,38,6,0,2,38,2,0,2,38,6
~~~
```
## My boot-up picture
| Normal display settings | Inverted display settings |
| :--- | :--- |
| Normal display settings | Inverted display settings |
| :---------------------------------------------------- | :--------------------------------------------------------------- |
| ![OE7DRT Boot-up picture white](rendeer512_white.png) | ![OE7DRT Boot-up picture black (inverted)](rendeer512_black.png) |
## Importing DMR-IDs
@ -114,15 +113,15 @@ Press and hold the hash key <kbd>#</kbd> when in VFO mode to enter this feature.
![2m band output power](power-2m.png)
| Power setting | Out power (device 1) | Out power (device 2) |
| :--- | :--- | :----- |
| +W- | 7.50 W | 7.60 W |
| 5W | 5.31 W | 5.40 W |
| 50mW | 376 mW | 152 mW |
| 1W | 1.30 W | 1.35 W |
| 2W | 2.37 W | 2.14 W |
| 3W | 2.90 W | 2.70 W |
| 4W | 3.76 W | 3.40 W |
| Power setting | Out power (device 1) | Out power (device 2) |
| :------------ | :------------------- | :------------------- |
| +W- | 7.50 W | 7.60 W |
| 5W | 5.31 W | 5.40 W |
| 50mW | 376 mW | 152 mW |
| 1W | 1.30 W | 1.35 W |
| 2W | 2.37 W | 2.14 W |
| 3W | 2.90 W | 2.70 W |
| 4W | 3.76 W | 3.40 W |
I have two devices and they differ on some settings (50mW setting for example).
@ -132,16 +131,15 @@ I have two devices and they differ on some settings (50mW setting for example).
I have only measured one device as devices may differ largely.
| Power setting | Output power|
| :---- | :----- |
| 50mW | 917 mW |
| 250mW | 925 mW |
| 500mW | 1.86 W |
| 750mW | 1.49 W |
| 1W | 1.67 W |
| 2W | 2.35 W |
| 3W | 2.96 W |
| 4W | 4.22 W |
| 5W | 7.50 W |
| +W- | 8.41 W |
| Power setting | Output power |
| :------------ | :----------- |
| 50mW | 917 mW |
| 250mW | 925 mW |
| 500mW | 1.86 W |
| 750mW | 1.49 W |
| 1W | 1.67 W |
| 2W | 2.35 W |
| 3W | 2.96 W |
| 4W | 4.22 W |
| 5W | 7.50 W |
| +W- | 8.41 W |

@ -2,12 +2,11 @@
title: Wouxun UV9D Mate
summary: This is the radio of choice when I do some Winlinking (HI) via packet radio or VARA FM.
date: 2021-03-15
lastmod: 2024-05-19T20:53:51+0000
lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
I can not remember when I bought this radio because I lost my documents somwhere
@ -24,5 +23,3 @@ The special use case for it is in the car primarily -- the next RMS packet stati
approx. 27km north/north-east of my home QTH (with some mountains in between) -- it
works well with the Digirig when using packet radio and VARA-FM; and with the Mobilinkd
TNC4.

@ -1,12 +1,11 @@
---
title: Yaesu FT-3D
date: 2020-05-24
lastmod: 2024-03-17T19:59:25+0000
lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
C4FM is one of the easiest digital operating mode to set up. Enter your
@ -52,16 +51,16 @@ the brightness at all, but YMMV.
The FT-3D supports 4 power levels: LOW1 (0.3W), LOW2 (1W), LOW3 (2.5W) and
HIGH (5W).
| Power output on 2m and 70cm | |
| ---- | --- |
| Power output on 2m and 70cm | |
| ------------------------------------------------------------------ | ---------------------------------------------------------------------- |
| ![2m power output](power-2m.png "power output around 145.500 MHz") | ![70cm power output](power-70cm.png "power output around 433.500 MHz") |
| Power setting | Output 2m | Output 70cm |
| :--- | :----- | :----- |
| LOW1 | 350 mW | 340 mW |
| LOW2 | 1.00 W | 972 mW |
| LOW3 | 2.80 W | 2.44 W |
| HIGH | 5.66 W | 4.87 W |
| :------------ | :-------- | :---------- |
| LOW1 | 350 mW | 340 mW |
| LOW2 | 1.00 W | 972 mW |
| LOW3 | 2.80 W | 2.44 W |
| HIGH | 5.66 W | 4.87 W |
## Band scope
@ -102,4 +101,3 @@ on 145.57500 MHz but receives on 432.57500 MHz.
Although the recordings are sometimes quite buggy, I really appreciate this
function on newer radios. No need to pull out your smartphone to get a recording
on tape.

@ -2,12 +2,11 @@
title: Yaesu FT-4XE
date: 2019-11-23
coverCaption: My FT-4X with a Diamond SRJ77 antenna.
lastmod: 2024-03-17T19:59:25+0000
lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
This is the first handheld radio (and the first radio at all) that I got.
@ -24,4 +23,3 @@ The radio is also small enough to just take it with you when you want to quickly
have a radio with you.
I'm not using it that much. Mostly when I want to listen to a FM radio station.

@ -1,8 +1,8 @@
---
title: Cloudlog
summary:
summary:
date: 2023-02-10
# lastmod:
# lastmod:
#categories:
#- amateur-radio
#tags:
@ -19,10 +19,8 @@ showWordCount: false
# site_exclude: true
draft: true
---
My default logging “application”. It is used online.
link: https://www.magicbug.co.uk/cloudlog/

@ -1,8 +1,8 @@
---
title: CQRLOG
summary:
summary:
date: 2023-02-10
# lastmod:
# lastmod:
#categories:
#- amateur-radio
#tags:
@ -19,7 +19,6 @@ showWordCount: false
# site_exclude: true
draft: true
---
I used this for a while, is very bloated and with it's own database
@ -34,4 +33,3 @@ also it sometimes breakes and I'm fed up with the linux-ish way of tinkering and
fixing things to get it working again. mostly the db is causing trouble.
link: https://www.cqrlog.com/

@ -1,8 +1,8 @@
---
title: QLog
summary:
summary:
date: 2023-02-10
# lastmod:
# lastmod:
#categories:
#- amateur-radio
#tags:
@ -19,7 +19,6 @@ showWordCount: false
# site_exclude: true
draft: true
---
I've tested this in it's early stage and I don't know about it's actual
@ -27,4 +26,3 @@ progress, but it looked very promising and actively developed by Ladislav
Foldyna, OK1MLG.
link: https://github.com/foldynl/QLog

@ -4,7 +4,7 @@ summary: >
A very good-looking and functional **Winlink client for iOS**. Combine this with
Varanny on a headless Linux or Windows PC and you are unstoppable out in the field.
date: 2024-02-16
# lastmod:
# lastmod:
#categories:
#- amateur-radio
#tags:
@ -21,7 +21,6 @@ showWordCount: false
# site_exclude: true
draft: true
---
I already wrote about [my short experience with RadioMail][1] in an article back in
@ -33,4 +32,3 @@ VARA programs which makes swapping HF rigs a dream!
[1]: {{< ref "/posts/2023/58-winlink-on-my-iphone-with-radiomail" >}}
If you like minimal equipment on your hikes or activations: this might be it for you.

@ -1,8 +1,8 @@
---
title: RUMlogNG
summary:
summary:
date: 2023-02-10
# lastmod:
# lastmod:
#categories:
#- amateur-radio
#tags:
@ -19,7 +19,6 @@ showWordCount: false
# site_exclude: true
draft: true
---
For MacOS only. This is one of the best logging applications for MacOS that
@ -30,4 +29,3 @@ link: https://dl2rum.de/rumsoft/RUMLog.html
There is also a version for the iPhone.
link: https://dl2rum.de/rumsoft/RUMlog2Go.html

@ -23,4 +23,3 @@ draft: true
Replaced my cloudlog installation.
I am very happy with this.

@ -2,7 +2,7 @@
title: Transceivers
summary: The big ones. May contain QRP transceivers.
aliases:
- /equipment/transceiver/
- /equipment/transceiver/
#date: 2022-11-16T22:19:11+01:00
#tags:
#- transceiver
@ -20,5 +20,4 @@ showWordCount: false
feed_exclude: true
weight: 10
---

@ -8,7 +8,6 @@ coverCaption: TX-500 in action on a stone
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
This is the third HF transceiver that I bought. I was looking for a while for
@ -32,7 +31,7 @@ no punch and I'm not using this for the moment.
## Original CAT cable settings
| Setting | Value |
| :--- | :--- |
| :-------- | :------ |
| RIG type | KENWOOD |
| Baud rate | 9600 |
| Data bits | 8 |
@ -46,15 +45,15 @@ I use these rigctld commands:
### KENWOOD mode
~~~console
```console
$ rigctld -m 2014 -r /dev/ttyUSB0 -d /dev/ttyUSB0 -p /dev/ttyUSB0 -P RTS -s 9600 -vvvv
~~~
```
### Lab599 mode
~~~console
```console
$ rigctld -m 2050 -r /dev/ttyUSB0 -d /dev/ttyUSB0 -p /dev/ttyUSB0 -P RTS -s 9600 -vvvv
~~~
```
## Power output at 10%
@ -64,18 +63,18 @@ I do not want to hide them :)
As always, take these with a grain of salt!
| BAND | FREQUENCY | TONE SETTINGS | TX500 | tinySA |
| :--- | :--- | :--- | ---: | ---: |
| 80m | 3.530 MHz | NORMAL | 0.8 W | 1.72 W |
| | | DUAL | 0.6 W | 0.48 W |
| 40m | 7.130 MHz | NORMAL | 0.8 W | 1.40 W |
| | | DUAL | 0.6 W | 0.41 W |
| 20m | 14.285 MHz | NORMAL | 0.7 W | 1.40 W |
| | | DUAL | 0.6 W | 0.44 W |
| 15m | 21.245 MHz | NORMAL | 1.3 W | 2.13 W |
| | | DUAL | 1.1 W | 0.60 W |
| 10m | 29.080 MHz | NORMAL | 1.7 W | 2.86 W |
| | | DUAL | 1.5 W | 0.90 W |
| BAND | FREQUENCY | TONE SETTINGS | TX500 | tinySA |
| :--- | :--------- | :------------ | ----: | -----: |
| 80m | 3.530 MHz | NORMAL | 0.8 W | 1.72 W |
| | | DUAL | 0.6 W | 0.48 W |
| 40m | 7.130 MHz | NORMAL | 0.8 W | 1.40 W |
| | | DUAL | 0.6 W | 0.41 W |
| 20m | 14.285 MHz | NORMAL | 0.7 W | 1.40 W |
| | | DUAL | 0.6 W | 0.44 W |
| 15m | 21.245 MHz | NORMAL | 1.3 W | 2.13 W |
| | | DUAL | 1.1 W | 0.60 W |
| 10m | 29.080 MHz | NORMAL | 1.7 W | 2.86 W |
| | | DUAL | 1.5 W | 0.90 W |
## PA500
@ -83,4 +82,3 @@ Since the TX-500 does not have a built-in tuner the PA500 is well
worth the investment. It got it's
[own page]({{/* ref "/equipment/accessories/diy599-pa500/" */}})
in my equipment collecion.

@ -1,11 +1,11 @@
---
title: Yaesu FT-891
aliases:
- /equipment/transceiver/yaesu-fd891/
- /equipment/transceiver/yaesu-ft891/
- /equipment/transceiver/yaesu-fd891/
- /equipment/transceiver/yaesu-ft891/
date: 2020-06-21T14:20:47+01:00
coverCaption: Field setup for Winlink
lastmod: 2024-04-13T19:06:32+0000
lastmod: 2024-09-28T23:48:06+0000
#categories:
#- amateur-radio
#tags:
@ -13,7 +13,6 @@ lastmod: 2024-04-13T19:06:32+0000
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
I got this because the IC-7300 was too chunky to be effectively
@ -62,7 +61,7 @@ Made from aluminium the
[891escort](https://portablezero.com/yaesu857D.html)
adds a little weight but also protection to the radio, especially
for the knobs on the front panel. The addidional strap mounts can be
used to attach a sling to the radio, it could be easily carried now --
used to attach a sling to the radio, it could be easily carried now --
not that I used that once, but it is there as a feature. My focus was
the additional protection when I bought them. Now, a year later, I
carry the radio inside a cloth bag without the escort just to save
@ -79,4 +78,3 @@ outside, but I haven't found a good one yet (and a short one).
This radio is an excellent choice if you have enough power with you --
the current draw is very high compared to a QRP radio and an amplifier
(Tx-500 with PA-500 for example).

@ -1,7 +1,7 @@
---
title: License
date: 2022-12-04T18:15:03+01:00
lastmod: 2023-11-27T16:42:24+0000
lastmod: 2024-09-28T23:48:06+0000
comment: false
@ -15,7 +15,6 @@ sharingLinks: false
feed_exclude: true
#site_exclude: true
---
The content on this site is licensed under the
@ -60,4 +59,3 @@ rights may limit how you use the material.
This page was inspired by [mrus](https://xn--gckvb8fzb.com/license/) because of
the perfect wording. We do not stay in any relation, but if you like hack related
computer stuff: there are some nice articles on his website.

@ -12,7 +12,6 @@ showWordCount: false
showPagination: false
feed_exclude: true
---
## Digital modes performance comparison (Winlink)
@ -26,4 +25,3 @@ Let's compare some digital modes like PACTOR, VARA, ARDOP and WINMOR (†).
A small collection of manuals that I saved.
<https://celeste.oe7drt.com/pub/hamradio/manuals/>

@ -1,7 +1,7 @@
---
title: Notes
date: 2023-11-04T08:01:00+01:00
#lastmod:
#lastmod:
groupByYear: false
showDate: false
@ -11,10 +11,8 @@ showWordCount: false
showBreadcrumbs: true
feed_exclude: true
#showPagination: false
#showAuthor: false
---
These are notes that I will not or can not elaborate any further. Use them

@ -1,7 +1,7 @@
---
title: Archlinux
date: 2023-11-29T20:33:48+0100
lastmod: 2024-09-14T09:53:25+0000
lastmod: 2024-09-28T23:48:06+0000
tags:
- archlinux
- systemd
@ -15,7 +15,6 @@ showBreadcrumbs: true
feed_exclude: true
# site_exclude: true
---
Arch Linux
@ -33,9 +32,9 @@ If your user account is locked, wait 15 minutes (usually) and you can try again.
If you need to unlock your account immediately: run this command (if you have another user
that can login on the box):
~~~console
```console
$ sudo faillock --user dominic --reset
~~~
```
Calling `faillock` without arguments show an overview.
@ -50,13 +49,13 @@ This makes my ethernet interface be called **eth0** again.
Create `/usr/lib/systemd/network/80-ether.link` with this content:
~~~systemd
```systemd
[Match]
Type=ether
[Link]
NamePolicy=keep kernel
~~~
```
Reboot.
@ -66,13 +65,13 @@ This makes my wireless interface be called **wlan0** again.
Create `/usr/lib/systemd/network/80-wlan.link` with this content:
~~~systemd
```systemd
[Match]
Type=wlan
[Link]
NamePolicy=keep kernel
~~~
```
Reboot.
@ -80,21 +79,21 @@ Reboot.
### Using **iwctl**
~~~console
```console
$ iwctl device list
$ iwctl station wlan0 scan
$ iwctl station wlan0 get-networks
$ iwctl station wlan0 connect {ssid}
~~~
```
### Using **nmcli** (NetworkManager)
~~~console
```console
$ nmcli device wifi list
$ nmcli device wifi rescan
$ nmcli device wifi connect {ssid} --ask
$ nmcli device wifi show-password
~~~
```
Last command shows the connected SSID and a QR-code within the terminal.
@ -106,23 +105,23 @@ We create some files in `/etc/NetworkManager/conf.d`:
`wifi_backend.conf`:
~~~ini
```ini
[device]
wifi.backend=iwd
~~~
```
## Using `dhcpcd` as DHCP client
`dhcp-client.conf`:
~~~ini
```ini
[main]
dhcp=dhcpcd
~~~
```
## Using the CPU with hashcat
~~~console
```console
$ hashcat -I
hashcat (v6.2.6) starting in backend information mode
@ -147,7 +146,7 @@ OpenCL Platform ID #1
Local.Memory...: 64 KB
OpenCL.Version.: OpenCL C 1.2
Driver.Version.: 24.31.30508
~~~
```
This is what I've seen on `hashcat -I` for a long time now but I never dig myself
into this "problem" -- but today I tried to find the reason why there is no CPU
@ -156,19 +155,19 @@ listed on my Carbon X1 Gen7 laptop.
After a few minutes doing some trial & error I finally got the CPU listed after
installing _pocl_.
~~~console
```console
$ paru -S pocl
~~~
```
Or, on my gaming laptop running a cheap clone of Ubuntu:
~~~console
```console
$ sudo apt install pocl-opencl-icd
~~~
```
Now my `hashcat -I` looks like this:
~~~console
```console
$ hashcat -I took 6s
hashcat (v6.2.6) starting in backend information mode
@ -212,7 +211,7 @@ OpenCL Platform ID #2
Local.Memory...: 256 KB
OpenCL.Version.: OpenCL C 1.2 PoCL
Driver.Version.: 6.0
~~~
```
## Paru / Pacman
@ -225,127 +224,127 @@ I had to copy this to my notes archive here...
#### install
~~~console
```console
$ paru -S <package>
~~~
```
#### Edit PKGBUILD and skip checksum check
~~~console
```console
$ paru -S gnucash-xbt --fm helix --mflags "--skipchecksums"
~~~
```
#### uninstall (-n: no backup files; -s: remove dependencies)
~~~console
```console
$ paru -Rns <package>
~~~
```
#### system update
~~~console
```console
$ paru -Syu
~~~
```
### Mirrors
#### select fastest
~~~console
```console
$ sudo pacman-mirrors --fasttrack
~~~
```
#### select by country
~~~console
```console
$ sudo pacman-mirrors --country Germany,France,Austria
~~~
```
### Search repo
#### search package
~~~console
```console
$ paru -Ss <package>
~~~
```
#### package details
~~~console
```console
$ paru -Si <package>
~~~
```
#### list files
~~~console
```console
$ paru -Fl <package>
~~~
```
#### find package for file
~~~console
```console
$ pkgfile <filename>
~~~
```
#### search command
~~~console
```console
$ paru -F glxinfo
~~~
```
### Installed packages
#### search package
~~~console
```console
$ paru -Qs <package>
~~~
```
#### package details
~~~console
```console
$ paru -Qii <package>
~~~
```
#### list files
~~~console
```console
$ paru -Ql <package>
~~~
```
#### orphans
~~~console
```console
$ paru -Qdt
~~~
```
#### manually installed (list all aur)
~~~console
```console
$ pacman -Qm
~~~
```
### Clean-up
#### clear cache
~~~console
```console
$ paru -Sc
~~~
```
### Official repo vs. AUR
#### repo
~~~console
```console
$ paru -[...] --repo
~~~
```
#### aur
~~~console
```console
$ paru -[...] --aur
~~~
```
<!-- paru end -->
@ -356,25 +355,25 @@ on the box, also using the raw table should not create useless states as for wha
I understand from the source article on
[serverfault.com](https://serverfault.com/a/823336).
~~~console
```console
$ sudo ipset -N badips iphash
$ while read ip; do sudo ipset -A badips "$ip"; done < blocked.txt
$ sudo iptables -t raw -I PREROUTING -m set --match-set badips src,dst -j DROP
$ sudo iptables-save -f /etc/iptables/iptables.rules
~~~
```
Enable iptables in case it is not running yet.
~~~console
```console
$ sudo systemctl enable --now iptables.service
~~~
```
Also make the ipset configuration persistent:
~~~console
```console
$ sudo ipset save -file /etc/ipset.conf
$ sudo systemctl enable ipset.service
~~~
```
Reboot to test its persistency.
@ -382,10 +381,10 @@ Reboot to test its persistency.
`99-unmanaged-devices.conf`:
~~~ini
```ini
[keyfile]
unmanaged-devices=mac:xx:xx:xx:xx:xx:xx
~~~
```
## Prefer local DNS instead of systemd-resolved defaults
@ -419,11 +418,11 @@ The wiki page is for Raspberry Pi 4.
I create my wine prefixes usually like this:
~~~console
```console
$ export WINEPREFIX=/home/dominic/.wine-winlink
$ export WINEARCH=win32
$ wine wineboot
~~~
```
## Installing multiple ruby versions
@ -431,60 +430,59 @@ I came to the point to test an older website from me and it was made with
Jekyll which I had to install quickly. Problems occured with OpenSSL and I
finally managed to install ruby version 2.7.1 and 3.0.0 in my home directory.
~~~console
```console
$ rvm pkg install openssl
$ rvm install "ruby-3.0.0" --with-openssl-dir=$HOME/.rvm/usr
$ rvm install "ruby-2.7.1" --with-openssl-dir=$HOME/.rvm/usr
~~~
```
Later in the desired directory, I re-installed the gems because with ruby 2.7.1
I got another "Directory not found" error.
I had to do this because I used ruby 2.7.1 on one website.
~~~console
```console
$ bundle install --force
~~~
```
## Bigger font for systemd-boot
Edit `/boot/loader/loader.conf`:
~~~
```
console-mode 0
~~~
```
Possible settings are:
| Value | Description |
| :--- | :--- |
| 0 | Standard UEFI 80x25 mode |
| 1 | 80x50 mode, not supported by all devices |
| Value | Description |
| :---- | :------------------------------------------------------------------ |
| 0 | Standard UEFI 80x25 mode |
| 1 | 80x50 mode, not supported by all devices |
| 2 | the first non-standard mode provided by the device firmware, if any |
| auto | Pick a suitable mode automatically using heuristics |
| max | Pick the highest-numbered available mode |
| keep | Keep the mode selected by firmware (the default) |
| auto | Pick a suitable mode automatically using heuristics |
| max | Pick the highest-numbered available mode |
| keep | Keep the mode selected by firmware (the default) |
More details can be found in {{< man loader.conf 5 >}}.
## Manual sections
| Section | Description |
| :--- | :--- |
| 1 | Section 1 of the manual describes **user commands** and tools, for example, file manipulation tools, shells, compilers, web browsers, file and image viewers and editors, and so on |
| Section | Description |
| :------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1 | Section 1 of the manual describes **user commands** and tools, for example, file manipulation tools, shells, compilers, web browsers, file and image viewers and editors, and so on |
| 2 | Section 2 of the manual describes the Linux **system calls**. A system call is an entry point into the Linux kernel. Usually, system calls are not invoked directly: instead, most system calls have corresponding C library wrapper functions which perform the steps required (e.g., trapping to kernel mode) in order to invoke the system call. Thus, making a system call looks the same as invoking a normal library function. |
| 3 | Section 3 of the manual describes all **library functions** excluding the library functions (system call wrappers) described in Section 2, which implement system calls. |
| 4 | Section 4 of the manual describes **special files (devices)**. |
| 5 | Section 5 of the manual describes various **file formats**, as well as the **corresponding C structures**, if any. |
| 6 | Section 6 of the manual describes the **games** and funny little programs available on the system. |
| 7 | Section 7 of the manual provides **overviews on various topics**, and describes conventions and protocols, character set standards, the standard filesystem layout, and miscellaneous other things. |
| 3 | Section 3 of the manual describes all **library functions** excluding the library functions (system call wrappers) described in Section 2, which implement system calls. |
| 4 | Section 4 of the manual describes **special files (devices)**. |
| 5 | Section 5 of the manual describes various **file formats**, as well as the **corresponding C structures**, if any. |
| 6 | Section 6 of the manual describes the **games** and funny little programs available on the system. |
| 7 | Section 7 of the manual provides **overviews on various topics**, and describes conventions and protocols, character set standards, the standard filesystem layout, and miscellaneous other things. |
## Encoding videos with ffmpeg
This is not an Arch way of encoding videos, but since I do this on my...
~~~console
```console
$ ffmpeg -i <input> -c:v libx264 -b:v 1M -maxrate 1M -bufsize 2M -pass 1 -f null /dev/null
$ ffmpeg -i <input> -c:v libx264 -b:v 1M -maxrate 1M -bufsize 2M -pass 2 <output>
~~~
```

@ -1,12 +1,12 @@
---
title: FreeBSD
date: 2024-08-31T08:35:46+02:00
lastmod: 2024-09-07T21:58:19+0000
description:
summary:
lastmod: 2024-09-28T23:48:06+0000
description:
summary:
tags:
- freebsd
- git
- freebsd
- git
#showDate: false
showReadingTime: false
@ -17,7 +17,6 @@ showBreadcrumbs: true
feed_exclude: true
# site_exclude: true
---
Some basic and random information about FreeBSD.
@ -49,77 +48,85 @@ As for my understanding only source updates are possible on the STABLE branch,
but I still use pkg to install pre-compiled packages -- I will find out if that
breaks things.
1. Update sources
~~~console
$ doas git -C /usr/src pull
~~~
1. Update sources
```console
$ doas git -C /usr/src pull
```
2. Check `/usr/src/UPDATING`
3. Go to `/usr/src`
~~~console
$ cd /usr/src
~~~
3. Go to `/usr/src`
4. Compile world
~~~console
$ doas make -j8 buildworld
~~~
```console
$ cd /usr/src
```
5. Compile and install kernel
~~~console
$ doas make -j8 kernel
~~~
4. Compile world
This is equivalent to `make -j8 buildkernel installkernel`.
```console
$ doas make -j8 buildworld
```
6. Reboot
~~~console
$ shutdown -r now
~~~
7. Update config files
~~~console
$ doas etcupdate -p
~~~
`-p` short explained:
> Enable “pre-world” mode. Only merge changes to files that
> are necessary to successfully run make installworld or
> make installkernel.
8. Again, go to `/usr/src`
~~~console
$ cd /usr/src
~~~
9. Install world
~~~console
$ doas make installworld
~~~
10. Update config files (after world installation)
~~~console
5. Compile and install kernel
```console
$ doas make -j8 kernel
```
This is equivalent to `make -j8 buildkernel installkernel`.
6. Reboot
```console
$ shutdown -r now
```
7. Update config files
```console
$ doas etcupdate -p
```
`-p` short explained:
> Enable “pre-world” mode. Only merge changes to files that
> are necessary to successfully run make installworld or
> make installkernel.
8. Again, go to `/usr/src`
```console
$ cd /usr/src
```
9. Install world
```console
$ doas make installworld
```
10. Update config files (after world installation)
```console
$ doas etcupdate -B
~~~
```
`-B` explained:
> Do not build generated files in a private object tree.
> Instead, reuse the generated files from a previously built
> object tree that matches the source tree. This can be
> object tree that matches the source tree. This can be
> useful to avoid gratuitous conflicts in sendmail(8)
> configuration files when bootstrapping. It can also be
> configuration files when bootstrapping. It can also be
> useful for building a tarball that matches a specific
> world build.
11. Another one, reboot
~~~console
11. Another one, reboot
```console
$ shutdown -r now
~~~
```
System is up to date, following the branch <kbd>[stable/14][2]</kbd> (for now).
[2]: https://cgit.freebsd.org/src/log/?h=stable/14

@ -1,7 +1,7 @@
---
title: OpenBSD
date: 2023-11-29T20:33:48+0100
lastmod: 2024-05-19T20:54:02+0000
lastmod: 2024-09-28T23:48:06+0000
tags:
- openbsd
- python
@ -23,7 +23,6 @@ showBreadcrumbs: true
feed_exclude: true
# site_exclude: true
---
These are random notes -- more or less about OpenBSD. Some may
@ -38,13 +37,13 @@ to the weather page. It was complaining about different
certificates and I wasn't sure how I could fix that easily. I thought wildcard
certs could fix that because I'd only have one cert for all the domains.
~~~console
```console
$ doas pkg_add certbot
~~~
```
Run and follow instructions:
~~~console
```console
$ doas certbot certonly --manual --preferred-challenges dns \
--server https://acme-v02.api.letsencrypt.org/directory \
--manual-public-ip-logging-ok -d '*.oe7drt.com' -d oe7drt.com
@ -67,19 +66,19 @@ If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
~~~
```
Also adding my .net domain to the certs:
~~~console
```console
$ doas certbot certonly --manual --manual-public-ip-logging-ok \
--preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory \
-d "*.oe7drt.com" -d "*.oe7drt.net" -d oe7drt.com -d oe7drt.net
~~~
```
Some changes to the apache2 configuration were made:
~~~apache
```apache
<MDomain oe7drt.com oe7drt.net>
MDMember *.oe7drt.com
MDMember *.oe7drt.net
@ -91,11 +90,11 @@ MDChallengeDns01 /etc/apache2/dns/dns-challenge.phar --
MDCertificateAgreement accepted
MDContactEmail {email_redacted}
MDCAChallenges dns-01
~~~
```
It seems Apache likes this:
![cropped output of apaches status website /md-status](./mod-status-certs.png)
![cropped output of apaches status website /md-status](./mod-status-certs.png)
This is **currently testing** because I have no idea if mod_md will update these certs
itself or if I should run certbot again when it's needed. In the meantime I monitor my
@ -122,13 +121,13 @@ I've now seen that no certificate gets renewed automatically.
The actual certificate got renewed with the command from above (including
the .net domain). The output of that command clearly states:
~~~console
```console
NEXT STEPS:
- This certificate will not be renewed automatically. Autorenewal of
--manual certificates requires the use of an authentication hook script
(--manual-auth-hook) but one was not provided. To renew this certificate,
repeat this same certbot command before the certificate's expiry date.
~~~
```
I will execute the same certbot command before the certificate's expiry date
the next time to enhance my experience :wink:
@ -138,11 +137,11 @@ the next time to enhance my experience :wink:
## Get some filesystem information
~~~console
```console
$ dumpfs /dev/rsd1a
magic 19540119 (FFS2) time Thu Nov 16 21:14:34 2023
[...] (snip; lots of output...)
~~~
```
This can be helpful if you want to know, which filesystem you actually
use on your OpenBSD box.
@ -160,15 +159,15 @@ microSD cards.
Delete the first bytes on the stick:
~~~console
```console
$ doas dd if=/dev/zero bs=1m count=1 of=/dev/rsd2c
~~~
```
Create the needed partition:
~~~console
```console
$ echo -n 'edit 0\n0c\n\n2048\n*\nq\n' | doas fdisk -e sd2
~~~
```
A short explanation (`\n` is basically a newline; the <kbd>Enter</kbd> key):
@ -181,7 +180,7 @@ A short explanation (`\n` is basically a newline; the <kbd>Enter</kbd> key):
This results in a partition table like this:
~~~console
```console
$ fdisk sd2
Disk: sd2 geometry: 966/255/63 [15523840 Sectors]
Offset: 0 Signature: 0xAA55
@ -192,11 +191,11 @@ Offset: 0 Signature: 0xAA55
1: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused
2: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused
3: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused
~~~
```
whereas a `fdisk -iy sd2` creates a table like this:
~~~console
```console
$ fdisk sd2
Disk: sd2 geometry: 966/255/63 [15523840 Sectors]
Offset: 0 Signature: 0xAA55
@ -207,20 +206,20 @@ Offset: 0 Signature: 0xAA55
1: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused
2: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused
*3: A6 0 1 2 - 966 80 10 [ 64: 15523776 ] OpenBSD
~~~
```
Don't forget to create the file system:
~~~console
```console
$ doas newfs_msdos -F 32 -L 8GB_Stick sd2i
~~~
```
## Mounting disk images
~~~console
```console
$ doas vnconfig /dev/vnd0c /path/to/imagefile.img
$ doas mount_msdos /dev/vnd0i ~/mnt/disk
~~~
```
## Packages / Ports
@ -230,9 +229,9 @@ Updating dependencies before installing (switch `-U`) does help sometimes...
> Can't install [package] because of libraries
~~~console
```console
$ doas pkg_add -uiU
~~~
```
Should fix that.
@ -242,9 +241,9 @@ Should fix that.
Install python modules with pip.
~~~console
```console
$ python3 -m pip install --user --upgrade ${example_module}
~~~
```
## Rust
@ -259,9 +258,9 @@ that disables the optional features (battery).
So the final installation of Starship looks like:
~~~console
```console
$ cargo install starship --locked --no-default-features
~~~
```
The compilation took about 9½ minutes.
@ -280,7 +279,7 @@ and it failes at downloading the satellites infos from other websites.
I solved this by copying `/etc/ssl` to `/var/www/etc/ssl` via rsync, keeping file
permissions intact. I may setup a cronjob for this maybe.
~~~console
```console
$ cd /var/www
$ doas rsync -avhzrp /etc/ssl/ etc/ssl
sending incremental file list
@ -297,7 +296,7 @@ total size is 344.08K speedup is 2.21
$ doas rcctl restart php80_fpm
php80_fpm(ok)
php80_fpm(ok)
~~~
```
## Cloudlog (client)
@ -306,9 +305,9 @@ Use of the online logging tool Cloudlog on my OpenBSD machine.
First off, connect the TX-500 with the computer (CAT cable) and
start `rigctld`:
~~~console
```console
$ rigctld -m 2014 -r /dev/cuaU0 -s 9600 -v
~~~
```
I use `2014` which is actually a Kenwood TS-2000 -- but on OpenBSD hamlib is currently
at version 4.4 and the TX-500 is only available on
@ -316,16 +315,16 @@ at version 4.4 and the TX-500 is only available on
For newer hamlib versions (≥4.5) use the rig 2050 like:
~~~console
```console
$ rigctld -m 2050 -r /dev/cuaU0 -s 9600 -v
~~~
```
In combination with Digirig I would probably use something like this,
because otherwise Digirig would instantly key the transceiver:
~~~console
```console
$ rigctld -m 2014 -r /dev/cuaU0 -s 9600 --set-conf=rts_state=OFF -v
~~~
```
Well, I tested this on my desk at home but never used my Laptop for
doing digital modes with my TX-500 though -- but I want this to be noted
@ -333,9 +332,9 @@ here just in case I should need it someday.
On another terminal start [`cloudlogbashcat.sh`](https://github.com/g0wfv/CloudlogBashCat):
~~~console
```console
$ cloudlogbashcat.sh
~~~
```
Now, if you open the website of your Cloudlog installation (and if you have
setup your rigs) and select the radio that uses cloudlogbashcat.
@ -348,38 +347,38 @@ setup your rigs) and select the radio that uses cloudlogbashcat.
I defined an alias `ls` but I forgot where it was.
~~~console
```console
$ PS4='+%x:%I>' zsh -i -x -c '' |& grep ls
~~~
```
There will be a lot of screen output probably.
### Renaming multiple directories
~~~console
```console
$ count=1; zmv -n '*' '$f[1,4]/$((count++))-$f[12,-1]'
mv -- 2023-08-05-problems-with-apt-keys-on-my-hotspots 2023/51-problems-with-apt-keys-on-my-hotspots
mv -- 2023-08-26-dmrhost-on-a-raspberrypi4-with-openbsd-or-freebsd 2023/52-dmrhost-on-a-raspberrypi4-with-openbsd-or-freebsd
mv -- 2023-09-16-openbsd-current-built-from-source 2023/53-openbsd-current-built-from-source
~~~
```
Moves subdirectories into other folder structure with a counting variable.
~~~console
```console
$ count=16; zmv -Q '*(/)' '$((count++))-$f[12,-1]'
mv -- 2021-08-08-win10-grub2-and-uefi 16-win10-grub2-and-uefi
mv -- 2021-08-12-running-n1mm-logger-on-linux 17-running-n1mm-logger-on-linux
mv -- 2021-10-03-winlink-and-vara-on-linux 18-winlink-and-vara-on-linux
mv -- 2021-10-03-wordlist-generation 19-wordlist-generation
mv -- 2021-10-26-processes-accessing-mountpoints 20-processes-accessing-mountpoints
~~~
```
That was the second part, counting from where we stopped from the previous directory.
There was a draft post left in `2022` which I deleted, now I had to renumber the folders
from `28-*` to `34-` to a number lower by 1.
~~~console
```console
$ for i in {29..34}; do zmv -n -W $i'*' $((--i))'*'; done
mv -- 29-using-nfs-on-a-raspberry-pi 28-using-nfs-on-a-raspberry-pi
mv -- 30-vpn-tunnel-into-hamnet-on-fedora-36 29-vpn-tunnel-into-hamnet-on-fedora-36
@ -387,15 +386,15 @@ mv -- 31-winlink-on-linux-fix-invalid-handle-on-logfiles 30-winlink-on-linux-fix
mv -- 32-hamnet-on-the-pfsense 31-hamnet-on-the-pfsense
mv -- 33-changing-network-metrics-on-linux 32-changing-network-metrics-on-linux
mv -- 34-change-git-submodule-url 33-change-git-submodule-url
~~~
```
So, there is still one post left that is actually a draft post and I'd like to
remove the leading number from that directory.
~~~console
```console
$ zmv -n -W '59-*' '*'
mv -- 59-pat-winlink-on-openbsd pat-winlink-on-openbsd
~~~
```
## Neovim
@ -418,13 +417,13 @@ If that does not work, it is mostly a submodule. You can try to update and compi
Switch to the folder, update `make` with `gmake` and finally run `gmake` in that folder.
That will produce a compiled output (a library) and the updated procedure will pick that up
at the next run and the submodule will usually be ignored unless the main repo has new commits
in its tree. You may then stash the local changes and re-run the update procedure again.
in its tree. You may then stash the local changes and re-run the update procedure again.
## Concatenate sound files (.wav)
~~~console
```console
$ sox *.wav one-big-soundfile.wav
~~~
```
`cat *.wav > bigfile.wav` works too, but different. That would put all
audio files into separate streams at the output file whereas `sox`
@ -432,16 +431,15 @@ appends one file after another in the big output file.
## Manual page sections
| Section | Description |
| :--- | :--- |
| 1 | General Commands |
| 2 | System Calls |
| 3 | Library Functions |
| 3p | Perl Library |
| 4 | Device Drivers |
| 5 | File Formats |
| 6 | Games |
| Section | Description |
| :------ | :------------------------ |
| 1 | General Commands |
| 2 | System Calls |
| 3 | Library Functions |
| 3p | Perl Library |
| 4 | Device Drivers |
| 5 | File Formats |
| 6 | Games |
| 7 | Miscallaneous Information |
| 8 | System Manager's Manual |
| 8 | System Manager's Manual |
| 9 | Kernel Developer's Manual |

@ -1,7 +1,7 @@
---
title: Raspberry Pi
date: 2024-01-27T11:01:31+0000
#lastmod:
#lastmod:
#showDate: false
showReadingTime: false
@ -12,7 +12,6 @@ showBreadcrumbs: true
feed_exclude: true
# site_exclude: true
---
Some basic info about Raspberry Pi of any version.
@ -23,17 +22,17 @@ Some basic info about Raspberry Pi of any version.
#### Actual models
| LED&nbsp;Activity | Description |
|:------------------|:------------------------------------|
| 3 flashes | start.elf not found |
| 4 flashes | start.elf not launch-able (corrupt) |
| 7 flashes | kernel.img not found |
| LED&nbsp;Activity | Description |
| :---------------- | :----------------------------------------------------------------------------------------------- |
| 3 flashes | start.elf not found |
| 4 flashes | start.elf not launch-able (corrupt) |
| 7 flashes | kernel.img not found |
| 8 flashes | SDRAM not recognized. You need a newer bootcode.bin/start.elf firmware, or your SDRAM is damaged |
#### Older models up to Raspberry Pi 3
| LED&nbsp;Activity | Description |
|:------------------|:-------------------------------------|
| :---------------- | :----------------------------------- |
| 3 flashes | loader.bin not found |
| 4 flashes | loader.bin not launch-able (corrupt) |
| 5 flashes | start.elf not found |
@ -43,21 +42,21 @@ Some basic info about Raspberry Pi of any version.
### Raspberry Pi 4
| Long flashes | Short flashes | Description |
|:-------------|:--------------|:------------------------------------|
| 0 | 3 | Generic failure to boot |
| 0 | 4 | start*.elf not found |
| 0 | 7 | Kernel image not found |
| 0 | 8 | SDRAM failure |
| :----------- | :------------ | :---------------------------------- |
| 0 | 3 | Generic failure to boot |
| 0 | 4 | start\*.elf not found |
| 0 | 7 | Kernel image not found |
| 0 | 8 | SDRAM failure |
| 0 | 9 | Insufficient SDRAM |
| 0 | 10 | In HALT state |
| 2 | 1 | Partition not FAT |
| 2 | 2 | Failed to read from partition |
| 2 | 3 | Extended partition not FAT |
| 2 | 4 | File signature/hash mismatch - Pi 4 |
| 4 | 4 | Unsupported board type |
| 4 | 5 | Fatal firmware error |
| 4 | 6 | Power failure type A |
| 4 | 7 | Power failure type B |
| 2 | 1 | Partition not FAT |
| 2 | 2 | Failed to read from partition |
| 2 | 3 | Extended partition not FAT |
| 2 | 4 | File signature/hash mismatch - Pi 4 |
| 4 | 4 | Unsupported board type |
| 4 | 5 | Fatal firmware error |
| 4 | 6 | Power failure type A |
| 4 | 7 | Power failure type B |
## Freeze a package with apt/apt-get
@ -73,9 +72,9 @@ Run `wifi-menu`. It does not survice a reboot though!
I prefer `iwctl` or NetworkManager, so what I do:
~~~console
```console
# pacman -S networkmanager
~~~
```
### No network after boot
@ -85,15 +84,15 @@ file was totally messed up (a bracket too much I think).
So there is a quick way to connect to a WiFi network with the use of `nmcli` (NetworkManager).
~~~console
```console
$ sudo nmcli device wifi connect [ssid] password [password]
~~~
```
You can view networks with (no need for _sudo_):
~~~console
```console
$ nmcli device wifi list
~~~
```
### Moving to testing (from bookworm)
@ -107,24 +106,24 @@ prompt that I use on my computers -- it needed a newer version of the
First of all, upgrade to the latest packages.
~~~console
```console
$ sudo apt update && sudo apt upgrade
~~~
```
Now change the release name (e.g. `bookworm`) to `testing` in `/etc/apt/sources.list`:
~~~
```
deb http://deb.debian.org/debian testing main contrib non-free non-free-firmware
deb http://deb.debian.org/debian-security/ testing-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian testing-updates main contrib non-free non-free-firmware
~~~
```
Then update step by step.
~~~console
```console
$ sudo apt update
$ sudo apt upgrade
~~~
```
> Restart services during package upgrades without asking?
@ -132,10 +131,10 @@ Answer with <kbd>Yes</kbd>.
Finish the update:
~~~console
```console
$ sudo apt full-upgrade
$ sudo reboot
~~~
```
### Python 3
@ -145,18 +144,18 @@ I could not find `aprslib` as a package, so I had to install this myself.
Debian did not allow the installation as it did before, so I had to create
a virtual environment. And it went like this:
~~~console
```console
$ python -m venv ~/.env
$ source ~/.env/bin/activate
$ pip install aprslib
$ deactivate
~~~
```
I now have a similar line in my crontab:
~~~crontab
```crontab
3 * * * * /home/dominic/.env/bin/python /home/dominic/bin/aprs_sendstatus.py
~~~
```
We could also create virtual environments per application, module, package etc.
@ -175,25 +174,25 @@ Though, I have some quick notes to remember:
Some software is needed to get status information about the batteries (which are of type 18650).
~~~console
```console
$ python3 -m venv .
$ curl -LsO https://raw.githubusercontent.com/geeekpi/upsplus/main/install.sh
$ bash install.sh
~~~
```
Any errors can be resolved by installing by hand. In my notes I thought that info is enough, so
here we are :wink:
We may have to edit our crontab:
~~~cron
```cron
* * * * * /home/dr/bin/python3 /home/dr/bin/upsPlus.py > /tmp/upsPlus.log
* * * * * /home/dr/bin/python3 /home/dr/bin/upsPlus_iot.py > /tmp/upsPlus_iot.log
~~~
```
Getting information:
~~~console
```console
$ python3 bin/upsPlus.py
------------------------------------------------------------
------Current information of the detected Raspberry Pi------
@ -210,7 +209,7 @@ Current Battery Power Supplement: 263.415 mW
Successfully set the protection voltage to: 3700 mV
------------------------------------------------------------
Currently charging via Type C Port.
~~~
```
The Raspberry Pi will continue to work if you remove the power cable.
@ -250,4 +249,3 @@ file (`pico_nuke_pico_w-1.1.uf2`) on the mounted device.
On OpenBSD there is no response but you can see the filesystem unmounted/removed.
Unplug the USB and plug it in again booting into uf2 loading, copying over the
MicroPython uf2 file again.

@ -12,4 +12,3 @@ for me.
## Replicating a MySQL database
<https://www.digitalocean.com/community/tutorials/how-to-set-up-replication-in-mysql>

@ -1,7 +1,7 @@
---
title: Unraid
date: 2024-01-25T22:41:48+0100
lastmod: 2024-08-31T14:02:07+0000
lastmod: 2024-09-28T23:48:06+0000
tags:
- unraid
- selfhost
@ -25,9 +25,9 @@ Selfhosting made easy -- with Unraid as storage and virtualisation server.
Easy peasy -- though, I forget that command every time I need it.
~~~console
```console
# docker network create {network-name}
~~~
```
## Don't move dockers filesystem
@ -42,4 +42,3 @@ files mentioned in the directory above.
This should bring back all your docker containers with your used settings,
but as my knowledge is limited, I can't guarantee this: I probably just had luck :winking_face_with_tongue:

@ -5,10 +5,9 @@ summary: >
This is a short story from my life that explains how I came to my amateur
radio license.
date: 2020-01-02T17:01:26+01:00
lastmod: "2023-02-12T01:32:43+0100"
lastmod: 2024-09-28T23:48:06+0000
categories: [amateur-radio]
tags: [life]
---
I'm not the casual ham radio operator that always wanted to operate his own
@ -37,53 +36,57 @@ Innsbruck.
We had to attend these blocks:
**1. block**
- **Friday, September 27, (15:00 to 20:30)**
introduction and law pt 1
- **Saturday, September 28, (09:00 to 18:00)**
law pt 2 and engineering pt 1
- **Friday, September 27, (15:00 to 20:30)**
introduction and law pt 1
- **Saturday, September 28, (09:00 to 18:00)**
law pt 2 and engineering pt 1
**2. block**
- **Friday, October 4, (15:00 to 20:30)**
operating technology pt 1
- **Saturday, October 5, (09:00 to 18:00)**
engineering pt 2
- **Friday, October 4, (15:00 to 20:30)**
operating technology pt 1
- **Saturday, October 5, (09:00 to 18:00)**
engineering pt 2
**3. block**
- **Friday, October 11, (15:00 to 20:30)**
engineering pt 3
- **Saturday, October 12, (09:00 to 18:00)**
engineering pt 4 and operating technology pt 2
- **Friday, October 11, (15:00 to 20:30)**
engineering pt 3
- **Saturday, October 12, (09:00 to 18:00)**
engineering pt 4 and operating technology pt 2
**4. block -- refreshing**
- **Saturday, October 19, (13:00 to 17:00)**
simulation of an exam (it was highly recommended to visit this training)
- **Saturday, October 19, (13:00 to 17:00)**
simulation of an exam (it was highly recommended to visit this training)
## Cost report
This represents the total amount of money I had to put into getting my license.
| date and time | value | description |
| :--- | ---: | :--- |
| 12.08.2019, Monday | 75.56 € | documentation scripts |
| 27.09.2019, Friday | 90.00 € | the course itself |
| 27.09.2019, Friday | 14.70 € | parking "Hentschelhof" |
| 28.09.2019, Saturday | 48.15 € | refueling |
| 28.09.2019, Saturday | 10 € | lunch |
| 28.09.2019, Saturday | 14.40 € | parking "Wilten" |
| 04.10.2019, Friday | 14.40 € | parking "Wilten" |
| 05.10.2019, Saturday | 10 € | lunch |
| 05.10.2019, Saturday | 18.20 € | parking "Altstadtgarage" |
| 05.10.2019, Saturday | 53.11 € | refueling |
| 11.10.2019, Friday | 14.70 € | parking "Altstadtgarage" |
| 12.10.2019, Saturday | 7 € | lunch |
| 12.10.2019, Saturday | 18.20 € | parking "Altstadtgarage" |
| 12.10.2019, Saturday | 45.26 € | refueling |
| 19.10.2019, Saturday | 13 € | parking "Markthalle" |
| 19.10.2019, Saturday | 57.08 € | refueling |
| 22.10.2019, Tuesday | 28.83 € | examination fee |
| 22.10.2019, Tuesday | 14.30 € | examination certificate |
| 22.10.2019, Tuesday | 3 € | parking "SOHO 2.0" |
| | **549.89 €** | **total** |
| date and time | value | description |
| :------------------- | -----------: | :----------------------- |
| 12.08.2019, Monday | 75.56 € | documentation scripts |
| 27.09.2019, Friday | 90.00 € | the course itself |
| 27.09.2019, Friday | 14.70 € | parking "Hentschelhof" |
| 28.09.2019, Saturday | 48.15 € | refueling |
| 28.09.2019, Saturday | 10 € | lunch |
| 28.09.2019, Saturday | 14.40 € | parking "Wilten" |
| 04.10.2019, Friday | 14.40 € | parking "Wilten" |
| 05.10.2019, Saturday | 10 € | lunch |
| 05.10.2019, Saturday | 18.20 € | parking "Altstadtgarage" |
| 05.10.2019, Saturday | 53.11 € | refueling |
| 11.10.2019, Friday | 14.70 € | parking "Altstadtgarage" |
| 12.10.2019, Saturday | 7 € | lunch |
| 12.10.2019, Saturday | 18.20 € | parking "Altstadtgarage" |
| 12.10.2019, Saturday | 45.26 € | refueling |
| 19.10.2019, Saturday | 13 € | parking "Markthalle" |
| 19.10.2019, Saturday | 57.08 € | refueling |
| 22.10.2019, Tuesday | 28.83 € | examination fee |
| 22.10.2019, Tuesday | 14.30 € | examination certificate |
| 22.10.2019, Tuesday | 3 € | parking "SOHO 2.0" |
| | **549.89 €** | **total** |
In the end I paid **203.60€** for gasoline, **27€** for lunch on Saturdays and
**110.60€** for parking my car.
@ -95,8 +98,8 @@ kilometers -- you may get away with less on that part.
The exam is split into three different topics: law, engineering and operating
technology.
Every person gets three questions in *law*, three questions in *engineering* and
three questions in *operating technology*. This happens one person at a time, so
Every person gets three questions in _law_, three questions in _engineering_ and
three questions in _operating technology_. This happens one person at a time, so
if person 1 answered the first three questions person 2 has to answer three
other questions in the same topic.

@ -4,7 +4,6 @@ aliases: /posts/2020-11-14-error-with-signed-commits
categories: [computerstuff]
tags: [git]
date: 2020-11-14T23:22:42+01:00
---
For some reason my git commits failed when I re-enabled gpg signing. This is how
@ -14,22 +13,22 @@ I finally fixed that problem.
##### Add to `~/.gnupg/gpg.conf`
~~~plain
use-agent
```plain
use-agent
pinentry-mode loopback
~~~
```
##### And add to `~/.gnupg/gpg-agent.conf`
~~~plain
```plain
allow-loopback-pinentry
~~~
```
##### Restart the agent
~~~console
```console
$ echo RELOADAGENT | gpg-connect-agent
~~~
```
This information was found on
[d.sb/2016/11/gpg-inappropriate-ioctl-for-device-errors][1].

@ -4,7 +4,6 @@ aliases: /posts/2020-11-14-keep-up-to-date-on-forked-repositories
categories: [computerstuff]
tags: [git]
date: 2020-11-14T23:20:16+01:00
---
I usually fetch the upstream repository and merge it into my local repository,

@ -1,12 +1,11 @@
---
title: Operating the Z-Shell
aliases:
- /posts/2020-11-15-operating-the-z-shell
- /posts/2020-11-14-operating-the-z-shell
- /posts/2020-11-15-operating-the-z-shell
- /posts/2020-11-14-operating-the-z-shell
categories: [computerstuff]
tags: [zsh-shell]
date: 2020-11-15T00:35:22+01:00
---
This article is a summary of
@ -18,7 +17,7 @@ pleasure :wink:
<!--more-->
{{< alert circle-info >}}
*None of the following commands on this page are my own.*
_None of the following commands on this page are my own._
{{< /alert >}}
[1]: https://reasoniamhere.com/2014/01/11/outrageously-useful-tips-to-master-your-z-shell/

@ -7,8 +7,7 @@ summary: >
categories: [amateur-radio]
tags: [dmr, scripting]
date: 2020-11-16T23:23:51+01:00
lastmod: 2024-09-22T17:00:57+0000
lastmod: 2024-09-28T23:48:06+0000
---
Let's start with the website [ham-digital.org](https://ham-digital.org/). It
@ -27,7 +26,7 @@ registrations or the list of local administrators.~~
[reg]: https://register.ham-digital.org/
Okay, I try to keep this simple. These scripts are made to download an actual
snapshot of the DMR-ID database from *ham-digital.org*. They create a
snapshot of the DMR-ID database from _ham-digital.org_. They create a
comma-separated list of DMR-IDs and callsigns to import into an amateur radio
device. Actually I use them only on my
[Radioddity GD-77]({{< ref "equipment/radio-stuff/handhelds/radioddity-gd77" >}}).
@ -38,7 +37,7 @@ That fetches the whole database, which are something around 180.000 entries at
the moment (2020-Nov-15). The script uses about 8MB of RAM. Something like
that.
~~~php
```php
#!/usr/bin/env php
<?php
/*
@ -68,7 +67,7 @@ that.
fclose ($remote_file);
fclose ($local_file);
?>
~~~
```
## Download only a few regions into separate files
@ -76,7 +75,7 @@ Fetch some regions (specified in the script) and some additional callsigns from
a file that contains one callsign per line. This script uses a lot more RAM.
Something around 32MB I guess. Or so.
~~~php
```php
#!/usr/bin/env php
<?php
/*
@ -89,13 +88,13 @@ Something around 32MB I guess. Or so.
$remote_file = fopen ($url, 'r') or die ($php_errormsg);
$mem = array ();
while (!feof ($remote_file)) {
$line = fgetss ($remote_file, 64);
$elem = explode (',', $line, -4);
array_push($mem, $elem);
}
$path = '/Users/dominic/';
$fav_filename = 'Favorite_Callsigns.txt';
@ -145,14 +144,14 @@ Something around 32MB I guess. Or so.
fclose ($remote_file);
fclose ($local_file);
?>
~~~
```
## Download only a few regions into one single file
Like the one above, but it saves all IDs into one file. Uses probably the same
amount of RAM.
~~~php
```php
#!/usr/bin/env php
<?php
/*
@ -167,7 +166,7 @@ amount of RAM.
$remote_file = fopen ($url, 'r') or die ($php_errormsg);
$mem = array ();
while (!feof ($remote_file)) {
$line = fgetss ($remote_file, 64);
$elem = explode (',', $line, -4);
@ -190,7 +189,7 @@ amount of RAM.
$filename = 'DMR-IDS-SMALL.csv';
@unlink($path.$filename);
$file = fopen ($path.$filename, 'w') or die ($php_errormsg);
fputcsv ($file, array ('dmrid', 'callsign', 'name'));
@ -215,6 +214,6 @@ amount of RAM.
}
}
fclose ($file);
fclose ($file);
?>
~~~
```

@ -3,11 +3,10 @@ title: My virtual windows machine from VirtualBox on Big Sur will not start
aliases: /posts/2020-11-22-virtual-machine-on-big-sur-not-starting
summary: >
A quick fix if your virtual machine will not start. As long, as you got the
same configuration as me
same configuration as me
categories: [computerstuff]
tags: [macos,virtualbox]
tags: [macos, virtualbox]
date: 2020-11-22T18:02:45+01:00
---
Okay, a quick one. I've updated my macbook now to Big Sur today. A lot of files
@ -28,9 +27,9 @@ protection system as suggested on the forums before and rebootet the system agai
To enable Apples protection system, type this command:
~~~console
```console
$ csrutil enable
~~~
```
After that, type `reboot` and hit enter.

@ -7,7 +7,6 @@ summary: >
date: 2020-12-21T12:13:30+01:00
categories: [computerstuff]
tags: [git]
---
For me, git repositories are a complex thing. As I wrote in an [earlier article][1]
@ -34,7 +33,7 @@ please let me know. I'm all up to learn this stuff the right way.
Let's take my prezto repository and add the upstream repository to it.
~~~console
```console
$ git log
commit d321120fdebb84c7dc282a05eaaa57fdaf56987b (HEAD -> master)
Author: Dominic Reich <dominic>
@ -71,7 +70,7 @@ Date: Fri Dec 18 16:38:31 2020 +0100
Release notes:
[...]
~~~
```
In this example I already have a commit that changes something. And a few commits
later the changes will be reverted again because that did not work out so well.
@ -84,16 +83,16 @@ on top of the history on github.
Now, create our patchfile.
~~~console
```console
$ git format-patch -5 HEAD > ../changes.patch
~~~
```
This saves the recent 5 commits from HEAD into `../changes.patch`, which file
is not in the git repository, but one directory above.
We continue using the master branch and getting upstream/master.
~~~console
```console
$ git checkout master
Bereits auf 'master'
Ihr Branch ist auf demselben Stand wie 'origin/master'.
@ -105,13 +104,13 @@ Bereits aktuell.
$ git reset --hard upstream/master
HEAD ist jetzt bei b7a80d9 prompt: update powerlevel10k submodule to v1.14.4
$ git push origin master --force
~~~
```
Now we have our local master branch set equal to the master branch on the
remote upstream repository. We now add our changes into the repository, our
patchfile.
~~~console
```console
$ patch -p1 < ../changes.patch
patching file runcoms/zlogout
patching file runcoms/zpreztorc
@ -122,7 +121,7 @@ patching file runcoms/zaliases
patching file runcoms/zpreztorc
patching file runcoms/zaliases
patching file runcoms/zshenv
~~~
```
This leaves us again with many changes, but we can add them to git all together
as one single commit if we like.
@ -131,7 +130,7 @@ Run `git diff` to view the changes on the files.
Make your changes now and create a new commit.
~~~console
```console
$ git add .
$ gcm 'personalized'
[master 3d19001] personalized
@ -149,11 +148,11 @@ Gesamt 9 (Delta 5), Wiederverwendet 0 (Delta 0), Pack wiederverwendet 0
remote: Resolving deltas: 100% (5/5), completed with 5 local objects.
To github.com:oe7drt/prezto.git
b7a80d9..3d19001 master -> master
~~~
```
The history now looks like this:
~~~console
```console
$ git log
commit 3d19001518997c29204457fe2d1119fc9830010c (HEAD -> master, origin/master, origin/HEAD)
Author: Dominic Reich <dominic>
@ -170,11 +169,11 @@ Date: Fri Dec 18 16:38:31 2020 +0100
Release notes:
[...]
~~~
```
## Approach #2: reset to upstream branch
~~~console
```console
$ git checkout main
Bereits auf 'main'
Ihr Branch ist auf demselben Stand wie 'origin/main'.
@ -207,7 +206,7 @@ Gesamt 6 (Delta 3), Wiederverwendet 0 (Delta 0)
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
To github.com:oe7drt/MMDVMHost-Websocketboard.git
ea48f75..ba62875 main -> main
~~~
```
You now have the history of your upstream repository and only one commit on top
of the history.

@ -6,10 +6,9 @@ summary: >
the command line. They work on linux and macOS. Use jpegtran for JPG
images.
categories: [computerstuff]
tags: [ zsh-shell, fish-shell ]
tags: [zsh-shell, fish-shell]
date: 2020-01-20T20:34:20+01:00
lastmod: 2023-12-26T13:25:16+0000
lastmod: 2024-09-28T23:48:06+0000
---
## Optimizing a bunch of images in a directory
@ -18,66 +17,66 @@ I found these commands here coincidentally on a
[pull request](https://github.com/xianmin/hugo-theme-jane/pull/266) at Github.
I found them quite handy :+1:
~~~console
```console
$ find . -type f -name "*.png" -print0 | xargs -0 -I {} optipng -nb -nc "{}"
$ find . -type f -name "*.png" -print0 | xargs -0 -I {} advpng -z4 "{}"
$ find . -type f -name "*.png" -print0 | xargs -0 -I {} pngcrush -rem gAMA -rem alla -rem cHRM -rem iCCP -rem sRGB -rem time -ow "{}"
~~~
```
## Quickly optimizing only one image
I've set up a function in my `.zaliases` file for this to be done on a single
image aswell:
~~~zsh
```zsh
function opti() {
optipng -nb -nc "$*";
advpng -z4 "$*";
pngcrush -rem gAMA -rem alla -rem cHRM -rem iCCP -rem sRGB -rem time -ow "$*";
}
~~~
```
To run all three commands on a single image I just call it like that:
~~~console
```console
$ opti image.png
~~~
```
That's all the magic it needs.
## Use jpegtran for JPG images
~~~console
```console
$ jpegtran -copy none -optimize -progressive -outfile output.jpg input.jpg
~~~
```
## Install these tools on your system
On debian or ubuntu
~~~console
```console
$ sudo apt-get install optipng pngcrush advancecomp
~~~
```
On Arch based distros using pamac
~~~console
```console
$ sudo pamac install optipng pngcrush advancecomp
~~~
```
(advancecomp is in AUR)
On macOS
~~~console
```console
$ sudo port install optipng pngcrush advancecomp
~~~
```
or if you use homebrew
~~~console
```console
$ brew install optipng pngcrush advancecomp
~~~
```
You may know other package managers commands, but I only use these.
@ -87,7 +86,7 @@ You may know other package managers commands, but I only use these.
The files taken from the snapshot tool on my macbook.
~~~plain
```plain
33K 00_locales.png
61K 01_control-software.png
157K 02_mmdvmhost.png
@ -96,11 +95,11 @@ The files taken from the snapshot tool on my macbook.
69K 05_exp_mmdvmhost-dmrnetwork.png
212K 06_exp_dmrgw-dmrnetwork1.png
236K 07_exp_dmrgw-dmrnetwork2.png
~~~
```
Three to four minutes later (all three commands):
~~~plain
```plain
17K 00_locales.png
33K 01_control-software.png
81K 02_mmdvmhost.png
@ -109,14 +108,14 @@ Three to four minutes later (all three commands):
32K 05_exp_mmdvmhost-dmrnetwork.png
127K 06_exp_dmrgw-dmrnetwork1.png
144K 07_exp_dmrgw-dmrnetwork2.png
~~~
```
### By view
~~~plain
```plain
25K opti_01.png
13K opti_02.png
~~~
```
![Original image](opti_01.png "This is the unmodified image: `opti_01.png`") ![Optimized image](opti_02.png "And this is the optimized image: `opti_02.png`")
@ -126,7 +125,7 @@ Do you see much difference?
I added this to my fishs configuration (when I used fish for a while).
~~~fish
```fish
# file: "~/.config/fish/functions/opti.fish"
function opti --description "Optimizes .png files"
# Author: Dominic, OE7DRT <dominic@oe7drt.com>
@ -163,11 +162,11 @@ function opti --description "Optimizes .png files"
pngcrush -rem gAMA -rem alla -rem cHRM -rem iCCP -rem sRGB -rem time -ow "$argv[$i]";
end
end
~~~
```
And I made one for the jpeg version too:
~~~fish
```fish
# file: "~/.config/fish/functions/jopti.fish"
function jopti --description "Optimizes .jpg files"
# Author: Dominic, OE7DRT <dominic@oe7drt.com>
@ -202,4 +201,4 @@ function jopti --description "Optimizes .jpg files"
jpegtran -copy none -optimize -progressive -outfile "$argv[$i]" "$argv[$i]"
end
end
~~~
```

@ -1,23 +1,22 @@
---
title: HS Dual Hat With PiStar v4
aliases:
- /posts/2020-01-23-hs-dual-hat-with-pistar-v4
- /blog/amateur-radio/2020-01-23-hs-dual-hat-with-pistar-v4/
- /amateur-radio/2020-01-23-hs-dual-hat-with-pistar-v4/
- /posts/2020-01-23-hs-dual-hat-with-pistar-v4
- /blog/amateur-radio/2020-01-23-hs-dual-hat-with-pistar-v4/
- /amateur-radio/2020-01-23-hs-dual-hat-with-pistar-v4/
summary: >
This is a MMDVM_HS_Dual_Hat hotspot in duplex mode with DMRGateway
and an actual Pi-Star image.
categories: amateur-radio
tags:
- pistar
- dmr
- ysf
- dstar
- hotspot
- mmdvm
- pistar
- dmr
- ysf
- dstar
- hotspot
- mmdvm
date: 2020-01-23T15:03:35+01:00
lastmod: 2024-05-19T16:41:25+0000
lastmod: 2024-09-28T23:48:06+0000
---
{{< alert circle-info >}}
@ -56,18 +55,18 @@ the same as on the dashboard.
Now you got the filesystem writable, so start the keyboard configuration:
~~~console
```console
$ sudo dpkg-reconfigure keyboard-configuration
~~~
```
I then usually go for the 105-key PC one. Choose German (Austria) and go for the
default keyboard layout with no compose key -- except you have other needs.
Then start generating the locales for your environment.
~~~console
```console
$ sudo dpkg-reconfigure locales
~~~
```
Choose the locales that you need or want. My setup looks like this:
@ -80,7 +79,7 @@ I add my aliases to `.bash_aliases` -- this is the file that gets sourced via
Quick and dirty -- my current `.bash_aliases` on my Pi-Stars looks like this:
~~~bash
```bash
# File: "~/.bash_aliases"
DATE=$(date +%Y-%m-%d)
PI=/var/log/pi-star/
@ -123,15 +122,15 @@ alias lx='ll -XB'
alias ducks='du -cks * | sort -rn | head'
alias confcat="sed -e 's/#.*//;/^\s*$/d' "$@""
~~~
```
### Optional
More software that comes in handy from time to time.
~~~console
```console
$ sudo apt-get install htop lsof nmap arping vim pydf multitail git ldnsutils
~~~
```
{{< figure caption="`pydf` in combination with the alias from above displays a short and colored output when you list your diskspace with `df`" src="11_df_output.png" alt="an example output of `pf`" >}}
@ -140,21 +139,21 @@ $ sudo apt-get install htop lsof nmap arping vim pydf multitail git ldnsutils
The installation of vnstat is useful, if you let your pi-star run 24/7 as the
database gets cleared on every reboot!
~~~console
```console
$ sudo apt-get install vnstat
~~~
```
Add the following line to your `/etc/fstab` file. I assume that you still
have the filesystem writable -- if not, run `rpi-rw`.
~~~plain
```plain
# file: "/etc/fstab"
tmpfs /var/lib/vnstat tmpfs nodev,noatime,nosuid,mode=1777,size=4m 0 0
~~~
```
If you run `cat /etc/fstab` it should look similar to this:
~~~plain
```plain
# file: "/etc/fstab"
#File System Mountpoint Type Options Dump Pass
proc /proc proc defaults 0 0
@ -176,28 +175,28 @@ tmpfs /var/cache/samba tmpfs nodev,noatime,nosuid,mode=0755,siz
tmpfs /var/spool/exim4/db tmpfs nodev,noatime,nosuid,mode=0750,size=64k 0 0
tmpfs /var/spool/exim4/input tmpfs nodev,noatime,nosuid,mode=0750,size=64k 0 0
tmpfs /var/spool/exim4/msglog tmpfs nodev,noatime,nosuid,mode=0750,size=64k 0 0
~~~
```
Normally, vnstat creates `/var/lib/vnstat` and starts the vnstat service. We now
delete the freshly created databases (they are nearly empty anyway) and
re-create them when we have mounted the ramdisk.
~~~console
```console
$ sudo rm /var/lib/vnstat/*
$ sudo mount -a
$ sudo systemctl restart vnstatd
~~~
```
Now run `vnstat` to display network interface statistics. It's output could
look similar to this one:
~~~plain
```plain
rx / tx / total / estimated
eth0: Not enough data available yet.
wlan0:
Jän '20 39,23 MiB / 39,10 MiB / 78,33 MiB / 106,00 MiB
today 39,23 MiB / 39,10 MiB / 78,33 MiB / 138 MiB
~~~
```
It takes time to gather enough information. Get back to this in a few days and
you will get more useful information. Because we save the databases in the
@ -214,9 +213,9 @@ PiStar does not mount the volumes read-only!**
Once you finished your setup, make the filesystem read-only again.
~~~console
```console
$ rpi-ro
~~~
```
## Start setting up your Pi-Star MMDVM
@ -231,16 +230,16 @@ the **Apply Changes** button. So when hitting the button wait a few seconds
This setup uses some talk groups from IPSC2/DMR+ and the rest from Brandmeister.
Specifically these talkgroups are:
* Timeslot 1
* TG 1 - TG 7
* TG 10 - TG 89
* TG 100 - TG 199
* Timeslot 2
* DMR+ reflectors with TG 9
* TG 232
* TG 8181 - TG 8189
* TG 8191 - TG 8199
* GPS data sent as private calls to 9057
- Timeslot 1
- TG 1 - TG 7
- TG 10 - TG 89
- TG 100 - TG 199
- Timeslot 2
- DMR+ reflectors with TG 9
- TG 232
- TG 8181 - TG 8189
- TG 8191 - TG 8199
- GPS data sent as private calls to 9057
All other talkgroups are routed to the Brandmeister network. Private calls are
also routed to Brandmeister.
@ -251,7 +250,6 @@ This is where we actually start. At the first start either connect your
Raspberry Pi to an ethernet port or look out for a WiFi network called
Pi-Star Setup.
{{< figure src="01_control-software.png" alt="Control Software configuration" caption="Make sure to use Duplex Repeater in order to use different RX and TX frequencies." >}}
### MMDVMHost
@ -286,9 +284,9 @@ for Hotspot Security. That makes sure, that only you can add a Hotspot with your
callsign. Also select the IPSC2 server of your choice and set the wanted
options. I go with these for now:
~~~ini
```ini
StartRef=4197;RelinkTime=15;UserLink=1;TS2_1=232;TS2_2=8189;
~~~
```
In this scenario I want to statically link the two talk groups `232` and `8189`
on timeslot 2. I also allow `UserLink` which allows users to link to different
@ -296,9 +294,9 @@ reflectors. The default reflector is `4197` and this gets relinked if nobody
presses PTT for 15 minutes. If you need talkgroups from timeslot 1 you would
probably write something like this:
~~~ini
```ini
StartRef=4197;RelinkTime=15;UserLink=1;TS1_1=20;TS2_1=232;TS2_2=8189;
~~~
```
That will also include talk group 20 from timeslot 1. I thought you can
statically link up to 5 talkgroups, but I'm not sure if this information is up
@ -342,7 +340,7 @@ When you have saved that, go to the expert settings again and choose again
This configuration file is split into paragraphs. Look out for the
`[DMR Network 1]` block.
~~~ini
```ini
[DMR Network 1]
Enabled=1
Address=178.238.234.72
@ -359,11 +357,11 @@ Password="***"
Debug=0
Id=232718001
Name=BM_Germany_2622
~~~
```
Our next block is called `[DMR Network 2]`.
~~~ini
```ini
[DMR Network 2]
Enabled=1
Address=89.185.97.34
@ -383,7 +381,7 @@ Debug=0
Id=2327180
Name=DMR+_IPSC2-OE-DMO
Options="StartRef=4197;RelinkTime=15;UserLink=1;TS2_1=232;TS2_2=8189;"
~~~
```
[Read along here](https://github.com/g4klx/DMRGateway/wiki/Rewrite-Rules)
if you want to know more about the different rewrite rules.
@ -424,8 +422,8 @@ in the middle of the page. To get an api key visit the
There are some more handy links for Brandmeister:
* [list connected peers to the Austrian BM_2321 server][list]
* [last heard on this specific master server][lh]
- [list connected peers to the Austrian BM_2321 server][list]
- [last heard on this specific master server][lh]
[list]: http://62.171.130.35/status/status.htm
[lh]: https://brandmeister.network/?page=lh&Master=2321
@ -440,10 +438,10 @@ Or reboot the whole Raspberry Pi.
{{< video "pistar-remote-reboot" >}}
To make use of PiStar Remote you need to set it up. Go to *Configuration ->
Expert* and choose *PiStar Remote* (in the Full Edit line).
To make use of PiStar Remote you need to set it up. Go to _Configuration ->
Expert_ and choose _PiStar Remote_ (in the Full Edit line).
~~~ini
```ini
[enable]
# Is the Pi-Star Remote Enabled? (true|false)
enabled=true
@ -456,11 +454,11 @@ svcrestart=8999998
reboot=8999997
#shutdown=8999996
#hostfiles=9999995
~~~
```
## Final words
I think this whole article is a *work in progress* -- I just always find things
I think this whole article is a _work in progress_ -- I just always find things
that I do different now and I cannot always change these things in this article
too; some aren't even wrong, they just fit better.

@ -1,17 +1,16 @@
---
title: APRS With The Hytera PD785G
aliases:
- /posts/2020-01-27-aprs-with-hytera-pd785g-v9
- /posts/2020-01-27-aprs-with-the-hytera-pd785g
- /blog/amateur-radio/2020-01-27-aprs-with-hytera-pd785g-v9
- /blog/2020-01-27-aprs-with-hytera-pd785g-v9-firmware/
- /posts/2020-01-27-aprs-with-hytera-pd785g-v9
- /posts/2020-01-27-aprs-with-the-hytera-pd785g
- /blog/amateur-radio/2020-01-27-aprs-with-hytera-pd785g-v9
- /blog/2020-01-27-aprs-with-hytera-pd785g-v9-firmware/
summary: >
This article is based on the Firmware v9.
categories: [amateur-radio]
tags: [dmr,aprs,hytera]
tags: [dmr, aprs, hytera]
date: 2020-01-27T17:34:01+01:00
lastmod: 2023-12-26T18:36:39+0000
lastmod: 2024-09-28T23:48:06+0000
---
I've read many articles about the Hytera PD785G, APRS, GPS, IPSC2, DMR+,
@ -25,15 +24,15 @@ These settings remain the same as on the v8 firmware.
{{< figure src="hyt_01_gps.png" alt="GPS settings" caption="" >}}
Also this remains the same -- make sure to disable *Quick GPS* and enable
*RSSI Report*.
Also this remains the same -- make sure to disable _Quick GPS_ and enable
_RSSI Report_.
{{< figure src="hyt_02_gps.png" alt="GPS settings" caption="" >}}
You do not really need the other settings. On incoming calls *Call Location*
will show the location of other stations on the display. *Voice with Location*
You do not really need the other settings. On incoming calls _Call Location_
will show the location of other stations on the display. _Voice with Location_
sends your own location info out with your voice. This is needed for
*Call Location*.
_Call Location_.
## Network settings
@ -44,7 +43,7 @@ Set the Control Center ID to `9057` if you want to appear as portable device.
You can also use any of those number-symbol combinations.
| RRS & Radio IDs | description |
| :--- | :--- |
| :-------------- | :------------------- |
| 9050 | without SSID |
| 9055 | house / QTH |
| 9056 | camping / fieldday |
@ -57,7 +56,7 @@ You can also use any of those number-symbol combinations.
Setup the channel like this. Just make sure to set `Location Info
Revert Channel`. I did not select `IP Multi-site
Connect` and I also did not select an `RRS Revert
Channel`. I am not 100% sure, but I think the *RRS Revert Channel*
Channel`. I am not 100% sure, but I think the _RRS Revert Channel_
is what makes your HT send your position out when you change channels.
{{< figure src="hyt_04_channel.png" alt="channel settings" caption="" >}}
@ -91,7 +90,6 @@ location is transferred as your plain CALLSIGN, without the `-7` for
{{< figure src="hyt_08_aprs_route_9057.png" alt="route with the ssid 7" caption="The route looks like this when transmitted as CALLSIGN-7." >}}
{{< figure src="hyt_07_aprs_route_9050.png" alt="route without ssid" caption="The route looks like that when no SSID is appended to the CALLSIGN." >}}
When transmitted with SSID a location point looks like this:

@ -3,25 +3,24 @@ title: Get DMRIDs Via Command Line
aliases: /posts/2020-02-04-get-dmrids-on-the-command-line
summary: This is a quick workaround to retrieve a DMRID on console or terminal.
categories: [amateur-radio]
tags: [dmr,pistar,scripting]
tags: [dmr, pistar, scripting]
date: 2020-02-04T13:05:25+01:00
---
You want to install `w3m`. It is a text browser. Don't forget `rpi-rw` before
installing anything if you're on Pi-Star.
~~~console
```console
$ sudo apt-get -y install w3m
~~~
```
## The script
The script itself does not verify the given callsign, so whatever you write as
an argument, it will be passed to the website. The script returns with `0` if
nothing is found.
nothing is found.
~~~bash
```bash
# file: "~/bin/call"
#!/bin/bash
# Get DMR-IDs from CALLSIGN or CALLSIGN from DMR-ID or vice versa
@ -102,7 +101,7 @@ then
else
print_usage
fi
~~~
```
{{< alert circle-info >}}
If someone has two DMRIDS, the most recent registered callsign will appear on
@ -115,53 +114,53 @@ heard ids.
Simply get one DMRID (or two, depends on the callsign though):
~~~console
```console
$ call OE7DRT
~~~
```
Now let's think a bit more complex. You can use the script in a loop. Let's fetch
some austrian callsigns only.
~~~console
```console
$ for i in 7one 7two 1three; do call oe$i ids >>! ids; done
~~~
```
That would fetch 3 callsigns `OE7ONE`, `OE7TWO` and `OE1ONE` and write them
all into the file `ids`. So run `cat ids` and display them on screen. Or copy
them into clipboard (on a mac only) with `pbcopy < ids`.
~~~console
```console
OE7ONE Username1 0007001 2018-05-12
OE7TWO Username2 0007003 2018-12-08
OE7TWO Username2 0007002 2018-11-09
OE1ONE Username3 0001001 2020-03-13
~~~
```
*I've been anonymizing the data a bit.*
_I've been anonymizing the data a bit._
## Partially known callsign
***I anonymized some DMR-IDs on this website.***
**_I anonymized some DMR-IDs on this website._**
So you know only the three last letters of an austrian callsign and want to
know quickly what federal state it was? Run this command and you'll get a
quick answer on the command line:
~~~console
```console
$ for i in oe{1..9}drt; do call $i; done
OE7DRT Dominic 2327180 2019-11-24
~~~
```
If you called your script `call` and if `call` is in your `$PATH`.
This works also if you missed one letter.
~~~console
```console
$ for i in oe7{a..z}rt; do call $i; done
OE7BRT Rainer 2327XXX 20XX-XX-XX
OE7DRT Dominic 2327180 2019-11-24
OE7JRT Josef 2327XXX 20XX-XX-XX
~~~
```
This took ~10 seconds on my computer.
@ -170,7 +169,7 @@ Or even with more letters, but this will take a while, since this will start
your IP address quickly, if you hammer their server with so many request in a
short period of time.
~~~console
```console
$ for i in oe7d{a..z}{a..z}; do call $i; done
2327XXX OE7D?? Daniel
2327XXX OE7D?? Hermann
@ -180,7 +179,7 @@ $ for i in oe7d{a..z}{a..z}; do call $i; done
2327180 OE7D?? Dominic
2327XXX OE7D?? Wechselberger
2327XXX OE7D?? Gernot
~~~
```
And this ran for 3 minutes and 17 seconds on my computer.

@ -1,17 +1,16 @@
---
title: My Nextion 2.4" DMR Last Heard Dashboard
aliases:
- /posts/2020-02-16-nextion-dmr-last-heard-dashboard
- /blog/nextion-dmr-last-heard-dashboard/
- /posts/2020-02-16-nextion-dmr-last-heard-dashboard
- /blog/nextion-dmr-last-heard-dashboard/
summary: >
I created a simple last-heard-dashboard for my small Nextion screen.
It currently shows the used slot, its origin (like Network or RF) , the
callsign and the used talkgroup.
categories: [amateur-radio]
tags: [nextion,dmr]
tags: [nextion, dmr]
date: 2020-02-16T12:43:34+01:00
lastmod: 2024-02-10T17:10:46+0000
lastmod: 2024-09-28T23:48:06+0000
---
## The display
@ -23,7 +22,6 @@ probably the Layout of [PD0DIB].
We're talking about a `NX3224T024_011`.
{{< figure src="nxt_01_display.jpg" alt="display" caption="" >}}
My dashboard now looks like this:

@ -3,29 +3,28 @@ title: Mountint Ext4 Filesystem On MacOS Readonly
aliases: /posts/2020-02-22-mountint-ext4-filesystem-on-macos-readonly
summary: An overview of how to mount your Pi-Star sdcard on a mac machine.
categories: [computerstuff]
tags: [pistar,macos]
tags: [pistar, macos]
date: 2020-02-22T09:33:44+01:00
---
##### Installing the needed tools
~~~console
```console
$ brew cask install osxfuse
$ brew install ext4fuse
~~~
```
##### Mount the disk on your filesystem
~~~console
```console
$ ext4fuse /dev/disk2s2 pi-star
~~~
```
##### Users, groups, write permissions, &c
If you feel that you have to add yourself to another usergroup, then do that
as the following code suggests:
~~~console
```console
$ sudo dseditgroup -o edit -a $username -t user $groupname
~~~
```

@ -1,8 +1,8 @@
---
title: My 7-Inch DMR Dashboard
aliases:
- /posts/2020-03-28-my-7inch-dmr-dashboard
- /blog/amateur-radio/2020-03-28-my-7inch-dmr-dashboard/
- /posts/2020-03-28-my-7inch-dmr-dashboard
- /blog/amateur-radio/2020-03-28-my-7inch-dmr-dashboard/
summary: >
I did not like the small screen and the small housing of my last Hotspot so
I decided to make a bigger housing where I needed a bigger screen. Look what
@ -10,10 +10,9 @@ summary: >
just right off the screen itself. Make sure to install the NextionDrivers
when you use this layout -- it offers way more possibilities.
categories: [amateur-radio]
tags: [nextion,dmr]
tags: [nextion, dmr]
date: 2020-03-28T12:42:44+01:00
lastmod: 2024-07-07T20:35:21+0000
lastmod: 2024-09-28T23:48:06+0000
---
I got a Nextion `NX8048K070_011` recently and I built a DMR Dashboard (again)
@ -71,19 +70,19 @@ Download the files from my github repository.
- <https://repo.oe7drt.net/dominic/MMDVM-Nextion-Screen-Layouts>
*Have a look at the **releases** tab as there are more older versions available
_Have a look at the **releases** tab as there are more older versions available
(the older layout looks ugly on the system page, but has buttons for
DMRGateway and DAPNETGateway).*
DMRGateway and DAPNETGateway)._
## Management view
By "clicking" the page (mainly the header on the top of the screen) you will see
a management screen with a lot of buttons. I think these are self-explanatory.
Although I hate to say it, but I had to run MMDVMHost as user *root* -- otherwise
Although I hate to say it, but I had to run MMDVMHost as user _root_ -- otherwise
the screen went all black. I'd rather like to have MMDVMHost running as a
non-privileged user *mmdvm*. Please let me know if you found a solution to run
MMDVMHost as user *mmdvm* again.
non-privileged user _mmdvm_. Please let me know if you found a solution to run
MMDVMHost as user _mmdvm_ again.
Maybe this is the reason why MMDVMHost runs as root on Pi-Star v4 too.

@ -5,10 +5,9 @@ summary: >
If you can't change the band edges on your Anytone radio, change the band
setting in the codeplug.
categories: [amateur-radio]
tags: [macos,anytone,dmr]
tags: [macos, anytone, dmr]
date: 2020-05-17T11:38:31+02:00
lastmod: 2022-12-15T06:38:03+01:00
lastmod: 2024-09-28T23:48:06+0000
---
This is as simple and straight-forward as it could be.
@ -31,6 +30,7 @@ I use Linux on my computers so I usually have such tools installed already:
```console
$ printf '\x03' | dd of=codeplug.rdt bs=1 seek=17 count=1 conv=notrunc
```
## Why would you need this?
You get a codeplug from a friend but you cannot load it into your radio because
@ -50,7 +50,7 @@ You'd be fine if you only use frequencies within the HAM bands, though.
## Bands settings
| Setting | Frequencies | Description |
| :--- | :--- | :--- |
| :------ | :-------------------- | :------------------------------------- |
| **0** | **136-174 / 400-480** | Commercial Europe Mode `000000` |
| 1 | 136-17d4 / 400-480 | Commercial US Mode `000001` |
| **3** | **144-146 / 430-440** | Amateur Europe Mode `000003` |
@ -59,4 +59,4 @@ You'd be fine if you only use frequencies within the HAM bands, though.
| 10 | 144-148 / 430-450 | Amateur Australia/Canada Mode `000010` |
| 13 | 136-174 / 403-470 | Commercial Mode `000013` |
| 16 | 144-147 / 430-440 | Amateur Thailand Mode `000016` |
| 17 | 136-174 / 430-440 | Commercial Thailand Mode `000017` |
| 17 | 136-174 / 430-440 | Commercial Thailand Mode `000017` |

@ -8,8 +8,7 @@ summary: >
very complicated either ;-)
date: 2021-08-08
categories: [computerstuff]
tags: [linux,windows,grub]
tags: [linux, windows, grub]
---
Short and concise. I had to deal with a broken Grub 2 configuration recently
@ -34,7 +33,7 @@ the computer.
The plain file in `/etc/grub.d/proxifiedScripts/` looks like this:
~~~cfg
```cfg
# file: "/etc/grub.d/proxifiedScripts/custom"
#!/bin/sh
exec tail -n +3 $0
@ -49,7 +48,7 @@ menuentry "Windows 10"{
menuentry "Reboot"{
reboot
}
~~~
```
And/Or if you just want to use `grub-customizer`: go ahead, create the
menu entry and insert the part from above (Windows 10).

@ -7,17 +7,15 @@ summary: >
This is my attempt to properly install N1MM Logger+ on my main computer
running Manjaro/Ubuntu Linux.
date: 2021-08-12
lastmod: 2024-02-18T11:02:08+0000
lastmod: 2024-09-28T23:48:06+0000
categories: [amateur-radio]
tags: [linux,windows,n1mm,emulation,wine]
tags: [linux, windows, n1mm, emulation, wine]
---
## We need to talk again (an Update)
{{< alert >}}
This is an update, the post was originally published on August 12<up>th</up>,
2021. Most of the content has changed.
This is an update, the post was originally published on August 12<up>th</up>, 2021. Most of the content has changed.
{{< /alert >}}
So in this update I would like to re-phrase and/or re-arrange this article to
@ -39,23 +37,23 @@ Some other articles that I researched and they might be interesting to you too:
Create a 32bit wine prefix (in winecfg: select Windows 7):
~~~console
```console
$ env WINEPREFIX=/home/dominic/.wine-n1mm WINEARCH=win32 wine wineboot
$ env WINEPREFIX=/home/dominic/.wine-n1mm WINEARCH=win32 wine winecfg
~~~
```
So there is a ~500MB windows in my home folder, I will back this fragile
directory up into an archive:
~~~console
```console
$ tar -cJf wine-backup-n1mm-$(date +%Y-%m-%d-%H%M%S).tar.xz .wine-n1mm/
~~~
```
Next on the list: _.Net Framework 4.6_:
~~~console
```console
$ env WINEPREFIX=/home/dominic/.wine-n1mm winetricks --force
~~~
```
Choose `Select default wine prefix`, choose
`Install Windows-DLL`, select
@ -79,9 +77,9 @@ something goes wrong at the next installations. It's the same command as before,
as it would create a timestamped filename anyway. My wine prefix `.wine-n1mm` now
is ~1.2GB big.
~~~console
```console
$ tar -cJf wine-backup-n1mm-$(date +%Y-%m-%d-%H%M%S).tar.xz .wine-n1mm/
~~~
```
This time it took about three times longer than the first time, FYI.
@ -103,16 +101,16 @@ Like above, but navigate to `DOWNLOADS` >>
After moving into the directory where our installation files reside, we tell wine
to start the installers:
~~~console
```console
$ cd Downloads/
$ env WINEPREFIX=/home/dominic/.wine-n1mm wine N1MM-Logger-FullInstaller-1.0.8954.exe
~~~
```
Unselect `Finish and restart...` and close the installer.
~~~console
```console
$ env WINEPREFIX=/home/dominic/.wine-n1mm wine N1MM-Logger-Update-1.0.9243.exe
~~~
```
Unselect `Run N1MM Logger+...` and close the installer.
@ -126,8 +124,8 @@ default shell on most linuxes) you would just omit the `env` at the beginning.
Make sure to substitute the versions with what you have downloaded -- you can
find these files here:
* [Full Install](https://n1mmwp.hamdocs.com/downloads/n1mm-full-install)
* [Latest update](https://n1mmwp.hamdocs.com/mmfiles/categories/programlatestupdate)
- [Full Install](https://n1mmwp.hamdocs.com/downloads/n1mm-full-install)
- [Latest update](https://n1mmwp.hamdocs.com/mmfiles/categories/programlatestupdate)
You should now have new desktop icons and/or new menue entries (depends on your
desktop environment).
@ -140,7 +138,7 @@ that you installed it.
You'll figure that out, the content of one of these desktop icons is:
~~~ini
```ini
[Desktop Entry]
Name=N1MM Logger+
Exec=env WINEPREFIX="/home/dominic/.wine-n1mm" wine C:\\\\windows\\\\command\\\\start.exe /Unix /home/dominic/.wine-n1mm/dosdevices/c:/users/Public/Desktop/N1MM\\ Logger+.lnk
@ -149,13 +147,13 @@ StartupNotify=true
Path=/home/dominic/.wine-n1mm/dosdevices/c:/Program Files/N1MM Logger+/SkinsAndLayouts
Icon=88F7_N1MMLogger.net.0
StartupWMClass=n1mmlogger.net.exe
~~~
```
This would probably do the same:
~~~console
```console
$ env WINEPREFIX=/home/dominic/.wine-n1mm wine .wine-n1mm/drive_c/Program\ Files/N1MM\ Logger+/N1MMLogger.net.exe
~~~
```
{{< figure src="06_errormsg.png" alt="Error message" caption="" >}}
@ -187,7 +185,7 @@ I recently switched my laptop from Manjaro Linux back to Tuxedos version of
Kubuntu. So let's have a quick look at what I did in this newly created 32bit
windows environment.
~~~console
```console
$ sudo apt-get install wine-stable
$ sudo apt-get install winetricks
$ sudo apt-get install exe-thumbnailer
@ -204,7 +202,7 @@ $ winetricks win7 # Because N1MM Logger+ does not like WinXP, I thought that wou
$ wine Downloads/N1MM-Logger-FullInstaller-1.0.8954.exe
$ wine Downloads/N1MM-Logger-Update-1.0.9275.exe
~~~
```
Start N1MM Logger+ from within your Application menue. There should be a new
folder called

@ -1,18 +1,17 @@
---
title: Running Winlink and VARA on Linux
aliases:
- /posts/2021-10-03-winlink-and-vara-on-linux
- /posts/2021-10-03-running-winlink-and-vara-on-linux
- /amateur-radio/2021-10-03-running-winlink-and-vara-on-linux
- /amateur-radio/2021-10-03-winlink-and-vara-on-linux
- /blog/2021-10-03-winlink-and-vara-on-linux
- /posts/18-winlink-and-vara-on-linux
- /posts/2021-10-03-winlink-and-vara-on-linux
- /posts/2021-10-03-running-winlink-and-vara-on-linux
- /amateur-radio/2021-10-03-running-winlink-and-vara-on-linux
- /amateur-radio/2021-10-03-winlink-and-vara-on-linux
- /blog/2021-10-03-winlink-and-vara-on-linux
- /posts/18-winlink-and-vara-on-linux
summary: >
A quick and dirty summary of my Winlink installation on my linux laptop.
date: 2021-10-03
categories: [amateur-radio]
tags: [linux,winlink,vara fm, vara hf,windows,emulation,wine]
tags: [linux, winlink, vara fm, vara hf, windows, emulation, wine]
---
This article is about using VARA FM and/or VARA HF on a linux laptop -- or
@ -20,7 +19,7 @@ computer.
## Quick and dirty
~~~console
```console
$ sudo apt-get install wine-stable winetricks exe-thumbnailer
$ export WINEPREFIX=/home/dominic/.wine-winlink
@ -51,7 +50,7 @@ $ wine Downloads/VARA\ FM\ setup\ \(Run\ as\ Administrator\).exe
## Optional, if you want backups, after you installed Winlink and VARA
$ tar -cJf wine-backup_$(date +%Y-%m-%d-%H-%M-%S)_vara-installed.tar.xz .wine-winlink
~~~
```
If your VARA window is empty after it gets started from Winlink, just minimize
it and restore it and you should see it's content again.

@ -3,10 +3,9 @@ title: Wordlist Generation
aliases: /posts/2021-10-03-wordlist-generation
summary: Just for the record. These results may not mean anything...
date: 2021-10-03
lastmod: 2023-06-04T21:30:28+0200
lastmod: 2024-09-28T23:48:06+0000
categories: [computerstuff]
tags: [linux,pentest,hashcat,john]
tags: [linux, pentest, hashcat, john]
---
I've done a simple comparison back in April and never pushed this to the website.
@ -19,27 +18,26 @@ The two don't work the same, the files were different in terms of sorting.
- <https://www.openwall.com/john/>
~~~console
```console
$ john --mask='05253?d?d?d?d?d' --min-length=9 --max-length=10 --stdout > john_file
________________________________________________________
Executed in 261,54 millis fish external
usr time 96,01 millis 11,00 micros 96,00 millis
sys time 38,02 millis 993,00 micros 37,03 millis
~~~
```
## Maskprocessor
- <https://github.com/hashcat/maskprocessor>
~~~console
```console
$ mp -i 9:10 '05253?d?d?d?d?d' -o mp_file
________________________________________________________
Executed in 6,72 millis fish external
usr time 2,19 millis 314,00 micros 1,88 millis
sys time 2,86 millis 54,00 micros 2,81 millis
~~~
```
Tests were made with [fish ><(((°>](https://fishshell.com/).

@ -5,24 +5,23 @@ summary: >
A quick oneliner to list running processes that prevent a filesystem from
being unmounted. Using `lsof` or `fuser` for this.
date: 2021-10-26T10:06:47+02:00
lastmod: 2021-11-21
lastmod: 2024-09-28T23:48:06+0000
categories: [computerstuff]
tags: [linux]
---
Another quick one: I forget this command on a permanent basis, so I write this
down here -- maybe this helps.
~~~console
```console
$ lsof +f -- /media/mountpoint
~~~
```
#### Update on 2021-11-21
You could also use `fuser`. I prefer this one because somehow I cannot use
autocompletion with lsof and fuser lets me complete the paths.
~~~console
```console
$ fuser -vm /media/mountpoint
~~~
```

@ -8,10 +8,9 @@ summary: >
creates the [weather page](https://wx.oe7drt.com/) and also uploads my weather
data to the [APRS-IS network](http://www.aprs-is.net/).
date: 2022-01-08T14:34:54+01:00
lastmod: 2024-01-11T12:45:57+0000
lastmod: 2024-09-28T23:48:06+0000
categories: [amateur-radio]
tags: [ "wx", "weewx", "netatmo", "linux", "server", "selfhost" ]
tags: ["wx", "weewx", "netatmo", "linux", "server", "selfhost"]
---
## Update on 16<sup>th</sup> July 2023
@ -23,6 +22,7 @@ has [changed their authentication policy][1] for development apps and do
not allow simple password authentications any more.
[1]: https://dev.netatmo.com/apidocumentation/oauth#authorization-code
{{< /alert >}}
That means we have to update the extension to a fork that is recently updated.
@ -50,37 +50,37 @@ Also note, that most commands (if not all) here have to be run as the root user.
First of all, install `epel-release` so you can install `python3-cheetah` finally.
~~~console
```console
# yum install epel-release
# yum install python3-cheetah
~~~
```
Continue with adding the repository of WeeWX to your system and install WeeWX.
~~~console
```console
# rpm --import https://weewx.com/keys.html
# curl -s https://weewx.com/yum/weewx-el8.repo | tee /etc/yum.repos.d/weewx.repo
~~~
```
~~~console
```console
# dnf install weewx
~~~
```
Look out for `/var/log/messages` in order to see if WeeWX is already running
(Abort with <kbd>Ctrl</kbd>+<kbd>C</kbd>).
~~~console
```console
# tail -f /var/log/messages
~~~
```
## Configuration of WeeWX
Stop WeeWX and remove the database for now.
~~~console
```console
# /etc/init.d/weewx stop
# rm /var/lib/weewx/weewx.sdb
~~~
```
## Installation of netatmo driver
@ -91,11 +91,11 @@ So I had to find another one, which I did. It's from
[bricebou](https://github.com/bricebou/weewx-netatmo), who made a fork of the
original to be compatible with Python 3 (I think that is required now by WeeWX 4.x).
~~~console
```console
# wget -O weewx-netatmo.zip https://github.com/bricebou/weewx-netatmo/archive/master.zip
# wee_extension --install weewx-netatmo.zip
# wee_config --reconfigure
~~~
```
Have a look at the file `/etc/weewx/weewx.conf` because it sometimes happens,
that the configuration is not properly written.
@ -104,16 +104,16 @@ that the configuration is not properly written.
You can also use `systemctl start weewx` instead.
~~~console
```console
# /etc/init.d/weewx start
~~~
```
## Localisation
The setup is done, although if you like your pages with another locale you may
want to alter the file `/usr/share/weewx/user/extensions.py`.
~~~python
```python
# file: "/usr/share/weewx/user/extensions.py"
#
# Copyright (c) 2009-2015 Tom Keffer <tkeffer@gmail.com>
@ -133,13 +133,13 @@ import locale
# Other options are possible. See:
# http://docs.python.org/2/library/locale.html#locale.setlocale
locale.setlocale(locale.LC_ALL, 'de_AT.UTF-8')
~~~
```
## Pushing weather data to APRS-IS
Make sure you get a similar entry in your `/etc/weewx/weewx.conf` file:
~~~toml
```toml
# file: "/etc/weewx/weewx.conf"
...
@ -152,7 +152,7 @@ Make sure you get a similar entry in your `/etc/weewx/weewx.conf` file:
...
~~~
```
Now, you could also join CWOP over here: <http://www.findu.com/citizenweather/signup.html>.
I don't remember correctly, but I don't think you'll need that to just transport
@ -202,7 +202,7 @@ few moments to find the right place again. Now, for the future: the file I
talk about is `/usr/share/weewx/weewx/restx.py` and you may look somewhere near
the line 1285. I show you an excerpt of my current (already modified) file:
~~~py {linenos=table,hl_lines="5-6",linenostart=1281}
```py {linenos=table,hl_lines="5-6",linenostart=1281}
else:
_radiation_str = ""
@ -219,7 +219,7 @@ the line 1285. I show you an excerpt of my current (already modified) file:
log.debug("CWOP: packet: '%s'", _tnc_packet.rstrip('\r\n'))
return _tnc_packet
~~~
```
Line 5 and 6 (highlighted) shows the old and new line. Should work fine.
@ -242,14 +242,15 @@ The installation is very easy:
<https://neoground.com/projects/neowx-material#section-download>
- install
~~~console
```console
# wee_extension --install=neowx-material.zip
~~~
```
- restart
~~~console
```console
# systemctl restart weewx
~~~
```
I usually don't give this hint: note the `#` at the beginning of these command
lines. That means to run those commands as **root**.
@ -260,9 +261,9 @@ you should be good to go.
I did already had the `python3-ephem` package installed, I used the Almanac pages
already in the older (default) Seasons skin.
~~~console
```console
# dnf install python3-ephem
~~~
```
The new theme looks like this:

@ -1,5 +1,5 @@
---
title: 'Systemd: slow reboot and shutdown fixed'
title: "Systemd: slow reboot and shutdown fixed"
aliases: /posts/2022-06-27-systemd-slow-reboot-and-shutdown-fixed
summary: >
I'm not so into systemd systems and ever avoided systemd whenever possible,
@ -7,10 +7,9 @@ summary: >
slowly and with some memory protection (e.g. this article). Sorry, this
article is not very well formatted...
date: 2022-06-26T22:41:49+02:00
lastmod: 2022-10-26T07:09:35+02:00
lastmod: 2024-09-28T23:48:06+0000
categories: [computerstuff]
tags: [linux,systemd,manjaro]
tags: [linux, systemd, manjaro]
---
I noticed long delays (more than 2 minutes) on reboots and poweroffs recently
@ -20,9 +19,9 @@ on my Manjaro laptop.
View the last boot session log in reverse order
~~~console
```console
$ journalctl -rb -1
~~~
```
and inspect that for abnormalities. Also look at your console when rebooting or
shutting down the system, as that may also present some good starting points.
@ -31,7 +30,7 @@ shutting down the system, as that may also present some good starting points.
I edited `/etc/systemd/system.conf` and changed the following values:
~~~ini
```ini
# file: "/etc/systemd/system.conf"
[Manager]
[...]
@ -40,32 +39,32 @@ ShutdownWatchdogSec=1min
[...]
DefaultTimeoutStopSec=5s
[...]
~~~
```
## Have a quick look at the boot time
~~~console
```console
$ systemd-analyze
~~~
```
and if you are more interested into which module slows down your boot, list them
with:
~~~console
```console
$ systemd-analyze blame
~~~
```
Just out of curiosity I also used:
~~~console
```console
$ sudo systemctl disable NetworkManager-wait-online.service
~~~
```
→ revert that with:
~~~console
```console
$ sudo systemctl enable NetworkManager-wait-online.service
~~~
```
## Sources
@ -81,20 +80,20 @@ Since I made the switch to Fedora 36 I had to re-do those steps.
With default values I got this result for `systemd-analyze`
~~~console
$ systemd-analyze
Startup finished in 7.754s (firmware) + 5.988s (loader) + 1.140s (kernel) + 13.027s (initrd) + 1min 21.493s (userspace) = 1min 49.403s
```console
$ systemd-analyze
Startup finished in 7.754s (firmware) + 5.988s (loader) + 1.140s (kernel) + 13.027s (initrd) + 1min 21.493s (userspace) = 1min 49.403s
graphical.target reached after 1min 21.462s in userspace
~~~
```
Without userspace: <span style="border-bottom: 3px double;">27.9090s</span>
And with the changes above I get this
~~~console
$ systemd-analyze
Startup finished in 10.151s (firmware) + 2.368s (loader) + 1.128s (kernel) + 10.509s (initrd) + 8.480s (userspace) = 32.639s
```console
$ systemd-analyze
Startup finished in 10.151s (firmware) + 2.368s (loader) + 1.128s (kernel) + 10.509s (initrd) + 8.480s (userspace) = 32.639s
graphical.target reached after 8.450s in userspace
~~~
```
Without userspace: <span style="border-bottom: 3px double;">24.1560s</span>

@ -1,15 +1,14 @@
---
title: 'pfSense: restore broken config'
title: "pfSense: restore broken config"
aliases:
- /posts/2022-07-04-pfsense-restore-broken-config
- /posts/2022-07-04-pfsense-restore-broken-config-file
- /posts/2022-07-04-pfsense-restore-broken-config
- /posts/2022-07-04-pfsense-restore-broken-config-file
summary: >
Restoring a configuration file for pfSense when it actually stays in a
boot-loop
date: 2022-07-04T18:14:13+02:00
categories: [computerstuff]
tags: [pfsense,networking]
tags: [pfsense, networking]
---
My pfSense firewall at home got a pretty heavy misconfiguration by myself and
@ -19,72 +18,72 @@ configuration so this recovery process works quite well.
## Follow these steps
1. Boot into **single user mode**
1. Boot into **single user mode**
Connect to your firewall (with a serial console) and choose option
`5) Reboot system` and confirm with the letter `S` (capital s).
Connect to your firewall (with a serial console) and choose option
`5) Reboot system` and confirm with the letter `S` (capital s).
2. **ZFS version only**
1. Remount root slice as read-write:
1. Remount root slice as read-write:
~~~console
$ /sbin/mount -u /
~~~
```console
$ /sbin/mount -u /
```
2. Mount all ZFS filesystems, datasets etc.
2. Mount all ZFS filesystems, datasets etc.
~~~console
$ /sbin/zfs mount -a
~~~
```console
$ /sbin/zfs mount -a
```
3. Working within the mounted filesystems
3. Working within the mounted filesystems
1. Enter **/cf/conf**
1. Enter **/cf/conf**
~~~console
$ cd /cf/conf
~~~
```console
$ cd /cf/conf
```
2. Copy the newest backup file back
2. Copy the newest backup file back
~~~console
$ cp backup/config-1648889613.xml config.xml
~~~
```console
$ cp backup/config-1648889613.xml config.xml
```
3. Clear the config cache
3. Clear the config cache
~~~console
$ rm /tmp/config.cache
~~~
```console
$ rm /tmp/config.cache
```
4. Reload system and it's services
4. Reload system and it's services
~~~console
$ /etc/rc.reload_all start
~~~
```console
$ /etc/rc.reload_all start
```
This may take a while. At this point we are done, we can now remove
the single user mode boot configuration and reboot the firewall.
This may take a while. At this point we are done, we can now remove
the single user mode boot configuration and reboot the firewall.
4. Clear the single user mode boot configuration
4. Clear the single user mode boot configuration
~~~console
$ /sbin/nextboot -D
~~~
```console
$ /sbin/nextboot -D
```
ZFS does not clear the single user mode boot configuration by itself,
that's why we have to delete it after we are done with our work.
ZFS does not clear the single user mode boot configuration by itself,
that's why we have to delete it after we are done with our work.
5. Reboot the system
5. Reboot the system
~~~console
$ /sbin/reboot
~~~
```console
$ /sbin/reboot
```
You could also use exit, but that would only continue booting into
multi user mode without rebooting the system first. I personally think
that we would benefit from a full reboot.
You could also use exit, but that would only continue booting into
multi user mode without rebooting the system first. I personally think
that we would benefit from a full reboot.
Okay, that's it all for now. Please note that I do not use the UFS filesystem
any more, so I won't add this to my little instruction set.

@ -1,11 +1,10 @@
---
title: 'Systemd: flushing the DNS cache'
title: "Systemd: flushing the DNS cache"
aliases: /posts/2022-07-04-systemd-flushing-the-dns-cache
date: 2022-07-04T17:22:48+02:00
lastmod: 2022-12-14T16:05:48+01:00
lastmod: 2024-09-28T23:48:06+0000
categories: [computerstuff]
tags: [linux,systemd,networking,manjaro,dns]
tags: [linux, systemd, networking, manjaro, dns]
---
First off I want to say, that Systemd is quite new to me and I always used the
@ -19,17 +18,17 @@ is not that complicated, but the correct commands should be known.
And this post is all about that:
~~~console
```console
$ sudo systemd-resolve --flush-caches
~~~
```
You could also use `sudo resolvectl flush-caches` if you like or prefer.
Now verify the empty cache:
~~~console
```console
$ systemd-resolve --statistics
~~~
```
I usually do not need to flush my computers DNS caches, but fiddling with my
firewall at home made me use this very often over the last few weeks.

@ -1,19 +1,18 @@
---
title: Raspberry Pi 4 (64 bit) DUAL_HAT Hotspot
aliases:
- /posts/2022-07-10-raspberry-pi-4-64bit-dual-hat-hotspot-without-pi-star
- /posts/2022-07-10-raspberry-pi-4-64-bit-dual_hat-hotspot
- /posts/2022-07-10-raspberry-pi-4-64-bit-dual-hat-hotspot
- /amateur-radio/2022-07-10-raspberry-pi-4-64bit-dual-hat-hotspot-without-pi-star
- /posts/2022-07-10-raspberry-pi-4-64bit-dual-hat-hotspot-without-pi-star
- /posts/2022-07-10-raspberry-pi-4-64-bit-dual_hat-hotspot
- /posts/2022-07-10-raspberry-pi-4-64-bit-dual-hat-hotspot
- /amateur-radio/2022-07-10-raspberry-pi-4-64bit-dual-hat-hotspot-without-pi-star
summary: >
Working **without Pi-Star** on a fresh and lightweight Raspberry Pi OS (64 bit)
installation. One of the longer articles over here...
date: 2022-07-10T14:27:28+02:00
lastmod: 2024-04-14T17:42:37+0000
lastmod: 2024-09-28T23:48:06+0000
categories: [amateur-radio]
tags: [pistar,dmr,ysf,dstar,hotspot,mmdvm]
tags: [pistar, dmr, ysf, dstar, hotspot, mmdvm]
#weight: 1
---
This is my attempt to create a lightweight hotspot for DMR, D-STAR and C4FM on
@ -38,88 +37,89 @@ read-only like on Pi-Star.
1. Download the operating software image from [raspberrypi.com](https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit).
2. Boot the Raspberry Pi and set it up to your needs.
- Localisation
- Keyboard layout
- Install needed packages
- Install your favourite shell (bash, zsh, fish, csh ...)
- Localisation
- Keyboard layout
- Install needed packages
- Install your favourite shell (bash, zsh, fish, csh ...)
3. Disable the serial console (and we will also disable Bluetooth)
- Open `/boot/cmdline.txt` and remove the text `console=serial0,115200`
- Open `/boot/config.txt` and add to the end
~~~ini
dtoverlay=disable-bt
enable_uart=1
~~~
- Open `/boot/cmdline.txt` and remove the text `console=serial0,115200`
- Open `/boot/config.txt` and add to the end
```ini
dtoverlay=disable-bt
enable_uart=1
```
You may also run `raspi-config` and disable the console from there.
Choose _3 Interface Options_ » _I6 Serial Port_ » _No (login shell)_ »
_Yes (serial hardware)_ » _OK_
You may also run `raspi-config` and disable the console from there.
Choose _3 Interface Options_ » _I6 Serial Port_ » _No (login shell)_ »
_Yes (serial hardware)_ » _OK_
Disable the services
Disable the services
~~~console
$ sudo systemctl disable serial-getty@ttyAMA0.service
$ sudo systemctl disable bluetooth.service
~~~
```console
$ sudo systemctl disable serial-getty@ttyAMA0.service
$ sudo systemctl disable bluetooth.service
```
Reboot the Raspberry Pi after those changes!
Reboot the Raspberry Pi after those changes!
~~~console
$ sudo reboot
~~~
```console
$ sudo reboot
```
4. Install the needed packages to compile the software later
~~~console
$ sudo apt update -y
$ sudo apt full-upgrade
$ sudo apt install git build-essential zsh nmap lsof vim cmake gcc-arm-none-eabi stm32flash libusb-1.0-0-dev libasound2-dev libwxgtk3.0-gtk3-dev
~~~
```console
$ sudo apt update -y
$ sudo apt full-upgrade
$ sudo apt install git build-essential zsh nmap lsof vim cmake gcc-arm-none-eabi stm32flash libusb-1.0-0-dev libasound2-dev libwxgtk3.0-gtk3-dev
```
Because **wiringPi** is currently not available from official sources, we
have to install it manually.
Because **wiringPi** is currently not available from official sources, we
have to install it manually.
~~~console
$ git clone git@github.com:WiringPi/WiringPi.git
$ cd wiringPi
$ ./build
~~~
```console
$ git clone git@github.com:WiringPi/WiringPi.git
$ cd wiringPi
$ ./build
```
This should suffice, make sure to read [INSTALL] and follow its instructions.
This should suffice, make sure to read [INSTALL] and follow its instructions.
[INSTALL]: https://github.com/WiringPi/WiringPi/blob/master/INSTALL
[INSTALL]: https://github.com/WiringPi/WiringPi/blob/master/INSTALL
Check _wiringPi_ with `gpio -v` or `gpio readall`:
Check _wiringPi_ with `gpio -v` or `gpio readall`:
~~~console
$ gpio -v
gpio version: 2.70
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
```console
$ gpio -v
gpio version: 2.70
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
Raspberry Pi Details:
Type: Pi 4B, Revision: 01, Memory: 4096MB, Maker: Sony
* Device tree is enabled.
*--> Raspberry Pi 4 Model B Rev 1.1
* This Raspberry Pi supports user-level GPIO access.
~~~
Raspberry Pi Details:
Type: Pi 4B, Revision: 01, Memory: 4096MB, Maker: Sony
* Device tree is enabled.
*--> Raspberry Pi 4 Model B Rev 1.1
* This Raspberry Pi supports user-level GPIO access.
```
5. Create a non-privileged user called _mmdvm_ and add the user to the
group _dialout_
~~~console
$ sudo useradd mmdvm -g mmdvm -s /sbin/nologin
$ sudo usermod mmdvm -G dialout
~~~
```console
$ sudo useradd mmdvm -g mmdvm -s /sbin/nologin
$ sudo usermod mmdvm -G dialout
```
I had some problems with wiringPi, so I finally added the user _mmdvm_ to
the groups _gpio_ and _kmem_. (To let the user _mmdvm_ access `/dev/mem` and
`/dev/gpiomem`.)
I had some problems with wiringPi, so I finally added the user _mmdvm_ to
the groups _gpio_ and _kmem_. (To let the user _mmdvm_ access `/dev/mem` and
`/dev/gpiomem`.)
~~~console
$ sudo usermod -G gpio,kmem -a mmdvm
~~~
```console
$ sudo usermod -G gpio,kmem -a mmdvm
```
## Firmware
@ -135,22 +135,22 @@ But let us move to the fun (work) part.
Clone the git repository. I prefer this in a separate folder like `~/git`.
~~~console
```console
$ git clone --recursive git@github.com:juribeparada/MMDVM_HS.git
~~~
```
### Configuration
Enter the directory and copy an appropriate default configuration for your board.
~~~console
```console
$ cp configs/MMDVM_HS_Dual_Hat-12mhz.h Config.h
~~~
```
Edit the file to your needs. The example below is what I use, be aware of the
version of the installed TCXO of **12**.2880 MHz!
~~~cpp
```cpp
// file: "Config.h"
#if !defined(CONFIG_H)
#define CONFIG_H
@ -171,11 +171,11 @@ version of the installed TCXO of **12**.2880 MHz!
#define ENABLE_UDID
#endif
~~~
```
Those settings are also interesting to play with in the file `ADF7021.h`:
~~~cpp
```cpp
// file: "ADF7021.h"
// Disable TX Raised Cosine filter for 4FSK modulation in ADF7021:
#define ADF7021_DISABLE_RC_4FSK
@ -186,7 +186,7 @@ Those settings are also interesting to play with in the file `ADF7021.h`:
// Configure AFC with positive initial frequency offset:
// #define ADF7021_AFC_POS
~~~
```
I only disabled the Raised Cosine filter for 4FSK modulation because this works
best for me. Enabling AFC did only cause lots of synchronisation errors on DMR.
@ -202,26 +202,26 @@ want better response times on DMR keep on reading.
You may want to consider making the following changes on those two files.
~~~cpp
```cpp
// file: "DMRDMOTX.cpp"
//m_txDelay(240U), // 200ms
m_txDelay(120U), // 200ms
~~~
```
~~~cpp
```cpp
// file: "DMRDMOTX.cpp"
void CDMRDMOTX::setTXDelay(uint8_t delay)
{
//m_txDelay = 600U + uint16_t(delay) * 12U; // 500ms + tx delay
m_txDelay = 60U + uint16_t(delay) * 12U;
}
~~~
```
~~~cpp
```cpp
// file: "DMRTX.cpp"
// const uint32_t STARTUP_COUNT = 20U;
const uint32_t STARTUP_COUNT = 2U;
~~~
```
I'll leave you with this, if you have no idea what you are doing here: you should
probably leave those files just as they are...
@ -236,17 +236,17 @@ as a starting point and try the best values for you and your board._
If no errors were made in `Config.h` this should be as easy as the steps above.
~~~console
```console
$ make clean
$ make -j4
$ sudo make mmdvm_hs_dual_hat
~~~
```
Finish this with a reboot of the Raspberry Pi.
~~~console
```console
$ sudo reboot
~~~
```
{{< alert circle-info >}}
Note, that we used `-j4` as an argument of `make` because the Raspberry Pi 4 has
@ -273,36 +273,36 @@ could be referred as the modem probably.
We run this command also in our separated `git` folder. Just to keep all those
git repositories in one place.
~~~console
```console
$ git clone git@github.com:g4klx/MMDVMHost.git
~~~
```
### Compile the code
Enter the newly created directory and compile it.
~~~console
```console
$ make -j4 -f Makefile.Pi
~~~
```
Install the executables into `/usr/local/bin` by executing
~~~console
```console
$ sudo make install
~~~
```
### Configuration
Copy the default configuration file to `/etc`:
~~~console
```console
$ sudo cp MMDVM.ini /etc/
~~~
```
and edit it to your needs. Most of the options are self-explanatory and I will
only publish some excerpts of my `/etc/MMDVM.ini` file.
~~~ini
```ini
# file: "/etc/MMDVM.ini"
[Log]
# Logging levels, 0=No logging
@ -437,7 +437,7 @@ GatewayAddress=127.0.0.1
GatewayPort=4200
# ModeHang=3
Debug=0
~~~
```
These are the most important parts of the configuration -- make sure that you
double check your file and insert your callsign and DMRID number correctly.
@ -449,10 +449,10 @@ but still valid as they all start with your legit DMRID).
### Create log file directory
~~~console
```console
$ sudo mkdir /var/log/mmdvm
$ sudo chown mmdvm:mmdvm /var/log/mmdvm
~~~
```
### Check for errors
@ -460,9 +460,9 @@ To check for errors, run `MMDVMHost` directly before setting up a system service
Make sure, that you have set `Daemon=0` in your `MMDVM.ini` file for this test.
Start `MMDVMHost` as user _mmdvm_
~~~console
```console
$ sudo -u mmdvm MMDVMHost /etc/MMDVM.ini
~~~
```
Set `Daemon=1` back in your `MMDVM.ini` if you haven't already.
@ -470,14 +470,14 @@ Set `Daemon=1` back in your `MMDVM.ini` if you haven't already.
Copy the unit file for Systemd to the system.
~~~console
```console
$ sudo cp linux/systemd/mmdvmhost.service /etc/systemd/system/
~~~
```
No modification should be needed, but for reference this is the content
of the file:
~~~ini
```ini
# file: "/etc/systemd/system/mmdvmhost.service"
[Unit]
Description=MMDVMHost Radio Service
@ -491,14 +491,14 @@ Restart=on-abnormal
[Install]
WantedBy=multi-user.target
~~~
```
Start and enable this service in one go with
~~~console
```console
$ sudo systemctl daemon-reload
$ sudo systemctl enable --now mmdvmhost.service
~~~
```
## DMRGateway
@ -507,13 +507,13 @@ austrian brandmeister master server (BM2321).
### Get the code
~~~console
```console
$ git clone git@github.com:g4klx/DMRGateway.git
~~~
```
### Configuration
~~~ini
```ini
# file: "/etc/DMRGateway.ini"
[General]
Timeout=10
@ -636,16 +636,16 @@ Port=3769
Enable=0
Address=127.0.0.1
Port=7643
~~~
```
### Test your setup
Change the configuration from above to `Daemon=0` and start DMRGateway in a
terminal with
~~~console
```console
$ sudo -u mmdvm DMRGateway /etc/DMRGateway.ini
~~~
```
Check for errors and move on when everything is fine. You should hear the
announcement coming from the ISPC2 server. In our case (Ref 4000) we should
@ -656,7 +656,7 @@ hear something like "Not connected" or "Repeater not connected".
I copied the unit file from mmdvmhost.service and made my changes. If you don't
want to do that by yourself, use this one to start with.
~~~ini
```ini
# file: "/etc/systemd/system/dmrgateway.service"
[Unit]
Description=DMRGateway Radio Service
@ -670,13 +670,13 @@ Restart=on-abnormal
[Install]
WantedBy=multi-user.target
~~~
```
Change the configuration back `Daemon=1` and enable the service/unit.
~~~console
```console
$ sudo systemctl enable --now dmrgateway.service
~~~
```
## YSFGateway (C4FM, YSF, YCS)
@ -697,48 +697,48 @@ ready-to-use with the _[changes made by Kurt, OE1KBC](http://ycs-wiki.xreflector
I've included his changes in my fork and created a branch called _YCS232_.
~~~console
```console
$ git clone git@github.com:oe7drt/YSFClients.git
$ cd YSFClients
$ git fetch --all
$ git checkout YCS232
~~~
```
You can also add the original sources as an additional remote:
~~~console
```console
$ git remote add upstream git@github.com:g4klx/YSFClients.git
$ git fetch --all
~~~
```
#### Original, most actual codebase
~~~console
```console
$ git clone git@github.com:g4klx/YSFClients.git
~~~
```
### Either choice of source, compile it
Enter the created directory _YSFClients_ and compile the code. Install them
into `/usr/local/bin`
~~~console
```console
$ cd YSFClients
$ make -j4
$ sudo make install
~~~
```
### Configuration
Copy the default configuration file into `/etc`
~~~console
```console
$ sudo cp YSFGateway/YSFGateway.ini /etc/
~~~
```
and edit the file. Here are some excerpts of mine:
~~~ini
```ini
# file: "/etc/YSFGateway.ini"
[General]
Callsign=OE7DRT
@ -806,7 +806,7 @@ YSF2P25Port=42015
Enable=0
Rooms=./FCSRooms.txt
Port=42001
~~~
```
This is **not the full** file, but pretty much of it. Adopt to your needs but
check and double-check that file like the other configuration files.
@ -815,9 +815,9 @@ check and double-check that file like the other configuration files.
Change `Daemon=0` in the configuration file for the test and run
~~~console
```console
$ sudo -u mmdvm YSFGateway /etc/YSFGateway.ini
~~~
```
You should see yourself in the dashboard and also the screen should print
something like `Linked to AT-C4FM-AUSTRIA` and `Link successful to MMDVM`.
@ -831,7 +831,7 @@ Change `Daemon=1` back in your config if not already done.
Create the unit file `/etc/systemd/system/ysfgateway.service`
~~~ini
```ini
# file: "/etc/systemd/system/ysfgateway.service"
[Unit]
Description=YSFGateway Service
@ -845,14 +845,14 @@ Restart=on-abnormal
[Install]
WantedBy=multi-user.target
~~~
```
Start and enable the service.
~~~console
```console
$ sudo systemctl daemon-reload
$ sudo systemctl enable --now ysfgateway.service
~~~
```
## ircDDBGateway (D-STAR)
@ -871,9 +871,9 @@ work is now done from MMDVMHost. Again, correct me if I'm wrong.
In our `~/git` directory (where else?)
~~~console
```console
$ git clone git@github.com:g4klx/ircDDBGateway.git
~~~
```
### Compile the code and install the programs
@ -881,11 +881,11 @@ Open `Makefile` and change the parameters on top of the file to your needs.
I like to use `/var/log/mmdvm`, `/usr/local/bin` and `/usr/local/etc` for
example...
~~~console
```console
$ cd ircDDBGateway
$ make -j4
$ sudo make install
~~~
```
### Configuration
@ -896,7 +896,7 @@ These are the files that I use at the moment, changes may be done if needed.
### /etc/ircddbgateway
~~~ini
```ini
# file: "/etc/ircddbgateway"
gatewayType=1
# gatewayType=0 is the default, but Pi-Star uses 1 here
@ -934,7 +934,7 @@ band1_1=0
band1_2=0
band1_3=0
repeaterCall2=
repeaterBand2=
repeaterBand2=
repeaterType2=0
repeaterAddress2=127.0.0.1
repeaterPort2=20012
@ -954,7 +954,7 @@ band2_1=0
band2_2=0
band2_3=0
repeaterCall3=
repeaterBand3=
repeaterBand3=
repeaterType3=0
repeaterAddress3=127.0.0.1
repeaterPort3=20013
@ -974,7 +974,7 @@ band3_1=0
band3_2=0
band3_3=0
repeaterCall4=
repeaterBand4=
repeaterBand4=
repeaterType4=0
repeaterAddress4=127.0.0.1
repeaterPort4=20014
@ -1017,58 +1017,58 @@ dextraEnabled=1
dextraMaxDongles=5
dplusEnabled=1
dplusMaxDongles=5
dplusLogin=N0SIGN
dplusLogin=N0SIGN
dcsEnabled=1
ccsEnabled=1
ccsHost=CCS704
ccsHost=CCS704
xlxEnabled=0
xlxOverrideLocal=0
xlxHostsFileUrl=http://xlxapi.rlx.lu/api.php?do=GetXLXDMRMaster
starNetBand1=A
starNetCallsign1=
starNetLogoff1=
starNetCallsign1=
starNetLogoff1=
starNetInfo1=
starNetPermanent1=
starNetPermanent1=
starNetUserTimeout1=300
starNetGroupTimeout1=300
starNetCallsignSwitch1=0
starNetTXMsgSwitch1=1
starNetReflector1=
starNetBand2=A
starNetCallsign2=
starNetLogoff2=
starNetCallsign2=
starNetLogoff2=
starNetInfo2=
starNetPermanent2=
starNetPermanent2=
starNetUserTimeout2=300
starNetGroupTimeout2=300
starNetCallsignSwitch2=0
starNetTXMsgSwitch2=1
starNetReflector2=
starNetBand3=A
starNetCallsign3=
starNetLogoff3=
starNetCallsign3=
starNetLogoff3=
starNetInfo3=
starNetPermanent3=
starNetPermanent3=
starNetUserTimeout3=300
starNetGroupTimeout3=300
starNetCallsignSwitch3=0
starNetTXMsgSwitch3=1
starNetReflector3=
starNetBand4=A
starNetCallsign4=
starNetLogoff4=
starNetCallsign4=
starNetLogoff4=
starNetInfo4=
starNetPermanent4=
starNetPermanent4=
starNetUserTimeout4=300
starNetGroupTimeout4=300
starNetCallsignSwitch4=0
starNetTXMsgSwitch4=1
starNetReflector4=
starNetBand5=A
starNetCallsign5=
starNetLogoff5=
starNetCallsign5=
starNetLogoff5=
starNetInfo5=
starNetPermanent5=
starNetPermanent5=
starNetUserTimeout5=300
starNetGroupTimeout5=300
starNetCallsignSwitch5=0
@ -1089,7 +1089,7 @@ mobileGPSAddress=127.0.0.1
mobileGPSPort=7834
windowX=-1
windowY=-1
~~~
```
I wasn't aware what numbers need to be set on _gatewayType_ or _repeaterType_,
but a look into the source code made my decision easier. I'm not sure if that is
@ -1100,18 +1100,18 @@ And so I found some information in `Common/Defs.h`:
{{< highlight cpp "linenos=table,hl_lines=2,linenostart=64">}}
enum HW_TYPE {
HW_HOMEBREW,
HW_ICOM,
HW_DUMMY
HW_HOMEBREW,
HW_ICOM,
HW_DUMMY
};
{{< /highlight >}}
{{< highlight cpp "linenos=table,hl_lines=3,linenostart=130">}}
enum GATEWAY_TYPE {
GT_REPEATER,
GT_HOTSPOT,
GT_DONGLE,
GT_STARNET
GT_REPEATER,
GT_HOTSPOT,
GT_DONGLE,
GT_STARNET
};
{{< /highlight >}}
@ -1134,7 +1134,7 @@ be set to
Adopt those changes in `/etc/timeserver`.
~~~ini
```ini
# file: "/etc/timeserver"
callsign=N0SIGN
sendA=0
@ -1148,13 +1148,13 @@ format=1
interval=2
windowX=0
windowY=0
~~~
```
## First run
~~~console
```console
$ sudo -u mmdvm ircddbgatewayd
~~~
```
Abort with `CTRL + C` when done.
@ -1163,7 +1163,7 @@ Abort with `CTRL + C` when done.
You could copy over the unit files from `./debian`, but the paths in those files
need adjustement, so we create them directly with `sudo vim /etc/systemd/system/...`
~~~ini
```ini
# file: "/etc/systemd/system/ircddbgateway.service"
[Unit]
Description=D-STAR Gateway Daemon
@ -1176,9 +1176,9 @@ Restart=on-abort
[Install]
WantedBy=multi-user.target
~~~
```
~~~ini
```ini
# file: "/etc/systemd/system/timeserver.service"
[Unit]
Description=Timeserver (ircDDBGateway) Daemon
@ -1194,15 +1194,15 @@ Restart=on-abort
[Install]
WantedBy=multi-user.target
~~~
```
Enable the services
~~~console
```console
$ sudo systemctl daemon-reload
$ sudo systemctl enable --now ircddbgateway.service
$ sudo systemctl enable --now timeserver.service
~~~
```
## The hotspot works
@ -1220,11 +1220,11 @@ electro-magnetic stream in the air.
Install some needed packages
~~~console
```console
$ sudo apt install python3-websockets python3-pip
$ sudo pip3 install ansi2html
$ sudo apt install python3-gpiozero python3-psutil python3-serial
~~~
```
Refer to the [installation instructions](https://github.com/dg9vh/MMDVMHost-Websocketboard#installation)
on the repository for more information and the full instructions.
@ -1232,9 +1232,9 @@ on the repository for more information and the full instructions.
Allow the _logtailer_ program access to _MMDVMHost_ with `sudo visudo` and add
this line to the user section of the sudoers file:
~~~plain
```plain
www-data ALL=(ALL) NOPASSWD: /usr/local/bin/MMDVMHost
~~~
```
#### Webserver or built-in solution?
@ -1244,9 +1244,9 @@ I'll stick to a real webserver in this article.
Install nginx with php support with
~~~console
```console
$ sudo apt install nginx php-fpm
~~~
```
##### Configure and limit webserver
@ -1258,7 +1258,7 @@ filenames → we want to disable the dashboard with an empty `index.html` file
that we create in the document root of our webserver
(`sudo touch /var/www/html/index.html`).
~~~nginx
```nginx
# file: "/etc/nginx/sites-enabled/default"
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s;
@ -1296,7 +1296,7 @@ server {
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
# With php-cgi (or other tcp sockets):
@ -1315,15 +1315,15 @@ server {
# Virtual Host configuration for example.com
#
# [...]
~~~
```
### Get the code
~~~console
```console
$ sudo mkdir /opt/MMDVMDash
$ sudo chown pi /opt/MMDVMDash
$ git clone --recursive git@github.com:dg9vh/MMDVMHost-Websocketboard.git /opt/MMDVMDash
~~~
```
We saved the dashboard repository now in `/opt/MMDVMDash`.
@ -1331,7 +1331,7 @@ We saved the dashboard repository now in `/opt/MMDVMDash`.
Open `logtailer.ini`, this should look something like this (shrinked together)
~~~ini
```ini
# file: "/opt/MMDVMDash/logtailer.ini"
[DEFAULT]
Host=0.0.0.0
@ -1357,11 +1357,11 @@ BinaryName1=MMDVMHost
BinaryName2=ircddbgatewayd
BinaryName3=YSFGateway
BinaryName4=timeserverd
~~~
```
Next, open `/opt/MMDVMDash/html/js/config.js` and modify it to your needs
~~~js
```js
// file: "/opt/MMDVMDash/html/js/config.js"
var config_struc_ver = 20210501.1;
var qrz = 1;
@ -1379,24 +1379,20 @@ var services = 1;
var about = 0;
var useClientTimezone = 1;
var showBMTGLink = 0;
var qrz_blacklist = [
"N0CALL",
]
var dashboard_blacklist = [
"MY0CALL",
]
var qrz_blacklist = ["N0CALL"];
var dashboard_blacklist = ["MY0CALL"];
var useDarkTheme = 0;
var customHeadlineText = ``;
var customText = ``;
~~~
```
### Create and enable a system service
~~~console
```console
$ sudo cp systemd/logtailer.service /etc/systemd/system/
$ sudo systemctl daemon-reload
$ sudo systemctl enable --now logtailer.service
~~~
```
## Enjoy the multi-mode hotspot

@ -2,20 +2,19 @@
title: Mounting disk images on linux
aliases: /posts/2022-08-06-mounting-disk-images-on-linux
summary: >
I sometimes create full-disk-images of USB drives or hard drives and in
rare cases I have to look into them. This is how I usually do that.
I sometimes create full-disk-images of USB drives or hard drives and in
rare cases I have to look into them. This is how I usually do that.
date: 2022-08-06T21:02:21+02:00
lastmod: 2023-12-26T13:25:16+0000
lastmod: 2024-09-28T23:48:06+0000
categories: [computerstuff]
tags: [linux,raspberry-pi]
tags: [linux, raspberry-pi]
---
Let's assume you created a disk image with `dd` on a linux computer like
~~~console
```console
$ sudo dd if=/dev/sda of=disk.img bs=4M status=progress conv=fsync
~~~
```
There are several partitions in that image and we want to access the linux
filesystem on it. For reference, I'll bring in some old backup I made from a
@ -24,7 +23,7 @@ with `xz`.
When uncompressed, look at the partition table with _fdisk_:
~~~console
```console
$ fdisk -l disk.img
Festplatte disk.img: 7,4 GiB, 7948206080 Bytes, 15523840 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
@ -36,7 +35,7 @@ Festplattenbezeichner: 0x1b7f4bbb
Gerät Boot Anfang Ende Sektoren Größe Kn Typ
disk.img1 8192 532479 524288 256M c W95 FAT32 (LBA)
disk.img2 532480 15523839 14991360 7,1G 83 Linux
~~~
```
We will refer to this output later again.
@ -48,10 +47,10 @@ first is the FAT32 partition used for UEFI and the second is the root file syste
### Creating and mounting the loop device
~~~console
```console
$ sudo losetup --partscan --find --show disk.img
/dev/loop1
~~~
```
The second line is the output of the program. I used losetup already today, so
this is not _loop0_ but _loop1_. You may get `/dev/loop0` usually.
@ -59,16 +58,16 @@ this is not _loop0_ but _loop1_. You may get `/dev/loop0` usually.
Mount the new virtual loop device to the directory that you like. This is
`~/tmp` in my case.
~~~console
```console
$ sudo mount /dev/loop1p2 tmp
~~~
```
### Removing the loop device
~~~console
```console
$ sudo umount tmp
$ sudo losetup -d /dev/loop1
~~~
```
## Using `fdisk` and `mount`
@ -83,15 +82,15 @@ We calculate the needed offset like: `532480 * 512 = 272629760`
And the resulting command is
~~~console
```console
$ sudo mount -o loop,offset=272629760 disk.img tmp/
~~~
```
A remount is simple as
~~~console
```console
$ sudo umount tmp
~~~
```
## When do you need this stuff

@ -1,15 +1,14 @@
---
title: Using NFS shares on a Raspberry Pi
aliases:
- /posts/2022-08-07-using-nfs-on-a-raspberry-pi
- /posts/2022-08-07-using-nfs-shares-on-a-raspberry-pi
- /posts/2022-08-07-using-nfs-on-a-raspberry-pi
- /posts/2022-08-07-using-nfs-shares-on-a-raspberry-pi
summary: >
A quick and short guide on how to setup an NFS share on a
Raspberry Pi.
date: 2022-08-07T07:19:54+02:00
categories: [computerstuff]
tags: [linux,networking,raspberry-pi]
tags: [linux, networking, raspberry-pi]
---
I use this mainly on my amateur radio hotspot when I work on my sleek dashboard.
@ -21,22 +20,22 @@ the data gets pulled live from the logs -- like it would be on the final system.
## Installation and configuration
~~~console
```console
$ sudo apt update
$ sudo apt install nfs-kernel-server
~~~
```
~~~console
```console
$ sudo vim /etc/exports
~~~
```
We have to export our directories in the file `/etc/exports` on our Raspberry Pi.
~~~plain
```plain
# file: "/etc/exports"
/var/www/html 192.168.1.123(rw,async,all_squash,insecure,no_subtree_check,anonuid=1000,anongid=1000)
/opt/MMDVMDash 192.168.1.123(rw,async,all_squash,insecure,no_subtree_check,anonuid=1000,anongid=1000)
~~~
```
So we allow `192.168.1.123` read- and write-access to the directories above.
@ -47,18 +46,18 @@ as my user on the Raspberry Pi (192.168.1.124).
Also edit `/etc/hosts.allow` to grant access for your network or host.
~~~plain
```plain
# file: "/etc/hosts.allow"
ALL: 192.168.1.123
~~~
```
After we changed the contents of `/etc/exports` we have to run the `exportfs`
command and restart the nfs-server.
~~~console
```console
$ sudo exportfs -ra
$ sudo systemctl restart nfs-server.service
~~~
```
## Accessing the directories
@ -71,16 +70,16 @@ only **root** is allowed to use mount without an entry in `/etc/fstab`.
So we run
~~~console
```console
$ sudo mount 192.168.1.124:/var/www/html tmp/
~~~
```
and if it does not print anything, all is good. On the Raspberry Pi you should
see a new line looking like:
~~~plain
```plain
raspi4 rpc.mountd[30223]: authenticated mount request from 192.168.1.123:894 for /opt/MMDVMDash/html (/opt/MMDVMDash/html)
~~~
```
{{< alert circle-info >}}
**To eliminate the confusion:** I've mounted `/var/www/html` but the log shows
@ -94,22 +93,22 @@ in our `/etc/fstab` file to let the system mount this share when starting.
When unmounting, you should see another line on your Raspberry Pi.
~~~plain
```plain
raspi4 rpc.mountd[30223]: authenticated unmount request from 192.168.1.123:696 for /opt/MMDVMDash/html (/opt/MMDVMDash/html)
~~~
```
## Creating entries in our `/etc/fstab` file
First, let us create a directory on our laptop.
~~~console
```console
$ mkdir -p ~/raspi4/html
~~~
```
~~~plain
```plain
# file: "/etc/fstab"
192.168.1.124:/var/www/html /home/dominic/raspi4/html nfs noauto,users,nodev,async,soft,_netdev,x-systemd.automount,x-systemd.device-timeout=1,x-systemd-idle-timeout=1min,x-systemd.mount-timeout=10,timeo=10,retry=3 0 0
~~~
```
After changing that file, make sure to reload Systemd with
`sudo systemctl daemon-reload`.

@ -22,9 +22,9 @@ used that as my starting point.
First of all, install NetworkManager-l2tp-gnome:
~~~console
```console
$ sudo dnf install NetworkManager-l2tp-gnome
~~~
```
After that, create the new VPN tunnel in `Settings``Network``VPN`.
@ -59,6 +59,6 @@ describes the setup of an OpenVPN client, but it is limited to users with a
static HAMNET IP address.
- Original article found on HAMNET
<http://web.db0sda.ampr.org/projekte/hamnet/anwendungen/vpn-zugang/openvpn-hamnet-dial-in>
<http://web.db0sda.ampr.org/projekte/hamnet/anwendungen/vpn-zugang/openvpn-hamnet-dial-in>
- Also available on normal internet
<https://www.afu.rwth-aachen.de/projekte/hamnet/anwendungen/vpn-zugang/openvpn-hamnet-dial-in>
<https://www.afu.rwth-aachen.de/projekte/hamnet/anwendungen/vpn-zugang/openvpn-hamnet-dial-in>

@ -46,19 +46,19 @@ As second solution, we create a new entry for `.log` files and declare them as
Create a textfile with the ending `.reg` like `openlogs.reg`.
~~~reg
```reg
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.log]
@="txtfile"
"Content Type"="text/plain"
~~~
```
After saving the file, import it into the windows registry like this:
~~~console
```console
$ wine regedit openlogs.reg
~~~
```
This should work instantly.
@ -68,7 +68,7 @@ This should work instantly.
Also create a textfile with the ending `.reg`, but fill it with these contents:
~~~reg
```reg
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.log]
@ -84,13 +84,13 @@ Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\logfile\shell\open\command]
@="\"winebrowser\" \"%1\""
~~~
```
Load this into the registry:
~~~console
```console
$ wine regedit openlogs_native.reg
~~~
```
Also this should work instantly. Opening the logs should open your application
on your linux computer that usually opens `.log` files. That is

@ -36,14 +36,14 @@ Select <kbd>Interfaces</kbd> → <kbd>Assignments</kbd> → <kbd>PPPs</kbd>
Click on the green <kbd>+ Add</kbd> button on the bottom right and create the
new PPP interface with the following specs:
| Settings name | value |
| :--- | :--- |
| Link Type | **L2TP** |
| Link interface(s) | **WAN** |
| Username | **N0CALL** (your callsign usually) |
| Password | (your password) |
| Local IP | (leave empty) |
| Gateway IP or hostname | **vpn.afu.rwth-aachen.de** |
| Settings name | value |
| :--------------------- | :--------------------------------- |
| Link Type | **L2TP** |
| Link interface(s) | **WAN** |
| Username | **N0CALL** (your callsign usually) |
| Password | (your password) |
| Local IP | (leave empty) |
| Gateway IP or hostname | **vpn.afu.rwth-aachen.de** |
<!-- You can change `vpn.afu.rwth-aachen.de` with the IP address of the server if you
like. That may help if you don't have a working DNS setup in your network. At the
@ -64,14 +64,14 @@ green button.
Then click on the new interface and set it up.
| Settings name | value |
| :--- | :--- |
| Description | **VPN_HAMNET** (a meaningful description) |
| IPv4 Configuration Type | **L2TP** |
| IPv6 Configuration Type | **None** (or SLAAC if you use IPv6) |
| Username | **N0CALL** (your callsign usually) |
| Password | (your password) |
| Remote IP address | **vpn.afu.rwth-aachen.de** |
| Settings name | value |
| :---------------------- | :---------------------------------------- |
| Description | **VPN_HAMNET** (a meaningful description) |
| IPv4 Configuration Type | **L2TP** |
| IPv6 Configuration Type | **None** (or SLAAC if you use IPv6) |
| Username | **N0CALL** (your callsign usually) |
| Password | (your password) |
| Remote IP address | **vpn.afu.rwth-aachen.de** |
![screenshot showing interface configuration](04_interface-configuration.png)
@ -102,9 +102,9 @@ configuration.
You see three fields, <kbd>Number</kbd>, <kbd>Type</kbd> and <kbd>Value</kbd>.
| Number | Type | Value |
| :--- | :--- | :--- |
| `121` | `String` | `09:2c:00:c0:a8:0a:01:0a:2c:80:c0:a8:0a:01` |
| Number | Type | Value |
| :----- | :------- | :------------------------------------------ |
| `121` | `String` | `09:2c:00:c0:a8:0a:01:0a:2c:80:c0:a8:0a:01` |
{{< alert >}}
Do not copy this configuration into your pfSense. This setting is somewhat
@ -114,14 +114,14 @@ your own configuration!
Create your own configuration with help of this script:
~~~bash
```bash
#!/bin/bash
check_ip(){
check_ip(){
local n=0 val=1
for i in ${1//./ }; do
for i in ${1//./ }; do
[ $i -lt 0 -o $i -gt 255 ] && val=0
n=$[n+1]
done
done
[ $n -ne 4 ] && val=0
if [ $val -ne 1 ] ; then
echo "Invalid IP: $1" >&2
@ -161,8 +161,8 @@ while [ $# -gt 0 ] ; do
shift 2
[ $# -gt 0 ] && echo -n ":"
done
echo
~~~
echo
```
Source: [mgergi.hu](https://mgergi.hu/en/it-blog/static-route-dhcp-pfsense)
@ -172,12 +172,12 @@ you should read.
Replace `192.168.10.1` with your routers IP address!
~~~console
```console
$ hexroute.sh 44.0.0.0/9 192.168.10.1
09:2c:00:c0:a8:0a:01
$ hexroute.sh 44.128.0.0/10 192.168.10.1
0a:2c:80:c0:a8:0a:01
~~~
```
You see, you get two values. All you have to do is concatenate those two values
and separate them with colons. Insert the new string into the <kbd>Value</kbd>
@ -201,26 +201,25 @@ add the static routes manually.
In `/etc/dhcpcd.conf`, uncomment `classless_static_routes`:
~~~aconf {linenos=inline,linenostart=26,hl_lines=3}
```aconf {linenos=inline,linenostart=26,hl_lines=3}
# A list of options to request from the DHCP server.
#option domain_name_servers, domain_name, domain_search, host_name
#option classless_static_routes
# Respect the network MTU. This is applied to DHCP routes.
option interface_mtu
~~~
```
and let **dhcpcd** add the static routes automatically. Create the file
`/etc/dhcpcd.exit-hook` and add the routes manually with this script:
~~~bash
```bash
/sbin/route add -net 44.0.0.0/9 gw 192.168.10.1
/sbin/route add -net 44.128.0.0/10 gw 192.168.10.1
~~~
```
## More resources
* https://support.aa.net.uk/L2TP_Client:_pfSense
* https://id3145.com/2017/blog/5-pfSense-Add-Static-Routes-to-pfSense-DHCP-Clients.html
* https://www.iana.org/assignments/bootp-dhcp-parameters/
* https://www.rfc-editor.org/rfc/rfc3442.html
- https://support.aa.net.uk/L2TP_Client:_pfSense
- https://id3145.com/2017/blog/5-pfSense-Add-Static-Routes-to-pfSense-DHCP-Clients.html
- https://www.iana.org/assignments/bootp-dhcp-parameters/
- https://www.rfc-editor.org/rfc/rfc3442.html

@ -7,7 +7,7 @@ aliases = [
summary = """Because I use two network interfaces with more subnets/routes on one of them.
But I use the other interface for internet because of speed..."""
date = "2022-11-24T20:15:44+02:00"
lastmod = '2024-04-06T05:40:08+0000'
lastmod = '2024-09-28T23:48:06+0000'
categories = ["computerstuff"]
tags = ["linux","networking", "networkmanager"]
@ -15,13 +15,13 @@ tags = ["linux","networking", "networkmanager"]
Check for connection names.
~~~console
```console
$ nmcli connection
NAME UUID TYPE DEVICE >
MagentaNET 923ab10b-be81-4668-9aab-************ wifi wlx00259ce03>
DreiNET b2bcc61c-19df-41f0-9790-************ wifi wlo1 >
Kabelgebundene Verbindung 1 c75abc26-19eb-3fec-81b1-************ ethernet --
~~~
Kabelgebundene Verbindung 1 c75abc26-19eb-3fec-81b1-************ ethernet --
```
Start editing the affected connection:
@ -42,14 +42,14 @@ nmcli> save
nmcli> quit
{{< /highlight >}}
~~~console
```console
$ sudo systemctl restart NetworkManager
~~~
```
Check routing table with
Check routing table with
~~~console
```console
$ ip route
~~~
```
Source: <https://dev.to/emamirazavi/how-to-set-metric-in-networkmanager-system-4525>

@ -4,7 +4,7 @@ aliases = '/posts/2022-11-26-change-git-submodule-url'
summary = """Another thing I forget constantly when using git:
Changing the remote URL of a submodule"""
date = "2022-12-01T20:08:17+01:00"
lastmod = '2023-11-18T22:01:29+0000'
lastmod = '2024-09-28T23:48:06+0000'
categories = ["computerstuff"]
tags = ["git"]
@ -15,27 +15,27 @@ If the location (URL) of the submodule has changed, then you can simply:
1. Modify the <kbd>.gitmodules</kbd> file in the repo root to use the new URL.
2. Delete the submodule folder in the repo
~~~console
$ rm -rf .git/modules/<submodule>
~~~
```console
$ rm -rf .git/modules/<submodule>
```
3. Delete the submodule folder in the working directory
~~~console
$ rm -rf <submodule>
~~~
```console
$ rm -rf <submodule>
```
4. Run
~~~console
$ git submodule sync
~~~
```console
$ git submodule sync
```
5. And run
~~~console
$ git submodule update
~~~
```console
$ git submodule update
```
More complete info can be found elsewhere:

@ -4,7 +4,7 @@ aliases = '/posts/2023-01-24-my-current-website-setup'
summary = """This is how I install hugo nowadays. Although that routine might
change anytime."""
date = "2023-01-24T22:36:25+0100"
lastmod = '2024-03-31T11:26:26+0000'
lastmod = '2024-09-28T23:48:06+0000'
categories = ["computerstuff"]
tags = ["linux", "server", "gohugo", "selfhost", "website-news"]
@ -28,45 +28,45 @@ This is done on your computer.
- Install Git
Depending on your <abbr title="Operating System">OS</abbr>, this might look
like one of those:
~~~console
$ sudo apt install git
~~~
~~~console
$ sudo pacman -S git
~~~
Depending on your <abbr title="Operating System">OS</abbr>, this might look
like one of those:
```console
$ sudo apt install git
```
```console
$ sudo pacman -S git
```
- Install Go version 1.18 or later
See above for the syntax, this package may be called `golang` on some
distributions (I think Ubuntu/Debian for example).
See above for the syntax, this package may be called `golang` on some
distributions (I think Ubuntu/Debian for example).
- Update your PATH environment variable as described in the Go documentation
Now, that looks like this:
Now, that looks like this:
~~~zsh
if [[ -d $HOME/go ]]; then
export GOPATH="$HOME/go"
path=(
$GOPATH/bin
$path
)
fi
~~~
```zsh
if [[ -d $HOME/go ]]; then
export GOPATH="$HOME/go"
path=(
$GOPATH/bin
$path
)
fi
```
_That is an example taken from my `.zprofile` file._
_That is an example taken from my `.zprofile` file._
### Install hugo
We are still on our computer.
~~~console
```console
$ go install -tags extended github.com/gohugoio/hugo@latest
~~~
```
That installs the latest version of hugo into `$HOME/go/bin`. If your terminal
does not recognize the new binaries: `hash -r` or `rehash` might help...
@ -84,16 +84,16 @@ hugo project before proceeding.
From your project directory, initialise hugo modules:
~~~console
```console
$ hugo mod init github.com/<username>/<repo-name>
~~~
```
Create `config/_default/module.toml` and add the following:
~~~toml
```toml
[[imports]]
path = "github.com/jpanther/congo/v2"
~~~
```
Start your server using `hugo server` and the theme will be downloaded
automatically.
@ -179,10 +179,10 @@ our computer.
Create a file `.cloudflarerc` in your `$HOME` directory that contains those two
variables:
~~~bash
```bash
apikey=*********************************-******
id=********************************
~~~
```
You find them in your [Cloudflare dashboard](https://dash.cloudflare.com/).
Click on <kbd>Websites</kbd> and continue with clicking your domain name.
@ -201,7 +201,7 @@ Click <kbd>Create token</kbd> and copy the resulting token into your
Now we need one last file in our git repository. Create `.git/hooks/pre-push` and
fill it with this:
~~~bash
```bash
#!/bin/bash
if ! [ -f ~/.cloudflarerc ] ; then
@ -226,17 +226,17 @@ else
# exit with 1, so the update does not proceed, so we will know
exit 1
fi
~~~
```
I found the script on
<https://www.supertechcrew.com/clear-cloudflare-cache-when-pushing-from-git-github-pages/>
-- which is also a good read if my explanation won't work for you.
-- which is also a good read if my explanation won't work for you.
Don't forget to make this script executable:
~~~console
```console
$ chmod +x .git/hooks/pre-push
~~~
```
## Publish the website
@ -253,7 +253,7 @@ post-receive hook on the git servers repository.
It's actually the file `website.git/hook/post-receive.d/publish`:
~~~bash
```bash
#!/usr/bin/env bash
# change these to your needs...
@ -274,10 +274,9 @@ rm -rf ${PUBLIC_WWW}/*
/home/git/go/bin/hugo --gc --minify --cleanDestinationDir -s ${WORKING_DIR} -d ${PUBLIC_WWW}
rm -rf ${WORKING_DIR}
trap - exit
~~~
```
If you use Gitea, those repositories are per default in
`/var/lib/gitea/data/gitea-repositories/`...
That is it, basically.

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save