prettier..content

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

@ -1,7 +1,6 @@
--- ---
title: OE7DRT title: OE7DRT
description: my personal website description: my personal website
--- ---
This is my personal space on the internet that I use mainly to keep track on 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 or general [computer](/categories/computerstuff/) related topics with some
flavour of [Linux](/tags/linux/) and [networking](/tags/networking/) (and flavour of [Linux](/tags/linux/) and [networking](/tags/networking/) (and
a bit of [\*BSD](/tags/openbsd/)) a bit of [\*BSD](/tags/openbsd/))

@ -4,8 +4,7 @@ date: 2019-08-21
coverCaption: > coverCaption: >
Längenfeld at the evening. 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). 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 comment: false
showDate: false showDate: false
@ -17,7 +16,6 @@ showAuthor: false
sharingLinks: false sharingLinks: false
feed_exclude: true feed_exclude: true
--- ---
## Who Am I ## Who Am I
@ -56,13 +54,13 @@ I usually participate in the following [Winlink](https://winlink.org/) nets:
### [Winlink Wednesday](https://winlinkwednesday.net/) ### [Winlink Wednesday](https://winlinkwednesday.net/)
> The original Winlink Wednesday is a weekly amateur radio digital > The original Winlink Wednesday is a weekly amateur radio digital
net where check-ins are accomplished by using the Winlink (global > net where check-ins are accomplished by using the Winlink (global
email via amateur radio) system. > email via amateur radio) system.
> The primary purpose of Winlink Wednesday is to encourage the regular > The primary purpose of Winlink Wednesday is to encourage the regular
use of the Winlink system among amateur radio operators by providing an > use of the Winlink system among amateur radio operators by providing an
opportunity to expand their skills with Winlink, and to practice them > opportunity to expand their skills with Winlink, and to practice them
on a regular basis. > on a regular basis.
I think this summarizes the Winlink Wednesday pretty well. 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: To quote the groups.io description:
> This group is for announcements and information concerning the Winlink Net "WLNET-OE". > 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 > 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. > 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. > 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. > To be clear: everyone is welcome, but keep in mind that the primary language will be German.
I try to participate every week. I try to participate every week.
{{< comment >}} {{< comment >}}
### [FFWN](https://w0rmt.net/ffwn/) ### [FFWN](https://w0rmt.net/ffwn/)
Well, I'm not so active on Mastodon (in terms of writing posts) but I 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: Also to quote the website:
> For those operators who are active on federated social media (the “Fediverse”; > For those operators who are active on federated social media (the “Fediverse”;
i.e., Mastodon), there is a weekly Winlink net called the #FediFridayWinlinkNet > 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 > (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. > 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) Find out more by following the hastag [#FFWN](https://mastodon.radio/tags/FFWN)
(example link -- follow it on an instance that you like/prefer). (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 Feel free to encrypt your message with OpenPGP and make sure you got this
fingerprint: fingerprint:
~~~ ```
D49A 3CE2 CCF7 2668 4D98  9A31 BC9D 6AE1 A3BE 169A 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). 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. 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 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. I don't think I will upgrade the host to OpenBSD 7.6.

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

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

@ -8,9 +8,7 @@ date: 2015-09-29
showBreadcrumbs: true showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
This was my photography laptop running Lightroom and Photoshop back then. 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. It is still a good choice: that's why I replaced the battery in 2024.

@ -8,7 +8,6 @@ date: 2011-09-29
showBreadcrumbs: true showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
I think this was my first laptop with hybrid graphics (Nvidia) and if 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 [bf2]: https://en.wikipedia.org/wiki/Battlefield_2
[Loxone]: https://www.loxone.com/ [Loxone]: https://www.loxone.com/

@ -8,7 +8,6 @@ date: 2024-05-25
showBreadcrumbs: true showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
I got this one specifically for my Winlink stuff so I don't have 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 These protections are one big reason that will keep me from buying
an HP laptop again. an HP laptop again.

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

@ -8,7 +8,6 @@ date: 2014-02-10
showBreadcrumbs: true showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
I don't use this anymore. It has a broken screen so it is packed into 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 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 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.) the evenings when I was back in the appartement.)

@ -8,7 +8,6 @@ date: 2023-05-09
showBreadcrumbs: true showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
linux machine... pat, winlink, had openbsd and freebsd on it for a while... 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) 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... but hey, it is really small so I will live with it...

@ -8,7 +8,6 @@ date: 2022-11-11
showBreadcrumbs: true showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
I currently run Fedora Linux on it -- because the touch interface I currently run Fedora Linux on it -- because the touch interface
@ -20,12 +19,11 @@ hate lagging computers :winking_face_with_tongue:
Some data: Some data:
| weight | description | | weight | description |
| :--- | :--- | | :----- | :--------------------------- |
| 541g | tablet alone | | 541g | tablet alone |
| 561g | tablet with pen | | 561g | tablet with pen |
| 786g | tablet with keyboard | | 786g | tablet with keyboard |
| 806g | tablet with keyboard and pen | | 806g | tablet with keyboard and pen |
I would not buy one again -- it is way too slow to be used by normal people. I would not buy one again -- it is way too slow to be used by normal people.

@ -8,7 +8,6 @@ date: 2007-11-01
showBreadcrumbs: true showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
Used for some basic internet tasks like reading websites and PDFs, 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 This one shut itself down very often when it got too hot. It was
really annoying. really annoying.

@ -8,11 +8,10 @@ date: 2021-04-30
showBreadcrumbs: true showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
Bought because of Linux. Tuxedo provides only very old LTS distributions like 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... 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. 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. It is also powerful enough to run a view virtual machines.

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

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

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

@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true # site_exclude: true
draft: true draft: true
--- ---

@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true # site_exclude: true
draft: true draft: true
--- ---

@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true # site_exclude: true
draft: true draft: true
--- ---

@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true # site_exclude: true
draft: true draft: true
--- ---

@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true # site_exclude: true
draft: true draft: true
--- ---

@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true # site_exclude: true
draft: true draft: true
--- ---

@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true # site_exclude: true
draft: true draft: true
--- ---

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

@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true # site_exclude: true
draft: true draft: true
--- ---

@ -13,8 +13,4 @@ showWordCount: false
# site_exclude: true # site_exclude: true
draft: true draft: true
--- ---

@ -12,10 +12,8 @@ showPagination: false
feed_exclude: true feed_exclude: true
weight: 10 weight: 10
--- ---
## (Hot) outdoor food ## (Hot) outdoor food
A hot meal is sometimes needed and I haven't tested much of these -- I bought 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 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 thing to enjoy somewhere outside of civilisation (add some Speck and Brötle to it
and it is absolutely perfect!). and it is absolutely perfect!).

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

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

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

@ -2,21 +2,20 @@
title: "Coax Cables" title: "Coax Cables"
summary: A quick comparison of the three coax types that I use. summary: A quick comparison of the three coax types that I use.
date: 2024-03-02T09:55:35+01:00 date: 2024-03-02T09:55:35+01:00
lastmod: 2024-03-31T11:02:44+0000 lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
## Comparison ## Comparison
| Name | ∅ \[mm\] | Impedance \[Ω\] | Lenght \[m\] | Loss \[dB\] | Loss/100m \[dB\] | Weight/m \[kg\] | | 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 | | 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-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 | | 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) 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). 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 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 should be because I have two cables with 6m with the appropriate connectors
already on the cables. already on the cables.

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

@ -8,7 +8,6 @@ showReadingTime: false
showWordCount: false showWordCount: false
draft: true draft: true
--- ---
## FGM-Fiberglasmast ## FGM-Fiberglasmast

@ -18,7 +18,4 @@ showWordCount: false
# site_exclude: true # site_exclude: true
draft: true draft: true
--- ---

@ -2,12 +2,11 @@
title: NanoVNA-F title: NanoVNA-F
summary: A so-called "fake" NanoVNA. summary: A so-called "fake" NanoVNA.
date: 2020-07-05 date: 2020-07-05
lastmod: 2024-09-22T12:54:18+0000 lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
I bought a "fake" NanoVNA-F in my early days as an amateur radio operator 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 **Update:** I've changed one SMA connector and most problems are gone but
sometimes the curve still flickers and moves a little bit. 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. summary: The compact and trusty NanoVNA-H. Small and efficient.
coverCaption: The NanoVNA-H is very compact and I like it for portable operation. coverCaption: The NanoVNA-H is very compact and I like it for portable operation.
date: 2022-05-16 date: 2022-05-16
lastmod: 2024-09-22T12:54:18+0000 lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
I leave the BNC adapter on because I usually only have BNC connectors I leave the BNC adapter on because I usually only have BNC connectors
on my portable rigs and antennas. on my portable rigs and antennas.
This is the analyzer that is in the same bag as the TX-500. This is the analyzer that is in the same bag as the TX-500.

@ -2,12 +2,11 @@
title: RigExpert Stick 230 title: RigExpert Stick 230
summary: summary:
date: 2022-08-11 date: 2022-08-11
lastmod: 2024-03-31T11:01:16+0000 lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
The RigExpert Stick 230 is nice and practical to use, but it comes with a 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 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. at home and almost never when I'm portable.

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

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

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

@ -18,7 +18,4 @@ showWordCount: false
# site_exclude: true # site_exclude: true
draft: 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. summary: This is my non-plus-ultra antenna. Often used at home and portable.
date: 2023-04-23T08:51:00+02:00 date: 2023-04-23T08:51:00+02:00
coverCaption: Homebrew dipole for the 20m band made from 1.5mm² speaker cable 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 showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
I am very happy with this antenna -- it is very compact when fold together 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/" >}}) I also use [a choke]({{< ref "/equipment/radio-stuff/accessories/homebrew-common-mode-choke/" >}})
with the antenna. with the antenna.

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

@ -4,14 +4,13 @@ aliases:
- /amateur-radio/2020-01-27-aprs-with-hytera-pd785g-v9 - /amateur-radio/2020-01-27-aprs-with-hytera-pd785g-v9
summary: summary:
date: 2019-12-31 date: 2019-12-31
lastmod: 2024-06-09T06:32:40+0000 lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true showBreadcrumbs: true
# showDate: false # showDate: false
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
# showPagination: false # showPagination: false
--- ---
This is the second DMR radio that I bought. I wanted something stable, 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. The Hytera PD785G only supports 70cm.
![output power around 433.500 MHz](power.png) ![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 A really awesome handheld radio -- and it does D-STAR as a
bonus. Check it out -- it's cool! bonus. Check it out -- it's cool!
date: 2021-12-10 date: 2021-12-10
lastmod: 2024-03-17T19:59:25+0000 lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
This is actually my number one handheld radio. I find it very intuitive to use 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. 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 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_ 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 key. Go back to standby screen and press _PTT_. Now additionally press the
_SQL_ button. _SQL_ button.
### SQL ### SQL
@ -113,8 +112,8 @@ receiver information, time and date as well as some basic info about the picture
## Power output ## Power output
| Power output diagrams | | | Power output diagrams | |
| --- | --- | | ---------------------------------------- | -------------------------------------------- |
| ![output power on 2m band](power-2m.png) | ![output power on 70cm band](power-70cm.png) | | ![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: 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: The measured output power around 144.500 MHz and 433.500 MHz are:
| Power setting | Output power 2m | Output power 70cm | | Power setting | Output power 2m | Output power 70cm |
| :---- | :----- | :----- | | :------------ | :-------------- | :---------------- |
| S-Low | 107 mW | 99 mW | | S-Low | 107 mW | 99 mW |
| Low1 | 539 mW | 443 mW | | Low1 | 539 mW | 443 mW |
| Low2 | 1.09 W | 783 mW | | Low2 | 1.09 W | 783 mW |
| Mid | 2.45 W | 2.21 W | | Mid | 2.45 W | 2.21 W |
| High | 6.26 W | 4.94 W | | High | 6.26 W | 4.94 W |
## Harmonics ## 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>. ![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.") 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 Consider the OpenGD77 firmware and you're all set with a very
user friendly and customizable handheld radio. user friendly and customizable handheld radio.
aliases: aliases:
- /equipment/handhelds/radioddity-gd77/ - /equipment/handhelds/radioddity-gd77/
date: 2020-10-17 date: 2020-10-17
lastmod: 2024-09-25T03:37:50+0000 lastmod: 2024-09-28T23:48:06+0000
#categories: #categories:
#- amateur-radio #- amateur-radio
showBreadcrumbs: true showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: 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 [1]: https://www.radioddity.com/products/radioddity-gd-77-dmr-two-way-radio
[2]: https://www.opengd77.com/downloads/GD77/Latest/ [2]: https://www.opengd77.com/downloads/GD77/Latest/
@ -27,7 +26,7 @@ radio usage.
## udev-Rules for Linux ## udev-Rules for Linux
~~~rb ```rb
# USB rules for GD-77 # USB rules for GD-77
# Place this in /etc/udev/rules.d/ to let all users talk to the radios by USB. # 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 # OpenGD77
KERNEL=="ttyACM[0-9]*", SUBSYSTEM=="tty", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="0094", MODE="0666", GROUP="dialout", SYMLINK+="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: If you want do reload udev with the new rules, run:
~~~console ```console
$ udevadm control --reload-rules && udevadm trigger $ udevadm control --reload-rules && udevadm trigger
~~~ ```
## Original boot tone melody ## Original boot tone melody
The originally used boot-up melody. I'm not sure if it changed already, but this 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. 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 38,6,0,2,38,2,0,2,38,6,0,2,38,2,0,2,38,6
~~~ ```
## My boot-up picture ## 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) | | ![OE7DRT Boot-up picture white](rendeer512_white.png) | ![OE7DRT Boot-up picture black (inverted)](rendeer512_black.png) |
## Importing DMR-IDs ## 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) ![2m band output power](power-2m.png)
| Power setting | Out power (device 1) | Out power (device 2) | | Power setting | Out power (device 1) | Out power (device 2) |
| :--- | :--- | :----- | | :------------ | :------------------- | :------------------- |
| +W- | 7.50 W | 7.60 W | | +W- | 7.50 W | 7.60 W |
| 5W | 5.31 W | 5.40 W | | 5W | 5.31 W | 5.40 W |
| 50mW | 376 mW | 152 mW | | 50mW | 376 mW | 152 mW |
| 1W | 1.30 W | 1.35 W | | 1W | 1.30 W | 1.35 W |
| 2W | 2.37 W | 2.14 W | | 2W | 2.37 W | 2.14 W |
| 3W | 2.90 W | 2.70 W | | 3W | 2.90 W | 2.70 W |
| 4W | 3.76 W | 3.40 W | | 4W | 3.76 W | 3.40 W |
I have two devices and they differ on some settings (50mW setting for example). 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. I have only measured one device as devices may differ largely.
| Power setting | Output power| | Power setting | Output power |
| :---- | :----- | | :------------ | :----------- |
| 50mW | 917 mW | | 50mW | 917 mW |
| 250mW | 925 mW | | 250mW | 925 mW |
| 500mW | 1.86 W | | 500mW | 1.86 W |
| 750mW | 1.49 W | | 750mW | 1.49 W |
| 1W | 1.67 W | | 1W | 1.67 W |
| 2W | 2.35 W | | 2W | 2.35 W |
| 3W | 2.96 W | | 3W | 2.96 W |
| 4W | 4.22 W | | 4W | 4.22 W |
| 5W | 7.50 W | | 5W | 7.50 W |
| +W- | 8.41 W | | +W- | 8.41 W |

@ -2,12 +2,11 @@
title: Wouxun UV9D Mate title: Wouxun UV9D Mate
summary: This is the radio of choice when I do some Winlinking (HI) via packet radio or VARA FM. summary: This is the radio of choice when I do some Winlinking (HI) via packet radio or VARA FM.
date: 2021-03-15 date: 2021-03-15
lastmod: 2024-05-19T20:53:51+0000 lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
I can not remember when I bought this radio because I lost my documents somwhere 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 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 works well with the Digirig when using packet radio and VARA-FM; and with the Mobilinkd
TNC4. TNC4.

@ -1,12 +1,11 @@
--- ---
title: Yaesu FT-3D title: Yaesu FT-3D
date: 2020-05-24 date: 2020-05-24
lastmod: 2024-03-17T19:59:25+0000 lastmod: 2024-09-28T23:48:06+0000
showBreadcrumbs: true showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
C4FM is one of the easiest digital operating mode to set up. Enter your 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 The FT-3D supports 4 power levels: LOW1 (0.3W), LOW2 (1W), LOW3 (2.5W) and
HIGH (5W). 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") | | ![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 | | Power setting | Output 2m | Output 70cm |
| :--- | :----- | :----- | | :------------ | :-------- | :---------- |
| LOW1 | 350 mW | 340 mW | | LOW1 | 350 mW | 340 mW |
| LOW2 | 1.00 W | 972 mW | | LOW2 | 1.00 W | 972 mW |
| LOW3 | 2.80 W | 2.44 W | | LOW3 | 2.80 W | 2.44 W |
| HIGH | 5.66 W | 4.87 W | | HIGH | 5.66 W | 4.87 W |
## Band scope ## 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 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 function on newer radios. No need to pull out your smartphone to get a recording
on tape. on tape.

@ -2,12 +2,11 @@
title: Yaesu FT-4XE title: Yaesu FT-4XE
date: 2019-11-23 date: 2019-11-23
coverCaption: My FT-4X with a Diamond SRJ77 antenna. 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 showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
This is the first handheld radio (and the first radio at all) that I got. 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. have a radio with you.
I'm not using it that much. Mostly when I want to listen to a FM radio station. I'm not using it that much. Mostly when I want to listen to a FM radio station.

@ -19,10 +19,8 @@ showWordCount: false
# site_exclude: true # site_exclude: true
draft: true draft: true
--- ---
My default logging “application”. It is used online. My default logging “application”. It is used online.
link: https://www.magicbug.co.uk/cloudlog/ link: https://www.magicbug.co.uk/cloudlog/

@ -19,7 +19,6 @@ showWordCount: false
# site_exclude: true # site_exclude: true
draft: true draft: true
--- ---
I used this for a while, is very bloated and with it's own database 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. fixing things to get it working again. mostly the db is causing trouble.
link: https://www.cqrlog.com/ link: https://www.cqrlog.com/

@ -19,7 +19,6 @@ showWordCount: false
# site_exclude: true # site_exclude: true
draft: true draft: true
--- ---
I've tested this in it's early stage and I don't know about it's actual 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. Foldyna, OK1MLG.
link: https://github.com/foldynl/QLog link: https://github.com/foldynl/QLog

@ -21,7 +21,6 @@ showWordCount: false
# site_exclude: true # site_exclude: true
draft: true draft: true
--- ---
I already wrote about [my short experience with RadioMail][1] in an article back in 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" >}} [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. If you like minimal equipment on your hikes or activations: this might be it for you.

@ -19,7 +19,6 @@ showWordCount: false
# site_exclude: true # site_exclude: true
draft: true draft: true
--- ---
For MacOS only. This is one of the best logging applications for MacOS that 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. There is also a version for the iPhone.
link: https://dl2rum.de/rumsoft/RUMlog2Go.html link: https://dl2rum.de/rumsoft/RUMlog2Go.html

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

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

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

@ -1,11 +1,11 @@
--- ---
title: Yaesu FT-891 title: Yaesu FT-891
aliases: aliases:
- /equipment/transceiver/yaesu-fd891/ - /equipment/transceiver/yaesu-fd891/
- /equipment/transceiver/yaesu-ft891/ - /equipment/transceiver/yaesu-ft891/
date: 2020-06-21T14:20:47+01:00 date: 2020-06-21T14:20:47+01:00
coverCaption: Field setup for Winlink coverCaption: Field setup for Winlink
lastmod: 2024-04-13T19:06:32+0000 lastmod: 2024-09-28T23:48:06+0000
#categories: #categories:
#- amateur-radio #- amateur-radio
#tags: #tags:
@ -13,7 +13,6 @@ lastmod: 2024-04-13T19:06:32+0000
showBreadcrumbs: true showBreadcrumbs: true
showReadingTime: false showReadingTime: false
showWordCount: false showWordCount: false
--- ---
I got this because the IC-7300 was too chunky to be effectively I got this because the IC-7300 was too chunky to be effectively
@ -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 -- 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 the current draw is very high compared to a QRP radio and an amplifier
(Tx-500 with PA-500 for example). (Tx-500 with PA-500 for example).

@ -1,7 +1,7 @@
--- ---
title: License title: License
date: 2022-12-04T18:15:03+01:00 date: 2022-12-04T18:15:03+01:00
lastmod: 2023-11-27T16:42:24+0000 lastmod: 2024-09-28T23:48:06+0000
comment: false comment: false
@ -15,7 +15,6 @@ sharingLinks: false
feed_exclude: true feed_exclude: true
#site_exclude: true #site_exclude: true
--- ---
The content on this site is licensed under the 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 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 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. computer stuff: there are some nice articles on his website.

@ -12,7 +12,6 @@ showWordCount: false
showPagination: false showPagination: false
feed_exclude: true feed_exclude: true
--- ---
## Digital modes performance comparison (Winlink) ## 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. A small collection of manuals that I saved.
<https://celeste.oe7drt.com/pub/hamradio/manuals/> <https://celeste.oe7drt.com/pub/hamradio/manuals/>

@ -11,10 +11,8 @@ showWordCount: false
showBreadcrumbs: true showBreadcrumbs: true
feed_exclude: true feed_exclude: true
#showPagination: false #showPagination: false
#showAuthor: false #showAuthor: false
--- ---
These are notes that I will not or can not elaborate any further. Use them These are notes that I will not or can not elaborate any further. Use them

@ -1,7 +1,7 @@
--- ---
title: Archlinux title: Archlinux
date: 2023-11-29T20:33:48+0100 date: 2023-11-29T20:33:48+0100
lastmod: 2024-09-14T09:53:25+0000 lastmod: 2024-09-28T23:48:06+0000
tags: tags:
- archlinux - archlinux
- systemd - systemd
@ -15,7 +15,6 @@ showBreadcrumbs: true
feed_exclude: true feed_exclude: true
# site_exclude: true # site_exclude: true
--- ---
Arch Linux 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 If you need to unlock your account immediately: run this command (if you have another user
that can login on the box): that can login on the box):
~~~console ```console
$ sudo faillock --user dominic --reset $ sudo faillock --user dominic --reset
~~~ ```
Calling `faillock` without arguments show an overview. 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: Create `/usr/lib/systemd/network/80-ether.link` with this content:
~~~systemd ```systemd
[Match] [Match]
Type=ether Type=ether
[Link] [Link]
NamePolicy=keep kernel NamePolicy=keep kernel
~~~ ```
Reboot. 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: Create `/usr/lib/systemd/network/80-wlan.link` with this content:
~~~systemd ```systemd
[Match] [Match]
Type=wlan Type=wlan
[Link] [Link]
NamePolicy=keep kernel NamePolicy=keep kernel
~~~ ```
Reboot. Reboot.
@ -80,21 +79,21 @@ Reboot.
### Using **iwctl** ### Using **iwctl**
~~~console ```console
$ iwctl device list $ iwctl device list
$ iwctl station wlan0 scan $ iwctl station wlan0 scan
$ iwctl station wlan0 get-networks $ iwctl station wlan0 get-networks
$ iwctl station wlan0 connect {ssid} $ iwctl station wlan0 connect {ssid}
~~~ ```
### Using **nmcli** (NetworkManager) ### Using **nmcli** (NetworkManager)
~~~console ```console
$ nmcli device wifi list $ nmcli device wifi list
$ nmcli device wifi rescan $ nmcli device wifi rescan
$ nmcli device wifi connect {ssid} --ask $ nmcli device wifi connect {ssid} --ask
$ nmcli device wifi show-password $ nmcli device wifi show-password
~~~ ```
Last command shows the connected SSID and a QR-code within the terminal. 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`: `wifi_backend.conf`:
~~~ini ```ini
[device] [device]
wifi.backend=iwd wifi.backend=iwd
~~~ ```
## Using `dhcpcd` as DHCP client ## Using `dhcpcd` as DHCP client
`dhcp-client.conf`: `dhcp-client.conf`:
~~~ini ```ini
[main] [main]
dhcp=dhcpcd dhcp=dhcpcd
~~~ ```
## Using the CPU with hashcat ## Using the CPU with hashcat
~~~console ```console
$ hashcat -I $ hashcat -I
hashcat (v6.2.6) starting in backend information mode hashcat (v6.2.6) starting in backend information mode
@ -147,7 +146,7 @@ OpenCL Platform ID #1
Local.Memory...: 64 KB Local.Memory...: 64 KB
OpenCL.Version.: OpenCL C 1.2 OpenCL.Version.: OpenCL C 1.2
Driver.Version.: 24.31.30508 Driver.Version.: 24.31.30508
~~~ ```
This is what I've seen on `hashcat -I` for a long time now but I never dig myself 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 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 After a few minutes doing some trial & error I finally got the CPU listed after
installing _pocl_. installing _pocl_.
~~~console ```console
$ paru -S pocl $ paru -S pocl
~~~ ```
Or, on my gaming laptop running a cheap clone of Ubuntu: Or, on my gaming laptop running a cheap clone of Ubuntu:
~~~console ```console
$ sudo apt install pocl-opencl-icd $ sudo apt install pocl-opencl-icd
~~~ ```
Now my `hashcat -I` looks like this: Now my `hashcat -I` looks like this:
~~~console ```console
$ hashcat -I took 6s $ hashcat -I took 6s
hashcat (v6.2.6) starting in backend information mode hashcat (v6.2.6) starting in backend information mode
@ -212,7 +211,7 @@ OpenCL Platform ID #2
Local.Memory...: 256 KB Local.Memory...: 256 KB
OpenCL.Version.: OpenCL C 1.2 PoCL OpenCL.Version.: OpenCL C 1.2 PoCL
Driver.Version.: 6.0 Driver.Version.: 6.0
~~~ ```
## Paru / Pacman ## Paru / Pacman
@ -225,127 +224,127 @@ I had to copy this to my notes archive here...
#### install #### install
~~~console ```console
$ paru -S <package> $ paru -S <package>
~~~ ```
#### Edit PKGBUILD and skip checksum check #### Edit PKGBUILD and skip checksum check
~~~console ```console
$ paru -S gnucash-xbt --fm helix --mflags "--skipchecksums" $ paru -S gnucash-xbt --fm helix --mflags "--skipchecksums"
~~~ ```
#### uninstall (-n: no backup files; -s: remove dependencies) #### uninstall (-n: no backup files; -s: remove dependencies)
~~~console ```console
$ paru -Rns <package> $ paru -Rns <package>
~~~ ```
#### system update #### system update
~~~console ```console
$ paru -Syu $ paru -Syu
~~~ ```
### Mirrors ### Mirrors
#### select fastest #### select fastest
~~~console ```console
$ sudo pacman-mirrors --fasttrack $ sudo pacman-mirrors --fasttrack
~~~ ```
#### select by country #### select by country
~~~console ```console
$ sudo pacman-mirrors --country Germany,France,Austria $ sudo pacman-mirrors --country Germany,France,Austria
~~~ ```
### Search repo ### Search repo
#### search package #### search package
~~~console ```console
$ paru -Ss <package> $ paru -Ss <package>
~~~ ```
#### package details #### package details
~~~console ```console
$ paru -Si <package> $ paru -Si <package>
~~~ ```
#### list files #### list files
~~~console ```console
$ paru -Fl <package> $ paru -Fl <package>
~~~ ```
#### find package for file #### find package for file
~~~console ```console
$ pkgfile <filename> $ pkgfile <filename>
~~~ ```
#### search command #### search command
~~~console ```console
$ paru -F glxinfo $ paru -F glxinfo
~~~ ```
### Installed packages ### Installed packages
#### search package #### search package
~~~console ```console
$ paru -Qs <package> $ paru -Qs <package>
~~~ ```
#### package details #### package details
~~~console ```console
$ paru -Qii <package> $ paru -Qii <package>
~~~ ```
#### list files #### list files
~~~console ```console
$ paru -Ql <package> $ paru -Ql <package>
~~~ ```
#### orphans #### orphans
~~~console ```console
$ paru -Qdt $ paru -Qdt
~~~ ```
#### manually installed (list all aur) #### manually installed (list all aur)
~~~console ```console
$ pacman -Qm $ pacman -Qm
~~~ ```
### Clean-up ### Clean-up
#### clear cache #### clear cache
~~~console ```console
$ paru -Sc $ paru -Sc
~~~ ```
### Official repo vs. AUR ### Official repo vs. AUR
#### repo #### repo
~~~console ```console
$ paru -[...] --repo $ paru -[...] --repo
~~~ ```
#### aur #### aur
~~~console ```console
$ paru -[...] --aur $ paru -[...] --aur
~~~ ```
<!-- paru end --> <!-- 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 I understand from the source article on
[serverfault.com](https://serverfault.com/a/823336). [serverfault.com](https://serverfault.com/a/823336).
~~~console ```console
$ sudo ipset -N badips iphash $ sudo ipset -N badips iphash
$ while read ip; do sudo ipset -A badips "$ip"; done < blocked.txt $ 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 -t raw -I PREROUTING -m set --match-set badips src,dst -j DROP
$ sudo iptables-save -f /etc/iptables/iptables.rules $ sudo iptables-save -f /etc/iptables/iptables.rules
~~~ ```
Enable iptables in case it is not running yet. Enable iptables in case it is not running yet.
~~~console ```console
$ sudo systemctl enable --now iptables.service $ sudo systemctl enable --now iptables.service
~~~ ```
Also make the ipset configuration persistent: Also make the ipset configuration persistent:
~~~console ```console
$ sudo ipset save -file /etc/ipset.conf $ sudo ipset save -file /etc/ipset.conf
$ sudo systemctl enable ipset.service $ sudo systemctl enable ipset.service
~~~ ```
Reboot to test its persistency. Reboot to test its persistency.
@ -382,10 +381,10 @@ Reboot to test its persistency.
`99-unmanaged-devices.conf`: `99-unmanaged-devices.conf`:
~~~ini ```ini
[keyfile] [keyfile]
unmanaged-devices=mac:xx:xx:xx:xx:xx:xx unmanaged-devices=mac:xx:xx:xx:xx:xx:xx
~~~ ```
## Prefer local DNS instead of systemd-resolved defaults ## 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: I create my wine prefixes usually like this:
~~~console ```console
$ export WINEPREFIX=/home/dominic/.wine-winlink $ export WINEPREFIX=/home/dominic/.wine-winlink
$ export WINEARCH=win32 $ export WINEARCH=win32
$ wine wineboot $ wine wineboot
~~~ ```
## Installing multiple ruby versions ## 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 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. finally managed to install ruby version 2.7.1 and 3.0.0 in my home directory.
~~~console ```console
$ rvm pkg install openssl $ rvm pkg install openssl
$ rvm install "ruby-3.0.0" --with-openssl-dir=$HOME/.rvm/usr $ rvm install "ruby-3.0.0" --with-openssl-dir=$HOME/.rvm/usr
$ rvm install "ruby-2.7.1" --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 Later in the desired directory, I re-installed the gems because with ruby 2.7.1
I got another "Directory not found" error. I got another "Directory not found" error.
I had to do this because I used ruby 2.7.1 on one website. I had to do this because I used ruby 2.7.1 on one website.
~~~console ```console
$ bundle install --force $ bundle install --force
~~~ ```
## Bigger font for systemd-boot ## Bigger font for systemd-boot
Edit `/boot/loader/loader.conf`: Edit `/boot/loader/loader.conf`:
~~~ ```
console-mode 0 console-mode 0
~~~ ```
Possible settings are: Possible settings are:
| Value | Description | | Value | Description |
| :--- | :--- | | :---- | :------------------------------------------------------------------ |
| 0 | Standard UEFI 80x25 mode | | 0 | Standard UEFI 80x25 mode |
| 1 | 80x50 mode, not supported by all devices | | 1 | 80x50 mode, not supported by all devices |
| 2 | the first non-standard mode provided by the device firmware, if any | | 2 | the first non-standard mode provided by the device firmware, if any |
| auto | Pick a suitable mode automatically using heuristics | | auto | Pick a suitable mode automatically using heuristics |
| max | Pick the highest-numbered available mode | | max | Pick the highest-numbered available mode |
| keep | Keep the mode selected by firmware (the default) | | keep | Keep the mode selected by firmware (the default) |
More details can be found in {{< man loader.conf 5 >}}. More details can be found in {{< man loader.conf 5 >}}.
## Manual sections ## Manual sections
| Section | Description | | 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 | | 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. | | 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. | | 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)**. | | 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. | | 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. | | 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. | | 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 ## Encoding videos with ffmpeg
This is not an Arch way of encoding videos, but since I do this on my... 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 1 -f null /dev/null
$ ffmpeg -i <input> -c:v libx264 -b:v 1M -maxrate 1M -bufsize 2M -pass 2 <output> $ ffmpeg -i <input> -c:v libx264 -b:v 1M -maxrate 1M -bufsize 2M -pass 2 <output>
~~~ ```

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

@ -1,7 +1,7 @@
--- ---
title: OpenBSD title: OpenBSD
date: 2023-11-29T20:33:48+0100 date: 2023-11-29T20:33:48+0100
lastmod: 2024-05-19T20:54:02+0000 lastmod: 2024-09-28T23:48:06+0000
tags: tags:
- openbsd - openbsd
- python - python
@ -23,7 +23,6 @@ showBreadcrumbs: true
feed_exclude: true feed_exclude: true
# site_exclude: true # site_exclude: true
--- ---
These are random notes -- more or less about OpenBSD. Some may 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 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. certs could fix that because I'd only have one cert for all the domains.
~~~console ```console
$ doas pkg_add certbot $ doas pkg_add certbot
~~~ ```
Run and follow instructions: Run and follow instructions:
~~~console ```console
$ doas certbot certonly --manual --preferred-challenges dns \ $ doas certbot certonly --manual --preferred-challenges dns \
--server https://acme-v02.api.letsencrypt.org/directory \ --server https://acme-v02.api.letsencrypt.org/directory \
--manual-public-ip-logging-ok -d '*.oe7drt.com' -d oe7drt.com --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 ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le * Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
~~~ ```
Also adding my .net domain to the certs: Also adding my .net domain to the certs:
~~~console ```console
$ doas certbot certonly --manual --manual-public-ip-logging-ok \ $ doas certbot certonly --manual --manual-public-ip-logging-ok \
--preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory \ --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory \
-d "*.oe7drt.com" -d "*.oe7drt.net" -d oe7drt.com -d oe7drt.net -d "*.oe7drt.com" -d "*.oe7drt.net" -d oe7drt.com -d oe7drt.net
~~~ ```
Some changes to the apache2 configuration were made: Some changes to the apache2 configuration were made:
~~~apache ```apache
<MDomain oe7drt.com oe7drt.net> <MDomain oe7drt.com oe7drt.net>
MDMember *.oe7drt.com MDMember *.oe7drt.com
MDMember *.oe7drt.net MDMember *.oe7drt.net
@ -91,7 +90,7 @@ MDChallengeDns01 /etc/apache2/dns/dns-challenge.phar --
MDCertificateAgreement accepted MDCertificateAgreement accepted
MDContactEmail {email_redacted} MDContactEmail {email_redacted}
MDCAChallenges dns-01 MDCAChallenges dns-01
~~~ ```
It seems Apache likes this: It seems Apache likes this:
@ -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 actual certificate got renewed with the command from above (including
the .net domain). The output of that command clearly states: the .net domain). The output of that command clearly states:
~~~console ```console
NEXT STEPS: NEXT STEPS:
- This certificate will not be renewed automatically. Autorenewal of - This certificate will not be renewed automatically. Autorenewal of
--manual certificates requires the use of an authentication hook script --manual certificates requires the use of an authentication hook script
(--manual-auth-hook) but one was not provided. To renew this certificate, (--manual-auth-hook) but one was not provided. To renew this certificate,
repeat this same certbot command before the certificate's expiry date. repeat this same certbot command before the certificate's expiry date.
~~~ ```
I will execute the 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: the next time to enhance my experience :wink:
@ -138,11 +137,11 @@ the next time to enhance my experience :wink:
## Get some filesystem information ## Get some filesystem information
~~~console ```console
$ dumpfs /dev/rsd1a $ dumpfs /dev/rsd1a
magic 19540119 (FFS2) time Thu Nov 16 21:14:34 2023 magic 19540119 (FFS2) time Thu Nov 16 21:14:34 2023
[...] (snip; lots of output...) [...] (snip; lots of output...)
~~~ ```
This can be helpful if you want to know, which filesystem you actually This can be helpful if you want to know, which filesystem you actually
use on your OpenBSD box. use on your OpenBSD box.
@ -160,15 +159,15 @@ microSD cards.
Delete the first bytes on the stick: Delete the first bytes on the stick:
~~~console ```console
$ doas dd if=/dev/zero bs=1m count=1 of=/dev/rsd2c $ doas dd if=/dev/zero bs=1m count=1 of=/dev/rsd2c
~~~ ```
Create the needed partition: Create the needed partition:
~~~console ```console
$ echo -n 'edit 0\n0c\n\n2048\n*\nq\n' | doas fdisk -e sd2 $ 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): 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: This results in a partition table like this:
~~~console ```console
$ fdisk sd2 $ fdisk sd2
Disk: sd2 geometry: 966/255/63 [15523840 Sectors] Disk: sd2 geometry: 966/255/63 [15523840 Sectors]
Offset: 0 Signature: 0xAA55 Offset: 0 Signature: 0xAA55
@ -192,11 +191,11 @@ Offset: 0 Signature: 0xAA55
1: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused 1: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused
2: 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 3: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused
~~~ ```
whereas a `fdisk -iy sd2` creates a table like this: whereas a `fdisk -iy sd2` creates a table like this:
~~~console ```console
$ fdisk sd2 $ fdisk sd2
Disk: sd2 geometry: 966/255/63 [15523840 Sectors] Disk: sd2 geometry: 966/255/63 [15523840 Sectors]
Offset: 0 Signature: 0xAA55 Offset: 0 Signature: 0xAA55
@ -207,20 +206,20 @@ Offset: 0 Signature: 0xAA55
1: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused 1: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused
2: 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 *3: A6 0 1 2 - 966 80 10 [ 64: 15523776 ] OpenBSD
~~~ ```
Don't forget to create the file system: Don't forget to create the file system:
~~~console ```console
$ doas newfs_msdos -F 32 -L 8GB_Stick sd2i $ doas newfs_msdos -F 32 -L 8GB_Stick sd2i
~~~ ```
## Mounting disk images ## Mounting disk images
~~~console ```console
$ doas vnconfig /dev/vnd0c /path/to/imagefile.img $ doas vnconfig /dev/vnd0c /path/to/imagefile.img
$ doas mount_msdos /dev/vnd0i ~/mnt/disk $ doas mount_msdos /dev/vnd0i ~/mnt/disk
~~~ ```
## Packages / Ports ## Packages / Ports
@ -230,9 +229,9 @@ Updating dependencies before installing (switch `-U`) does help sometimes...
> Can't install [package] because of libraries > Can't install [package] because of libraries
~~~console ```console
$ doas pkg_add -uiU $ doas pkg_add -uiU
~~~ ```
Should fix that. Should fix that.
@ -242,9 +241,9 @@ Should fix that.
Install python modules with pip. Install python modules with pip.
~~~console ```console
$ python3 -m pip install --user --upgrade ${example_module} $ python3 -m pip install --user --upgrade ${example_module}
~~~ ```
## Rust ## Rust
@ -259,9 +258,9 @@ that disables the optional features (battery).
So the final installation of Starship looks like: So the final installation of Starship looks like:
~~~console ```console
$ cargo install starship --locked --no-default-features $ cargo install starship --locked --no-default-features
~~~ ```
The compilation took about 9½ minutes. 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 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. permissions intact. I may setup a cronjob for this maybe.
~~~console ```console
$ cd /var/www $ cd /var/www
$ doas rsync -avhzrp /etc/ssl/ etc/ssl $ doas rsync -avhzrp /etc/ssl/ etc/ssl
sending incremental file list sending incremental file list
@ -297,7 +296,7 @@ total size is 344.08K speedup is 2.21
$ doas rcctl restart php80_fpm $ doas rcctl restart php80_fpm
php80_fpm(ok) php80_fpm(ok)
php80_fpm(ok) php80_fpm(ok)
~~~ ```
## Cloudlog (client) ## 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 First off, connect the TX-500 with the computer (CAT cable) and
start `rigctld`: start `rigctld`:
~~~console ```console
$ rigctld -m 2014 -r /dev/cuaU0 -s 9600 -v $ 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 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 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: For newer hamlib versions (≥4.5) use the rig 2050 like:
~~~console ```console
$ rigctld -m 2050 -r /dev/cuaU0 -s 9600 -v $ rigctld -m 2050 -r /dev/cuaU0 -s 9600 -v
~~~ ```
In combination with Digirig I would probably use something like this, In combination with Digirig I would probably use something like this,
because otherwise Digirig would instantly key the transceiver: because otherwise Digirig would instantly key the transceiver:
~~~console ```console
$ rigctld -m 2014 -r /dev/cuaU0 -s 9600 --set-conf=rts_state=OFF -v $ 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 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 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): On another terminal start [`cloudlogbashcat.sh`](https://github.com/g0wfv/CloudlogBashCat):
~~~console ```console
$ cloudlogbashcat.sh $ cloudlogbashcat.sh
~~~ ```
Now, if you open the website of your Cloudlog installation (and if you have Now, if you open the website of your Cloudlog installation (and if you have
setup your rigs) and select the radio that uses cloudlogbashcat. 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. I defined an alias `ls` but I forgot where it was.
~~~console ```console
$ PS4='+%x:%I>' zsh -i -x -c '' |& grep ls $ PS4='+%x:%I>' zsh -i -x -c '' |& grep ls
~~~ ```
There will be a lot of screen output probably. There will be a lot of screen output probably.
### Renaming multiple directories ### Renaming multiple directories
~~~console ```console
$ count=1; zmv -n '*' '$f[1,4]/$((count++))-$f[12,-1]' $ 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-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-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 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. Moves subdirectories into other folder structure with a counting variable.
~~~console ```console
$ count=16; zmv -Q '*(/)' '$((count++))-$f[12,-1]' $ count=16; zmv -Q '*(/)' '$((count++))-$f[12,-1]'
mv -- 2021-08-08-win10-grub2-and-uefi 16-win10-grub2-and-uefi 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-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-winlink-and-vara-on-linux 18-winlink-and-vara-on-linux
mv -- 2021-10-03-wordlist-generation 19-wordlist-generation mv -- 2021-10-03-wordlist-generation 19-wordlist-generation
mv -- 2021-10-26-processes-accessing-mountpoints 20-processes-accessing-mountpoints 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. 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 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. from `28-*` to `34-` to a number lower by 1.
~~~console ```console
$ for i in {29..34}; do zmv -n -W $i'*' $((--i))'*'; done $ 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 -- 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 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 -- 32-hamnet-on-the-pfsense 31-hamnet-on-the-pfsense
mv -- 33-changing-network-metrics-on-linux 32-changing-network-metrics-on-linux mv -- 33-changing-network-metrics-on-linux 32-changing-network-metrics-on-linux
mv -- 34-change-git-submodule-url 33-change-git-submodule-url 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 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. remove the leading number from that directory.
~~~console ```console
$ zmv -n -W '59-*' '*' $ zmv -n -W '59-*' '*'
mv -- 59-pat-winlink-on-openbsd pat-winlink-on-openbsd mv -- 59-pat-winlink-on-openbsd pat-winlink-on-openbsd
~~~ ```
## Neovim ## Neovim
@ -422,9 +421,9 @@ in its tree. You may then stash the local changes and re-run the update procedur
## Concatenate sound files (.wav) ## Concatenate sound files (.wav)
~~~console ```console
$ sox *.wav one-big-soundfile.wav $ sox *.wav one-big-soundfile.wav
~~~ ```
`cat *.wav > bigfile.wav` works too, but different. That would put all `cat *.wav > bigfile.wav` works too, but different. That would put all
audio files into separate streams at the output file whereas `sox` 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 ## Manual page sections
| Section | Description | | Section | Description |
| :--- | :--- | | :------ | :------------------------ |
| 1 | General Commands | | 1 | General Commands |
| 2 | System Calls | | 2 | System Calls |
| 3 | Library Functions | | 3 | Library Functions |
| 3p | Perl Library | | 3p | Perl Library |
| 4 | Device Drivers | | 4 | Device Drivers |
| 5 | File Formats | | 5 | File Formats |
| 6 | Games | | 6 | Games |
| 7 | Miscallaneous Information | | 7 | Miscallaneous Information |
| 8 | System Manager's Manual | | 8 | System Manager's Manual |
| 9 | Kernel Developer's Manual | | 9 | Kernel Developer's Manual |

@ -12,7 +12,6 @@ showBreadcrumbs: true
feed_exclude: true feed_exclude: true
# site_exclude: true # site_exclude: true
--- ---
Some basic info about Raspberry Pi of any version. Some basic info about Raspberry Pi of any version.
@ -23,17 +22,17 @@ Some basic info about Raspberry Pi of any version.
#### Actual models #### Actual models
| LED&nbsp;Activity | Description | | LED&nbsp;Activity | Description |
|:------------------|:------------------------------------| | :---------------- | :----------------------------------------------------------------------------------------------- |
| 3 flashes | start.elf not found | | 3 flashes | start.elf not found |
| 4 flashes | start.elf not launch-able (corrupt) | | 4 flashes | start.elf not launch-able (corrupt) |
| 7 flashes | kernel.img not found | | 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 | | 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 #### Older models up to Raspberry Pi 3
| LED&nbsp;Activity | Description | | LED&nbsp;Activity | Description |
|:------------------|:-------------------------------------| | :---------------- | :----------------------------------- |
| 3 flashes | loader.bin not found | | 3 flashes | loader.bin not found |
| 4 flashes | loader.bin not launch-able (corrupt) | | 4 flashes | loader.bin not launch-able (corrupt) |
| 5 flashes | start.elf not found | | 5 flashes | start.elf not found |
@ -43,21 +42,21 @@ Some basic info about Raspberry Pi of any version.
### Raspberry Pi 4 ### Raspberry Pi 4
| Long flashes | Short flashes | Description | | Long flashes | Short flashes | Description |
|:-------------|:--------------|:------------------------------------| | :----------- | :------------ | :---------------------------------- |
| 0 | 3 | Generic failure to boot | | 0 | 3 | Generic failure to boot |
| 0 | 4 | start*.elf not found | | 0 | 4 | start\*.elf not found |
| 0 | 7 | Kernel image not found | | 0 | 7 | Kernel image not found |
| 0 | 8 | SDRAM failure | | 0 | 8 | SDRAM failure |
| 0 | 9 | Insufficient SDRAM | | 0 | 9 | Insufficient SDRAM |
| 0 | 10 | In HALT state | | 0 | 10 | In HALT state |
| 2 | 1 | Partition not FAT | | 2 | 1 | Partition not FAT |
| 2 | 2 | Failed to read from partition | | 2 | 2 | Failed to read from partition |
| 2 | 3 | Extended partition not FAT | | 2 | 3 | Extended partition not FAT |
| 2 | 4 | File signature/hash mismatch - Pi 4 | | 2 | 4 | File signature/hash mismatch - Pi 4 |
| 4 | 4 | Unsupported board type | | 4 | 4 | Unsupported board type |
| 4 | 5 | Fatal firmware error | | 4 | 5 | Fatal firmware error |
| 4 | 6 | Power failure type A | | 4 | 6 | Power failure type A |
| 4 | 7 | Power failure type B | | 4 | 7 | Power failure type B |
## Freeze a package with apt/apt-get ## 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: I prefer `iwctl` or NetworkManager, so what I do:
~~~console ```console
# pacman -S networkmanager # pacman -S networkmanager
~~~ ```
### No network after boot ### 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). 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] $ sudo nmcli device wifi connect [ssid] password [password]
~~~ ```
You can view networks with (no need for _sudo_): You can view networks with (no need for _sudo_):
~~~console ```console
$ nmcli device wifi list $ nmcli device wifi list
~~~ ```
### Moving to testing (from bookworm) ### 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. First of all, upgrade to the latest packages.
~~~console ```console
$ sudo apt update && sudo apt upgrade $ sudo apt update && sudo apt upgrade
~~~ ```
Now change the release name (e.g. `bookworm`) to `testing` in `/etc/apt/sources.list`: 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 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-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 deb http://deb.debian.org/debian testing-updates main contrib non-free non-free-firmware
~~~ ```
Then update step by step. Then update step by step.
~~~console ```console
$ sudo apt update $ sudo apt update
$ sudo apt upgrade $ sudo apt upgrade
~~~ ```
> Restart services during package upgrades without asking? > Restart services during package upgrades without asking?
@ -132,10 +131,10 @@ Answer with <kbd>Yes</kbd>.
Finish the update: Finish the update:
~~~console ```console
$ sudo apt full-upgrade $ sudo apt full-upgrade
$ sudo reboot $ sudo reboot
~~~ ```
### Python 3 ### 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 Debian did not allow the installation as it did before, so I had to create
a virtual environment. And it went like this: a virtual environment. And it went like this:
~~~console ```console
$ python -m venv ~/.env $ python -m venv ~/.env
$ source ~/.env/bin/activate $ source ~/.env/bin/activate
$ pip install aprslib $ pip install aprslib
$ deactivate $ deactivate
~~~ ```
I now have a similar line in my crontab: I now have a similar line in my crontab:
~~~crontab ```crontab
3 * * * * /home/dominic/.env/bin/python /home/dominic/bin/aprs_sendstatus.py 3 * * * * /home/dominic/.env/bin/python /home/dominic/bin/aprs_sendstatus.py
~~~ ```
We could also create virtual environments per application, module, package etc. 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). Some software is needed to get status information about the batteries (which are of type 18650).
~~~console ```console
$ python3 -m venv . $ python3 -m venv .
$ curl -LsO https://raw.githubusercontent.com/geeekpi/upsplus/main/install.sh $ curl -LsO https://raw.githubusercontent.com/geeekpi/upsplus/main/install.sh
$ bash install.sh $ bash install.sh
~~~ ```
Any errors can be resolved by installing by hand. In my notes I thought that info is enough, so Any errors can be resolved by installing by hand. In my notes I thought that info is enough, so
here we are :wink: here we are :wink:
We may have to edit our crontab: 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.py > /tmp/upsPlus.log
* * * * * /home/dr/bin/python3 /home/dr/bin/upsPlus_iot.py > /tmp/upsPlus_iot.log * * * * * /home/dr/bin/python3 /home/dr/bin/upsPlus_iot.py > /tmp/upsPlus_iot.log
~~~ ```
Getting information: Getting information:
~~~console ```console
$ python3 bin/upsPlus.py $ python3 bin/upsPlus.py
------------------------------------------------------------ ------------------------------------------------------------
------Current information of the detected Raspberry Pi------ ------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 Successfully set the protection voltage to: 3700 mV
------------------------------------------------------------ ------------------------------------------------------------
Currently charging via Type C Port. Currently charging via Type C Port.
~~~ ```
The Raspberry Pi will continue to work if you remove the power cable. 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. 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 Unplug the USB and plug it in again booting into uf2 loading, copying over the
MicroPython uf2 file again. MicroPython uf2 file again.

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

@ -1,7 +1,7 @@
--- ---
title: Unraid title: Unraid
date: 2024-01-25T22:41:48+0100 date: 2024-01-25T22:41:48+0100
lastmod: 2024-08-31T14:02:07+0000 lastmod: 2024-09-28T23:48:06+0000
tags: tags:
- unraid - unraid
- selfhost - 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. Easy peasy -- though, I forget that command every time I need it.
~~~console ```console
# docker network create {network-name} # docker network create {network-name}
~~~ ```
## Don't move dockers filesystem ## 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, 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: 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 This is a short story from my life that explains how I came to my amateur
radio license. radio license.
date: 2020-01-02T17:01:26+01:00 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] categories: [amateur-radio]
tags: [life] tags: [life]
--- ---
I'm not the casual ham radio operator that always wanted to operate his own 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: We had to attend these blocks:
**1. block** **1. block**
- **Friday, September 27, (15:00 to 20:30)**
introduction and law pt 1 - **Friday, September 27, (15:00 to 20:30)**
- **Saturday, September 28, (09:00 to 18:00)** introduction and law pt 1
law pt 2 and engineering pt 1 - **Saturday, September 28, (09:00 to 18:00)**
law pt 2 and engineering pt 1
**2. block** **2. block**
- **Friday, October 4, (15:00 to 20:30)**
operating technology pt 1 - **Friday, October 4, (15:00 to 20:30)**
- **Saturday, October 5, (09:00 to 18:00)** operating technology pt 1
engineering pt 2 - **Saturday, October 5, (09:00 to 18:00)**
engineering pt 2
**3. block** **3. block**
- **Friday, October 11, (15:00 to 20:30)**
engineering pt 3 - **Friday, October 11, (15:00 to 20:30)**
- **Saturday, October 12, (09:00 to 18:00)** engineering pt 3
engineering pt 4 and operating technology pt 2 - **Saturday, October 12, (09:00 to 18:00)**
engineering pt 4 and operating technology pt 2
**4. block -- refreshing** **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 ## Cost report
This represents the total amount of money I had to put into getting my license. This represents the total amount of money I had to put into getting my license.
| date and time | value | description | | date and time | value | description |
| :--- | ---: | :--- | | :------------------- | -----------: | :----------------------- |
| 12.08.2019, Monday | 75.56 € | documentation scripts | | 12.08.2019, Monday | 75.56 € | documentation scripts |
| 27.09.2019, Friday | 90.00 € | the course itself | | 27.09.2019, Friday | 90.00 € | the course itself |
| 27.09.2019, Friday | 14.70 € | parking "Hentschelhof" | | 27.09.2019, Friday | 14.70 € | parking "Hentschelhof" |
| 28.09.2019, Saturday | 48.15 € | refueling | | 28.09.2019, Saturday | 48.15 € | refueling |
| 28.09.2019, Saturday | 10 € | lunch | | 28.09.2019, Saturday | 10 € | lunch |
| 28.09.2019, Saturday | 14.40 € | parking "Wilten" | | 28.09.2019, Saturday | 14.40 € | parking "Wilten" |
| 04.10.2019, Friday | 14.40 € | parking "Wilten" | | 04.10.2019, Friday | 14.40 € | parking "Wilten" |
| 05.10.2019, Saturday | 10 € | lunch | | 05.10.2019, Saturday | 10 € | lunch |
| 05.10.2019, Saturday | 18.20 € | parking "Altstadtgarage" | | 05.10.2019, Saturday | 18.20 € | parking "Altstadtgarage" |
| 05.10.2019, Saturday | 53.11 € | refueling | | 05.10.2019, Saturday | 53.11 € | refueling |
| 11.10.2019, Friday | 14.70 € | parking "Altstadtgarage" | | 11.10.2019, Friday | 14.70 € | parking "Altstadtgarage" |
| 12.10.2019, Saturday | 7 € | lunch | | 12.10.2019, Saturday | 7 € | lunch |
| 12.10.2019, Saturday | 18.20 € | parking "Altstadtgarage" | | 12.10.2019, Saturday | 18.20 € | parking "Altstadtgarage" |
| 12.10.2019, Saturday | 45.26 € | refueling | | 12.10.2019, Saturday | 45.26 € | refueling |
| 19.10.2019, Saturday | 13 € | parking "Markthalle" | | 19.10.2019, Saturday | 13 € | parking "Markthalle" |
| 19.10.2019, Saturday | 57.08 € | refueling | | 19.10.2019, Saturday | 57.08 € | refueling |
| 22.10.2019, Tuesday | 28.83 € | examination fee | | 22.10.2019, Tuesday | 28.83 € | examination fee |
| 22.10.2019, Tuesday | 14.30 € | examination certificate | | 22.10.2019, Tuesday | 14.30 € | examination certificate |
| 22.10.2019, Tuesday | 3 € | parking "SOHO 2.0" | | 22.10.2019, Tuesday | 3 € | parking "SOHO 2.0" |
| | **549.89 €** | **total** | | | **549.89 €** | **total** |
In the end I paid **203.60€** for gasoline, **27€** for lunch on Saturdays and In the end I paid **203.60€** for gasoline, **27€** for lunch on Saturdays and
**110.60€** for parking my car. **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 The exam is split into three different topics: law, engineering and operating
technology. technology.
Every person gets three questions in *law*, three questions in *engineering* and 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 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 if person 1 answered the first three questions person 2 has to answer three
other questions in the same topic. other questions in the same topic.

@ -4,7 +4,6 @@ aliases: /posts/2020-11-14-error-with-signed-commits
categories: [computerstuff] categories: [computerstuff]
tags: [git] tags: [git]
date: 2020-11-14T23:22:42+01:00 date: 2020-11-14T23:22:42+01:00
--- ---
For some reason my git commits failed when I re-enabled gpg signing. This is how 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` ##### Add to `~/.gnupg/gpg.conf`
~~~plain ```plain
use-agent use-agent
pinentry-mode loopback pinentry-mode loopback
~~~ ```
##### And add to `~/.gnupg/gpg-agent.conf` ##### And add to `~/.gnupg/gpg-agent.conf`
~~~plain ```plain
allow-loopback-pinentry allow-loopback-pinentry
~~~ ```
##### Restart the agent ##### Restart the agent
~~~console ```console
$ echo RELOADAGENT | gpg-connect-agent $ echo RELOADAGENT | gpg-connect-agent
~~~ ```
This information was found on This information was found on
[d.sb/2016/11/gpg-inappropriate-ioctl-for-device-errors][1]. [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] categories: [computerstuff]
tags: [git] tags: [git]
date: 2020-11-14T23:20:16+01:00 date: 2020-11-14T23:20:16+01:00
--- ---
I usually fetch the upstream repository and merge it into my local repository, I usually fetch the upstream repository and merge it into my local repository,

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

@ -7,8 +7,7 @@ summary: >
categories: [amateur-radio] categories: [amateur-radio]
tags: [dmr, scripting] tags: [dmr, scripting]
date: 2020-11-16T23:23:51+01:00 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 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/ [reg]: https://register.ham-digital.org/
Okay, I try to keep this simple. These scripts are made to download an actual 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 comma-separated list of DMR-IDs and callsigns to import into an amateur radio
device. Actually I use them only on my device. Actually I use them only on my
[Radioddity GD-77]({{< ref "equipment/radio-stuff/handhelds/radioddity-gd77" >}}). [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 the moment (2020-Nov-15). The script uses about 8MB of RAM. Something like
that. that.
~~~php ```php
#!/usr/bin/env php #!/usr/bin/env php
<?php <?php
/* /*
@ -68,7 +67,7 @@ that.
fclose ($remote_file); fclose ($remote_file);
fclose ($local_file); fclose ($local_file);
?> ?>
~~~ ```
## Download only a few regions into separate files ## 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. a file that contains one callsign per line. This script uses a lot more RAM.
Something around 32MB I guess. Or so. Something around 32MB I guess. Or so.
~~~php ```php
#!/usr/bin/env php #!/usr/bin/env php
<?php <?php
/* /*
@ -145,14 +144,14 @@ Something around 32MB I guess. Or so.
fclose ($remote_file); fclose ($remote_file);
fclose ($local_file); fclose ($local_file);
?> ?>
~~~ ```
## Download only a few regions into one single 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 Like the one above, but it saves all IDs into one file. Uses probably the same
amount of RAM. amount of RAM.
~~~php ```php
#!/usr/bin/env php #!/usr/bin/env php
<?php <?php
/* /*
@ -217,4 +216,4 @@ amount of RAM.
fclose ($file); fclose ($file);
?> ?>
~~~ ```

@ -5,9 +5,8 @@ summary: >
A quick fix if your virtual machine will not start. As long, as you got the 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] categories: [computerstuff]
tags: [macos,virtualbox] tags: [macos, virtualbox]
date: 2020-11-22T18:02:45+01:00 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 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: To enable Apples protection system, type this command:
~~~console ```console
$ csrutil enable $ csrutil enable
~~~ ```
After that, type `reboot` and hit enter. After that, type `reboot` and hit enter.

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

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

@ -1,23 +1,22 @@
--- ---
title: HS Dual Hat With PiStar v4 title: HS Dual Hat With PiStar v4
aliases: aliases:
- /posts/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/ - /blog/amateur-radio/2020-01-23-hs-dual-hat-with-pistar-v4/
- /amateur-radio/2020-01-23-hs-dual-hat-with-pistar-v4/ - /amateur-radio/2020-01-23-hs-dual-hat-with-pistar-v4/
summary: > summary: >
This is a MMDVM_HS_Dual_Hat hotspot in duplex mode with DMRGateway This is a MMDVM_HS_Dual_Hat hotspot in duplex mode with DMRGateway
and an actual Pi-Star image. and an actual Pi-Star image.
categories: amateur-radio categories: amateur-radio
tags: tags:
- pistar - pistar
- dmr - dmr
- ysf - ysf
- dstar - dstar
- hotspot - hotspot
- mmdvm - mmdvm
date: 2020-01-23T15:03:35+01:00 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 >}} {{< alert circle-info >}}
@ -56,18 +55,18 @@ the same as on the dashboard.
Now you got the filesystem writable, so start the keyboard configuration: Now you got the filesystem writable, so start the keyboard configuration:
~~~console ```console
$ sudo dpkg-reconfigure keyboard-configuration $ sudo dpkg-reconfigure keyboard-configuration
~~~ ```
I then usually go for the 105-key PC one. Choose German (Austria) and go for the 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. default keyboard layout with no compose key -- except you have other needs.
Then start generating the locales for your environment. Then start generating the locales for your environment.
~~~console ```console
$ sudo dpkg-reconfigure locales $ sudo dpkg-reconfigure locales
~~~ ```
Choose the locales that you need or want. My setup looks like this: 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: Quick and dirty -- my current `.bash_aliases` on my Pi-Stars looks like this:
~~~bash ```bash
# File: "~/.bash_aliases" # File: "~/.bash_aliases"
DATE=$(date +%Y-%m-%d) DATE=$(date +%Y-%m-%d)
PI=/var/log/pi-star/ PI=/var/log/pi-star/
@ -123,15 +122,15 @@ alias lx='ll -XB'
alias ducks='du -cks * | sort -rn | head' alias ducks='du -cks * | sort -rn | head'
alias confcat="sed -e 's/#.*//;/^\s*$/d' "$@"" alias confcat="sed -e 's/#.*//;/^\s*$/d' "$@""
~~~ ```
### Optional ### Optional
More software that comes in handy from time to time. 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 $ 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`" >}} {{< 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 The installation of vnstat is useful, if you let your pi-star run 24/7 as the
database gets cleared on every reboot! database gets cleared on every reboot!
~~~console ```console
$ sudo apt-get install vnstat $ sudo apt-get install vnstat
~~~ ```
Add the following line to your `/etc/fstab` file. I assume that you still Add the following line to your `/etc/fstab` file. I assume that you still
have the filesystem writable -- if not, run `rpi-rw`. have the filesystem writable -- if not, run `rpi-rw`.
~~~plain ```plain
# file: "/etc/fstab" # file: "/etc/fstab"
tmpfs /var/lib/vnstat tmpfs nodev,noatime,nosuid,mode=1777,size=4m 0 0 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: If you run `cat /etc/fstab` it should look similar to this:
~~~plain ```plain
# file: "/etc/fstab" # file: "/etc/fstab"
#File System Mountpoint Type Options Dump Pass #File System Mountpoint Type Options Dump Pass
proc /proc proc defaults 0 0 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/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/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 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 Normally, vnstat creates `/var/lib/vnstat` and starts the vnstat service. We now
delete the freshly created databases (they are nearly empty anyway) and delete the freshly created databases (they are nearly empty anyway) and
re-create them when we have mounted the ramdisk. re-create them when we have mounted the ramdisk.
~~~console ```console
$ sudo rm /var/lib/vnstat/* $ sudo rm /var/lib/vnstat/*
$ sudo mount -a $ sudo mount -a
$ sudo systemctl restart vnstatd $ sudo systemctl restart vnstatd
~~~ ```
Now run `vnstat` to display network interface statistics. It's output could Now run `vnstat` to display network interface statistics. It's output could
look similar to this one: look similar to this one:
~~~plain ```plain
rx / tx / total / estimated rx / tx / total / estimated
eth0: Not enough data available yet. eth0: Not enough data available yet.
wlan0: wlan0:
Jän '20 39,23 MiB / 39,10 MiB / 78,33 MiB / 106,00 MiB 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 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 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 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. Once you finished your setup, make the filesystem read-only again.
~~~console ```console
$ rpi-ro $ rpi-ro
~~~ ```
## Start setting up your Pi-Star MMDVM ## 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. This setup uses some talk groups from IPSC2/DMR+ and the rest from Brandmeister.
Specifically these talkgroups are: Specifically these talkgroups are:
* Timeslot 1 - Timeslot 1
* TG 1 - TG 7 - TG 1 - TG 7
* TG 10 - TG 89 - TG 10 - TG 89
* TG 100 - TG 199 - TG 100 - TG 199
* Timeslot 2 - Timeslot 2
* DMR+ reflectors with TG 9 - DMR+ reflectors with TG 9
* TG 232 - TG 232
* TG 8181 - TG 8189 - TG 8181 - TG 8189
* TG 8191 - TG 8199 - TG 8191 - TG 8199
* GPS data sent as private calls to 9057 - GPS data sent as private calls to 9057
All other talkgroups are routed to the Brandmeister network. Private calls are All other talkgroups are routed to the Brandmeister network. Private calls are
also routed to Brandmeister. 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 Raspberry Pi to an ethernet port or look out for a WiFi network called
Pi-Star Setup. 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." >}} {{< 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 ### 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 callsign. Also select the IPSC2 server of your choice and set the wanted
options. I go with these for now: options. I go with these for now:
~~~ini ```ini
StartRef=4197;RelinkTime=15;UserLink=1;TS2_1=232;TS2_2=8189; 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` 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 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 presses PTT for 15 minutes. If you need talkgroups from timeslot 1 you would
probably write something like this: probably write something like this:
~~~ini ```ini
StartRef=4197;RelinkTime=15;UserLink=1;TS1_1=20;TS2_1=232;TS2_2=8189; 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 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 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 This configuration file is split into paragraphs. Look out for the
`[DMR Network 1]` block. `[DMR Network 1]` block.
~~~ini ```ini
[DMR Network 1] [DMR Network 1]
Enabled=1 Enabled=1
Address=178.238.234.72 Address=178.238.234.72
@ -359,11 +357,11 @@ Password="***"
Debug=0 Debug=0
Id=232718001 Id=232718001
Name=BM_Germany_2622 Name=BM_Germany_2622
~~~ ```
Our next block is called `[DMR Network 2]`. Our next block is called `[DMR Network 2]`.
~~~ini ```ini
[DMR Network 2] [DMR Network 2]
Enabled=1 Enabled=1
Address=89.185.97.34 Address=89.185.97.34
@ -383,7 +381,7 @@ Debug=0
Id=2327180 Id=2327180
Name=DMR+_IPSC2-OE-DMO Name=DMR+_IPSC2-OE-DMO
Options="StartRef=4197;RelinkTime=15;UserLink=1;TS2_1=232;TS2_2=8189;" Options="StartRef=4197;RelinkTime=15;UserLink=1;TS2_1=232;TS2_2=8189;"
~~~ ```
[Read along here](https://github.com/g4klx/DMRGateway/wiki/Rewrite-Rules) [Read along here](https://github.com/g4klx/DMRGateway/wiki/Rewrite-Rules)
if you want to know more about the different 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: There are some more handy links for Brandmeister:
* [list connected peers to the Austrian BM_2321 server][list] - [list connected peers to the Austrian BM_2321 server][list]
* [last heard on this specific master server][lh] - [last heard on this specific master server][lh]
[list]: http://62.171.130.35/status/status.htm [list]: http://62.171.130.35/status/status.htm
[lh]: https://brandmeister.network/?page=lh&Master=2321 [lh]: https://brandmeister.network/?page=lh&Master=2321
@ -440,10 +438,10 @@ Or reboot the whole Raspberry Pi.
{{< video "pistar-remote-reboot" >}} {{< video "pistar-remote-reboot" >}}
To make use of PiStar Remote you need to set it up. Go to *Configuration -> 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). Expert_ and choose _PiStar Remote_ (in the Full Edit line).
~~~ini ```ini
[enable] [enable]
# Is the Pi-Star Remote Enabled? (true|false) # Is the Pi-Star Remote Enabled? (true|false)
enabled=true enabled=true
@ -456,11 +454,11 @@ svcrestart=8999998
reboot=8999997 reboot=8999997
#shutdown=8999996 #shutdown=8999996
#hostfiles=9999995 #hostfiles=9999995
~~~ ```
## Final words ## 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 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. too; some aren't even wrong, they just fit better.

@ -1,17 +1,16 @@
--- ---
title: APRS With The Hytera PD785G title: APRS With The Hytera PD785G
aliases: aliases:
- /posts/2020-01-27-aprs-with-hytera-pd785g-v9 - /posts/2020-01-27-aprs-with-hytera-pd785g-v9
- /posts/2020-01-27-aprs-with-the-hytera-pd785g - /posts/2020-01-27-aprs-with-the-hytera-pd785g
- /blog/amateur-radio/2020-01-27-aprs-with-hytera-pd785g-v9 - /blog/amateur-radio/2020-01-27-aprs-with-hytera-pd785g-v9
- /blog/2020-01-27-aprs-with-hytera-pd785g-v9-firmware/ - /blog/2020-01-27-aprs-with-hytera-pd785g-v9-firmware/
summary: > summary: >
This article is based on the Firmware v9. This article is based on the Firmware v9.
categories: [amateur-radio] categories: [amateur-radio]
tags: [dmr,aprs,hytera] tags: [dmr, aprs, hytera]
date: 2020-01-27T17:34:01+01:00 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+, 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="" >}} {{< figure src="hyt_01_gps.png" alt="GPS settings" caption="" >}}
Also this remains the same -- make sure to disable *Quick GPS* and enable Also this remains the same -- make sure to disable _Quick GPS_ and enable
*RSSI Report*. _RSSI Report_.
{{< figure src="hyt_02_gps.png" alt="GPS settings" caption="" >}} {{< figure src="hyt_02_gps.png" alt="GPS settings" caption="" >}}
You do not really need the other settings. On incoming calls *Call 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* 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 sends your own location info out with your voice. This is needed for
*Call Location*. _Call Location_.
## Network settings ## 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. You can also use any of those number-symbol combinations.
| RRS & Radio IDs | description | | RRS & Radio IDs | description |
| :--- | :--- | | :-------------- | :------------------- |
| 9050 | without SSID | | 9050 | without SSID |
| 9055 | house / QTH | | 9055 | house / QTH |
| 9056 | camping / fieldday | | 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 Setup the channel like this. Just make sure to set `Location Info
Revert Channel`. I did not select `IP Multi-site Revert Channel`. I did not select `IP Multi-site
Connect` and I also did not select an `RRS Revert 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. is what makes your HT send your position out when you change channels.
{{< figure src="hyt_04_channel.png" alt="channel settings" caption="" >}} {{< 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_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." >}} {{< 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: When transmitted with SSID a location point looks like this:

@ -3,17 +3,16 @@ title: Get DMRIDs Via Command Line
aliases: /posts/2020-02-04-get-dmrids-on-the-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. summary: This is a quick workaround to retrieve a DMRID on console or terminal.
categories: [amateur-radio] categories: [amateur-radio]
tags: [dmr,pistar,scripting] tags: [dmr, pistar, scripting]
date: 2020-02-04T13:05:25+01:00 date: 2020-02-04T13:05:25+01:00
--- ---
You want to install `w3m`. It is a text browser. Don't forget `rpi-rw` before You want to install `w3m`. It is a text browser. Don't forget `rpi-rw` before
installing anything if you're on Pi-Star. installing anything if you're on Pi-Star.
~~~console ```console
$ sudo apt-get -y install w3m $ sudo apt-get -y install w3m
~~~ ```
## The script ## The script
@ -21,7 +20,7 @@ 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 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" # file: "~/bin/call"
#!/bin/bash #!/bin/bash
# Get DMR-IDs from CALLSIGN or CALLSIGN from DMR-ID or vice versa # Get DMR-IDs from CALLSIGN or CALLSIGN from DMR-ID or vice versa
@ -102,7 +101,7 @@ then
else else
print_usage print_usage
fi fi
~~~ ```
{{< alert circle-info >}} {{< alert circle-info >}}
If someone has two DMRIDS, the most recent registered callsign will appear on 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): Simply get one DMRID (or two, depends on the callsign though):
~~~console ```console
$ call OE7DRT $ call OE7DRT
~~~ ```
Now let's think a bit more complex. You can use the script in a loop. Let's fetch Now let's think a bit more complex. You can use the script in a loop. Let's fetch
some austrian callsigns only. some austrian callsigns only.
~~~console ```console
$ for i in 7one 7two 1three; do call oe$i ids >>! ids; done $ 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 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 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`. them into clipboard (on a mac only) with `pbcopy < ids`.
~~~console ```console
OE7ONE Username1 0007001 2018-05-12 OE7ONE Username1 0007001 2018-05-12
OE7TWO Username2 0007003 2018-12-08 OE7TWO Username2 0007003 2018-12-08
OE7TWO Username2 0007002 2018-11-09 OE7TWO Username2 0007002 2018-11-09
OE1ONE Username3 0001001 2020-03-13 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 ## 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 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 know quickly what federal state it was? Run this command and you'll get a
quick answer on the command line: quick answer on the command line:
~~~console ```console
$ for i in oe{1..9}drt; do call $i; done $ for i in oe{1..9}drt; do call $i; done
OE7DRT Dominic 2327180 2019-11-24 OE7DRT Dominic 2327180 2019-11-24
~~~ ```
If you called your script `call` and if `call` is in your `$PATH`. If you called your script `call` and if `call` is in your `$PATH`.
This works also if you missed one letter. This works also if you missed one letter.
~~~console ```console
$ for i in oe7{a..z}rt; do call $i; done $ for i in oe7{a..z}rt; do call $i; done
OE7BRT Rainer 2327XXX 20XX-XX-XX OE7BRT Rainer 2327XXX 20XX-XX-XX
OE7DRT Dominic 2327180 2019-11-24 OE7DRT Dominic 2327180 2019-11-24
OE7JRT Josef 2327XXX 20XX-XX-XX OE7JRT Josef 2327XXX 20XX-XX-XX
~~~ ```
This took ~10 seconds on my computer. 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 your IP address quickly, if you hammer their server with so many request in a
short period of time. short period of time.
~~~console ```console
$ for i in oe7d{a..z}{a..z}; do call $i; done $ for i in oe7d{a..z}{a..z}; do call $i; done
2327XXX OE7D?? Daniel 2327XXX OE7D?? Daniel
2327XXX OE7D?? Hermann 2327XXX OE7D?? Hermann
@ -180,7 +179,7 @@ $ for i in oe7d{a..z}{a..z}; do call $i; done
2327180 OE7D?? Dominic 2327180 OE7D?? Dominic
2327XXX OE7D?? Wechselberger 2327XXX OE7D?? Wechselberger
2327XXX OE7D?? Gernot 2327XXX OE7D?? Gernot
~~~ ```
And this ran for 3 minutes and 17 seconds on my computer. 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 title: My Nextion 2.4" DMR Last Heard Dashboard
aliases: aliases:
- /posts/2020-02-16-nextion-dmr-last-heard-dashboard - /posts/2020-02-16-nextion-dmr-last-heard-dashboard
- /blog/nextion-dmr-last-heard-dashboard/ - /blog/nextion-dmr-last-heard-dashboard/
summary: > summary: >
I created a simple last-heard-dashboard for my small Nextion screen. 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 It currently shows the used slot, its origin (like Network or RF) , the
callsign and the used talkgroup. callsign and the used talkgroup.
categories: [amateur-radio] categories: [amateur-radio]
tags: [nextion,dmr] tags: [nextion, dmr]
date: 2020-02-16T12:43:34+01:00 date: 2020-02-16T12:43:34+01:00
lastmod: 2024-02-10T17:10:46+0000 lastmod: 2024-09-28T23:48:06+0000
--- ---
## The display ## The display
@ -23,7 +22,6 @@ probably the Layout of [PD0DIB].
We're talking about a `NX3224T024_011`. We're talking about a `NX3224T024_011`.
{{< figure src="nxt_01_display.jpg" alt="display" caption="" >}} {{< figure src="nxt_01_display.jpg" alt="display" caption="" >}}
My dashboard now looks like this: 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 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. summary: An overview of how to mount your Pi-Star sdcard on a mac machine.
categories: [computerstuff] categories: [computerstuff]
tags: [pistar,macos] tags: [pistar, macos]
date: 2020-02-22T09:33:44+01:00 date: 2020-02-22T09:33:44+01:00
--- ---
##### Installing the needed tools ##### Installing the needed tools
~~~console ```console
$ brew cask install osxfuse $ brew cask install osxfuse
$ brew install ext4fuse $ brew install ext4fuse
~~~ ```
##### Mount the disk on your filesystem ##### Mount the disk on your filesystem
~~~console ```console
$ ext4fuse /dev/disk2s2 pi-star $ ext4fuse /dev/disk2s2 pi-star
~~~ ```
##### Users, groups, write permissions, &c ##### Users, groups, write permissions, &c
If you feel that you have to add yourself to another usergroup, then do that If you feel that you have to add yourself to another usergroup, then do that
as the following code suggests: as the following code suggests:
~~~console ```console
$ sudo dseditgroup -o edit -a $username -t user $groupname $ sudo dseditgroup -o edit -a $username -t user $groupname
~~~ ```

@ -1,8 +1,8 @@
--- ---
title: My 7-Inch DMR Dashboard title: My 7-Inch DMR Dashboard
aliases: aliases:
- /posts/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/ - /blog/amateur-radio/2020-03-28-my-7inch-dmr-dashboard/
summary: > summary: >
I did not like the small screen and the small housing of my last Hotspot so 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 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 just right off the screen itself. Make sure to install the NextionDrivers
when you use this layout -- it offers way more possibilities. when you use this layout -- it offers way more possibilities.
categories: [amateur-radio] categories: [amateur-radio]
tags: [nextion,dmr] tags: [nextion, dmr]
date: 2020-03-28T12:42:44+01:00 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) 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> - <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 (the older layout looks ugly on the system page, but has buttons for
DMRGateway and DAPNETGateway).* DMRGateway and DAPNETGateway)._
## Management view ## Management view
By "clicking" the page (mainly the header on the top of the screen) you will see 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. 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 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 non-privileged user _mmdvm_. Please let me know if you found a solution to run
MMDVMHost as user *mmdvm* again. MMDVMHost as user _mmdvm_ again.
Maybe this is the reason why MMDVMHost runs as root on Pi-Star v4 too. 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 If you can't change the band edges on your Anytone radio, change the band
setting in the codeplug. setting in the codeplug.
categories: [amateur-radio] categories: [amateur-radio]
tags: [macos,anytone,dmr] tags: [macos, anytone, dmr]
date: 2020-05-17T11:38:31+02:00 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. 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 ```console
$ printf '\x03' | dd of=codeplug.rdt bs=1 seek=17 count=1 conv=notrunc $ printf '\x03' | dd of=codeplug.rdt bs=1 seek=17 count=1 conv=notrunc
``` ```
## Why would you need this? ## Why would you need this?
You get a codeplug from a friend but you cannot load it into your radio because 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 ## Bands settings
| Setting | Frequencies | Description | | Setting | Frequencies | Description |
| :--- | :--- | :--- | | :------ | :-------------------- | :------------------------------------- |
| **0** | **136-174 / 400-480** | Commercial Europe Mode `000000` | | **0** | **136-174 / 400-480** | Commercial Europe Mode `000000` |
| 1 | 136-17d4 / 400-480 | Commercial US Mode `000001` | | 1 | 136-17d4 / 400-480 | Commercial US Mode `000001` |
| **3** | **144-146 / 430-440** | Amateur Europe Mode `000003` | | **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` | | 10 | 144-148 / 430-450 | Amateur Australia/Canada Mode `000010` |
| 13 | 136-174 / 403-470 | Commercial Mode `000013` | | 13 | 136-174 / 403-470 | Commercial Mode `000013` |
| 16 | 144-147 / 430-440 | Amateur Thailand Mode `000016` | | 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 ;-) very complicated either ;-)
date: 2021-08-08 date: 2021-08-08
categories: [computerstuff] categories: [computerstuff]
tags: [linux,windows,grub] tags: [linux, windows, grub]
--- ---
Short and concise. I had to deal with a broken Grub 2 configuration recently 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: The plain file in `/etc/grub.d/proxifiedScripts/` looks like this:
~~~cfg ```cfg
# file: "/etc/grub.d/proxifiedScripts/custom" # file: "/etc/grub.d/proxifiedScripts/custom"
#!/bin/sh #!/bin/sh
exec tail -n +3 $0 exec tail -n +3 $0
@ -49,7 +48,7 @@ menuentry "Windows 10"{
menuentry "Reboot"{ menuentry "Reboot"{
reboot reboot
} }
~~~ ```
And/Or if you just want to use `grub-customizer`: go ahead, create the And/Or if you just want to use `grub-customizer`: go ahead, create the
menu entry and insert the part from above (Windows 10). 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 This is my attempt to properly install N1MM Logger+ on my main computer
running Manjaro/Ubuntu Linux. running Manjaro/Ubuntu Linux.
date: 2021-08-12 date: 2021-08-12
lastmod: 2024-02-18T11:02:08+0000 lastmod: 2024-09-28T23:48:06+0000
categories: [amateur-radio] categories: [amateur-radio]
tags: [linux,windows,n1mm,emulation,wine] tags: [linux, windows, n1mm, emulation, wine]
--- ---
## We need to talk again (an Update) ## We need to talk again (an Update)
{{< alert >}} {{< alert >}}
This is an update, the post was originally published on August 12<up>th</up>, This is an update, the post was originally published on August 12<up>th</up>, 2021. Most of the content has changed.
2021. Most of the content has changed.
{{< /alert >}} {{< /alert >}}
So in this update I would like to re-phrase and/or re-arrange this article to 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): 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 wineboot
$ env WINEPREFIX=/home/dominic/.wine-n1mm WINEARCH=win32 wine winecfg $ 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 So there is a ~500MB windows in my home folder, I will back this fragile
directory up into an archive: directory up into an archive:
~~~console ```console
$ tar -cJf wine-backup-n1mm-$(date +%Y-%m-%d-%H%M%S).tar.xz .wine-n1mm/ $ tar -cJf wine-backup-n1mm-$(date +%Y-%m-%d-%H%M%S).tar.xz .wine-n1mm/
~~~ ```
Next on the list: _.Net Framework 4.6_: Next on the list: _.Net Framework 4.6_:
~~~console ```console
$ env WINEPREFIX=/home/dominic/.wine-n1mm winetricks --force $ env WINEPREFIX=/home/dominic/.wine-n1mm winetricks --force
~~~ ```
Choose `Select default wine prefix`, choose Choose `Select default wine prefix`, choose
`Install Windows-DLL`, select `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 as it would create a timestamped filename anyway. My wine prefix `.wine-n1mm` now
is ~1.2GB big. is ~1.2GB big.
~~~console ```console
$ tar -cJf wine-backup-n1mm-$(date +%Y-%m-%d-%H%M%S).tar.xz .wine-n1mm/ $ 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. 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 After moving into the directory where our installation files reside, we tell wine
to start the installers: to start the installers:
~~~console ```console
$ cd Downloads/ $ cd Downloads/
$ env WINEPREFIX=/home/dominic/.wine-n1mm wine N1MM-Logger-FullInstaller-1.0.8954.exe $ env WINEPREFIX=/home/dominic/.wine-n1mm wine N1MM-Logger-FullInstaller-1.0.8954.exe
~~~ ```
Unselect `Finish and restart...` and close the installer. Unselect `Finish and restart...` and close the installer.
~~~console ```console
$ env WINEPREFIX=/home/dominic/.wine-n1mm wine N1MM-Logger-Update-1.0.9243.exe $ env WINEPREFIX=/home/dominic/.wine-n1mm wine N1MM-Logger-Update-1.0.9243.exe
~~~ ```
Unselect `Run N1MM Logger+...` and close the installer. 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 Make sure to substitute the versions with what you have downloaded -- you can
find these files here: find these files here:
* [Full Install](https://n1mmwp.hamdocs.com/downloads/n1mm-full-install) - [Full Install](https://n1mmwp.hamdocs.com/downloads/n1mm-full-install)
* [Latest update](https://n1mmwp.hamdocs.com/mmfiles/categories/programlatestupdate) - [Latest update](https://n1mmwp.hamdocs.com/mmfiles/categories/programlatestupdate)
You should now have new desktop icons and/or new menue entries (depends on your You should now have new desktop icons and/or new menue entries (depends on your
desktop environment). desktop environment).
@ -140,7 +138,7 @@ that you installed it.
You'll figure that out, the content of one of these desktop icons is: You'll figure that out, the content of one of these desktop icons is:
~~~ini ```ini
[Desktop Entry] [Desktop Entry]
Name=N1MM Logger+ 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 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 Path=/home/dominic/.wine-n1mm/dosdevices/c:/Program Files/N1MM Logger+/SkinsAndLayouts
Icon=88F7_N1MMLogger.net.0 Icon=88F7_N1MMLogger.net.0
StartupWMClass=n1mmlogger.net.exe StartupWMClass=n1mmlogger.net.exe
~~~ ```
This would probably do the same: 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 $ 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="" >}} {{< 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 Kubuntu. So let's have a quick look at what I did in this newly created 32bit
windows environment. windows environment.
~~~console ```console
$ sudo apt-get install wine-stable $ sudo apt-get install wine-stable
$ sudo apt-get install winetricks $ sudo apt-get install winetricks
$ sudo apt-get install exe-thumbnailer $ 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-FullInstaller-1.0.8954.exe
$ wine Downloads/N1MM-Logger-Update-1.0.9275.exe $ wine Downloads/N1MM-Logger-Update-1.0.9275.exe
~~~ ```
Start N1MM Logger+ from within your Application menue. There should be a new Start N1MM Logger+ from within your Application menue. There should be a new
folder called folder called

@ -1,18 +1,17 @@
--- ---
title: Running Winlink and VARA on Linux title: Running Winlink and VARA on Linux
aliases: aliases:
- /posts/2021-10-03-winlink-and-vara-on-linux - /posts/2021-10-03-winlink-and-vara-on-linux
- /posts/2021-10-03-running-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-running-winlink-and-vara-on-linux
- /amateur-radio/2021-10-03-winlink-and-vara-on-linux - /amateur-radio/2021-10-03-winlink-and-vara-on-linux
- /blog/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/18-winlink-and-vara-on-linux
summary: > summary: >
A quick and dirty summary of my Winlink installation on my linux laptop. A quick and dirty summary of my Winlink installation on my linux laptop.
date: 2021-10-03 date: 2021-10-03
categories: [amateur-radio] 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 This article is about using VARA FM and/or VARA HF on a linux laptop -- or
@ -20,7 +19,7 @@ computer.
## Quick and dirty ## Quick and dirty
~~~console ```console
$ sudo apt-get install wine-stable winetricks exe-thumbnailer $ sudo apt-get install wine-stable winetricks exe-thumbnailer
$ export WINEPREFIX=/home/dominic/.wine-winlink $ 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 ## 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 $ 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 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. 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 aliases: /posts/2021-10-03-wordlist-generation
summary: Just for the record. These results may not mean anything... summary: Just for the record. These results may not mean anything...
date: 2021-10-03 date: 2021-10-03
lastmod: 2023-06-04T21:30:28+0200 lastmod: 2024-09-28T23:48:06+0000
categories: [computerstuff] 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. 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/> - <https://www.openwall.com/john/>
~~~console ```console
$ john --mask='05253?d?d?d?d?d' --min-length=9 --max-length=10 --stdout > john_file $ john --mask='05253?d?d?d?d?d' --min-length=9 --max-length=10 --stdout > john_file
________________________________________________________ ________________________________________________________
Executed in 261,54 millis fish external Executed in 261,54 millis fish external
usr time 96,01 millis 11,00 micros 96,00 millis usr time 96,01 millis 11,00 micros 96,00 millis
sys time 38,02 millis 993,00 micros 37,03 millis sys time 38,02 millis 993,00 micros 37,03 millis
~~~ ```
## Maskprocessor ## Maskprocessor
- <https://github.com/hashcat/maskprocessor> - <https://github.com/hashcat/maskprocessor>
~~~console ```console
$ mp -i 9:10 '05253?d?d?d?d?d' -o mp_file $ mp -i 9:10 '05253?d?d?d?d?d' -o mp_file
________________________________________________________ ________________________________________________________
Executed in 6,72 millis fish external Executed in 6,72 millis fish external
usr time 2,19 millis 314,00 micros 1,88 millis usr time 2,19 millis 314,00 micros 1,88 millis
sys time 2,86 millis 54,00 micros 2,81 millis sys time 2,86 millis 54,00 micros 2,81 millis
~~~ ```
Tests were made with [fish ><(((°>](https://fishshell.com/). 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 A quick oneliner to list running processes that prevent a filesystem from
being unmounted. Using `lsof` or `fuser` for this. being unmounted. Using `lsof` or `fuser` for this.
date: 2021-10-26T10:06:47+02:00 date: 2021-10-26T10:06:47+02:00
lastmod: 2021-11-21 lastmod: 2024-09-28T23:48:06+0000
categories: [computerstuff] categories: [computerstuff]
tags: [linux] tags: [linux]
--- ---
Another quick one: I forget this command on a permanent basis, so I write this Another quick one: I forget this command on a permanent basis, so I write this
down here -- maybe this helps. down here -- maybe this helps.
~~~console ```console
$ lsof +f -- /media/mountpoint $ lsof +f -- /media/mountpoint
~~~ ```
#### Update on 2021-11-21 #### Update on 2021-11-21
You could also use `fuser`. I prefer this one because somehow I cannot use You could also use `fuser`. I prefer this one because somehow I cannot use
autocompletion with lsof and fuser lets me complete the paths. autocompletion with lsof and fuser lets me complete the paths.
~~~console ```console
$ fuser -vm /media/mountpoint $ fuser -vm /media/mountpoint
~~~ ```

@ -8,10 +8,9 @@ summary: >
creates the [weather page](https://wx.oe7drt.com/) and also uploads my weather creates the [weather page](https://wx.oe7drt.com/) and also uploads my weather
data to the [APRS-IS network](http://www.aprs-is.net/). data to the [APRS-IS network](http://www.aprs-is.net/).
date: 2022-01-08T14:34:54+01:00 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] 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 ## 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. not allow simple password authentications any more.
[1]: https://dev.netatmo.com/apidocumentation/oauth#authorization-code [1]: https://dev.netatmo.com/apidocumentation/oauth#authorization-code
{{< /alert >}} {{< /alert >}}
That means we have to update the extension to a fork that is recently updated. 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. First of all, install `epel-release` so you can install `python3-cheetah` finally.
~~~console ```console
# yum install epel-release # yum install epel-release
# yum install python3-cheetah # yum install python3-cheetah
~~~ ```
Continue with adding the repository of WeeWX to your system and install WeeWX. Continue with adding the repository of WeeWX to your system and install WeeWX.
~~~console ```console
# rpm --import https://weewx.com/keys.html # rpm --import https://weewx.com/keys.html
# curl -s https://weewx.com/yum/weewx-el8.repo | tee /etc/yum.repos.d/weewx.repo # curl -s https://weewx.com/yum/weewx-el8.repo | tee /etc/yum.repos.d/weewx.repo
~~~ ```
~~~console ```console
# dnf install weewx # dnf install weewx
~~~ ```
Look out for `/var/log/messages` in order to see if WeeWX is already running Look out for `/var/log/messages` in order to see if WeeWX is already running
(Abort with <kbd>Ctrl</kbd>+<kbd>C</kbd>). (Abort with <kbd>Ctrl</kbd>+<kbd>C</kbd>).
~~~console ```console
# tail -f /var/log/messages # tail -f /var/log/messages
~~~ ```
## Configuration of WeeWX ## Configuration of WeeWX
Stop WeeWX and remove the database for now. Stop WeeWX and remove the database for now.
~~~console ```console
# /etc/init.d/weewx stop # /etc/init.d/weewx stop
# rm /var/lib/weewx/weewx.sdb # rm /var/lib/weewx/weewx.sdb
~~~ ```
## Installation of netatmo driver ## 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 [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). 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 # wget -O weewx-netatmo.zip https://github.com/bricebou/weewx-netatmo/archive/master.zip
# wee_extension --install weewx-netatmo.zip # wee_extension --install weewx-netatmo.zip
# wee_config --reconfigure # wee_config --reconfigure
~~~ ```
Have a look at the file `/etc/weewx/weewx.conf` because it sometimes happens, Have a look at the file `/etc/weewx/weewx.conf` because it sometimes happens,
that the configuration is not properly written. 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. You can also use `systemctl start weewx` instead.
~~~console ```console
# /etc/init.d/weewx start # /etc/init.d/weewx start
~~~ ```
## Localisation ## Localisation
The setup is done, although if you like your pages with another locale you may 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`. want to alter the file `/usr/share/weewx/user/extensions.py`.
~~~python ```python
# file: "/usr/share/weewx/user/extensions.py" # file: "/usr/share/weewx/user/extensions.py"
# #
# Copyright (c) 2009-2015 Tom Keffer <tkeffer@gmail.com> # Copyright (c) 2009-2015 Tom Keffer <tkeffer@gmail.com>
@ -133,13 +133,13 @@ import locale
# Other options are possible. See: # Other options are possible. See:
# http://docs.python.org/2/library/locale.html#locale.setlocale # http://docs.python.org/2/library/locale.html#locale.setlocale
locale.setlocale(locale.LC_ALL, 'de_AT.UTF-8') locale.setlocale(locale.LC_ALL, 'de_AT.UTF-8')
~~~ ```
## Pushing weather data to APRS-IS ## Pushing weather data to APRS-IS
Make sure you get a similar entry in your `/etc/weewx/weewx.conf` file: Make sure you get a similar entry in your `/etc/weewx/weewx.conf` file:
~~~toml ```toml
# file: "/etc/weewx/weewx.conf" # 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>. 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 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 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: 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: else:
_radiation_str = "" _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')) log.debug("CWOP: packet: '%s'", _tnc_packet.rstrip('\r\n'))
return _tnc_packet return _tnc_packet
~~~ ```
Line 5 and 6 (highlighted) shows the old and new line. Should work fine. 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> <https://neoground.com/projects/neowx-material#section-download>
- install - install
~~~console
```console
# wee_extension --install=neowx-material.zip # wee_extension --install=neowx-material.zip
~~~ ```
- restart - restart
~~~console ```console
# systemctl restart weewx # systemctl restart weewx
~~~ ```
I usually don't give this hint: note the `#` at the beginning of these command I usually don't give this hint: note the `#` at the beginning of these command
lines. That means to run those commands as **root**. 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 I did already had the `python3-ephem` package installed, I used the Almanac pages
already in the older (default) Seasons skin. already in the older (default) Seasons skin.
~~~console ```console
# dnf install python3-ephem # dnf install python3-ephem
~~~ ```
The new theme looks like this: 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 aliases: /posts/2022-06-27-systemd-slow-reboot-and-shutdown-fixed
summary: > summary: >
I'm not so into systemd systems and ever avoided systemd whenever possible, 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 slowly and with some memory protection (e.g. this article). Sorry, this
article is not very well formatted... article is not very well formatted...
date: 2022-06-26T22:41:49+02:00 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] categories: [computerstuff]
tags: [linux,systemd,manjaro] tags: [linux, systemd, manjaro]
--- ---
I noticed long delays (more than 2 minutes) on reboots and poweroffs recently 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 View the last boot session log in reverse order
~~~console ```console
$ journalctl -rb -1 $ journalctl -rb -1
~~~ ```
and inspect that for abnormalities. Also look at your console when rebooting or 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. 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: I edited `/etc/systemd/system.conf` and changed the following values:
~~~ini ```ini
# file: "/etc/systemd/system.conf" # file: "/etc/systemd/system.conf"
[Manager] [Manager]
[...] [...]
@ -40,32 +39,32 @@ ShutdownWatchdogSec=1min
[...] [...]
DefaultTimeoutStopSec=5s DefaultTimeoutStopSec=5s
[...] [...]
~~~ ```
## Have a quick look at the boot time ## Have a quick look at the boot time
~~~console ```console
$ systemd-analyze $ systemd-analyze
~~~ ```
and if you are more interested into which module slows down your boot, list them and if you are more interested into which module slows down your boot, list them
with: with:
~~~console ```console
$ systemd-analyze blame $ systemd-analyze blame
~~~ ```
Just out of curiosity I also used: Just out of curiosity I also used:
~~~console ```console
$ sudo systemctl disable NetworkManager-wait-online.service $ sudo systemctl disable NetworkManager-wait-online.service
~~~ ```
→ revert that with: → revert that with:
~~~console ```console
$ sudo systemctl enable NetworkManager-wait-online.service $ sudo systemctl enable NetworkManager-wait-online.service
~~~ ```
## Sources ## 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` With default values I got this result for `systemd-analyze`
~~~console ```console
$ systemd-analyze $ systemd-analyze
Startup finished in 7.754s (firmware) + 5.988s (loader) + 1.140s (kernel) + 13.027s (initrd) + 1min 21.493s (userspace) = 1min 49.403s 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 graphical.target reached after 1min 21.462s in userspace
~~~ ```
Without userspace: <span style="border-bottom: 3px double;">27.9090s</span> Without userspace: <span style="border-bottom: 3px double;">27.9090s</span>
And with the changes above I get this And with the changes above I get this
~~~console ```console
$ systemd-analyze $ systemd-analyze
Startup finished in 10.151s (firmware) + 2.368s (loader) + 1.128s (kernel) + 10.509s (initrd) + 8.480s (userspace) = 32.639s 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 graphical.target reached after 8.450s in userspace
~~~ ```
Without userspace: <span style="border-bottom: 3px double;">24.1560s</span> 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: aliases:
- /posts/2022-07-04-pfsense-restore-broken-config - /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-file
summary: > summary: >
Restoring a configuration file for pfSense when it actually stays in a Restoring a configuration file for pfSense when it actually stays in a
boot-loop boot-loop
date: 2022-07-04T18:14:13+02:00 date: 2022-07-04T18:14:13+02:00
categories: [computerstuff] categories: [computerstuff]
tags: [pfsense,networking] tags: [pfsense, networking]
--- ---
My pfSense firewall at home got a pretty heavy misconfiguration by myself and My pfSense firewall at home got a pretty heavy misconfiguration by myself and
@ -21,70 +20,70 @@ configuration so this recovery process works quite well.
1. Boot into **single user mode** 1. Boot into **single user mode**
Connect to your firewall (with a serial console) and choose option Connect to your firewall (with a serial console) and choose option
`5) Reboot system` and confirm with the letter `S` (capital s). `5) Reboot system` and confirm with the letter `S` (capital s).
2. **ZFS version only** 2. **ZFS version only**
1. Remount root slice as read-write: 1. Remount root slice as read-write:
~~~console ```console
$ /sbin/mount -u / $ /sbin/mount -u /
~~~ ```
2. Mount all ZFS filesystems, datasets etc. 2. Mount all ZFS filesystems, datasets etc.
~~~console ```console
$ /sbin/zfs mount -a $ /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 ```console
$ cd /cf/conf $ cd /cf/conf
~~~ ```
2. Copy the newest backup file back 2. Copy the newest backup file back
~~~console ```console
$ cp backup/config-1648889613.xml config.xml $ cp backup/config-1648889613.xml config.xml
~~~ ```
3. Clear the config cache 3. Clear the config cache
~~~console ```console
$ rm /tmp/config.cache $ rm /tmp/config.cache
~~~ ```
4. Reload system and it's services 4. Reload system and it's services
~~~console ```console
$ /etc/rc.reload_all start $ /etc/rc.reload_all start
~~~ ```
This may take a while. At this point we are done, we can now remove 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. 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 ```console
$ /sbin/nextboot -D $ /sbin/nextboot -D
~~~ ```
ZFS does not clear the single user mode boot configuration by itself, 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. that's why we have to delete it after we are done with our work.
5. Reboot the system 5. Reboot the system
~~~console ```console
$ /sbin/reboot $ /sbin/reboot
~~~ ```
You could also use exit, but that would only continue booting into You could also use exit, but that would only continue booting into
multi user mode without rebooting the system first. I personally think multi user mode without rebooting the system first. I personally think
that we would benefit from a full reboot. 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 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. 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 aliases: /posts/2022-07-04-systemd-flushing-the-dns-cache
date: 2022-07-04T17:22:48+02:00 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] 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 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: And this post is all about that:
~~~console ```console
$ sudo systemd-resolve --flush-caches $ sudo systemd-resolve --flush-caches
~~~ ```
You could also use `sudo resolvectl flush-caches` if you like or prefer. You could also use `sudo resolvectl flush-caches` if you like or prefer.
Now verify the empty cache: Now verify the empty cache:
~~~console ```console
$ systemd-resolve --statistics $ systemd-resolve --statistics
~~~ ```
I usually do not need to flush my computers DNS caches, but fiddling with my 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. 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 title: Raspberry Pi 4 (64 bit) DUAL_HAT Hotspot
aliases: aliases:
- /posts/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
- /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 - /amateur-radio/2022-07-10-raspberry-pi-4-64bit-dual-hat-hotspot-without-pi-star
summary: > summary: >
Working **without Pi-Star** on a fresh and lightweight Raspberry Pi OS (64 bit) Working **without Pi-Star** on a fresh and lightweight Raspberry Pi OS (64 bit)
installation. One of the longer articles over here... installation. One of the longer articles over here...
date: 2022-07-10T14:27:28+02:00 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] categories: [amateur-radio]
tags: [pistar,dmr,ysf,dstar,hotspot,mmdvm] tags: [pistar, dmr, ysf, dstar, hotspot, mmdvm]
#weight: 1 #weight: 1
--- ---
This is my attempt to create a lightweight hotspot for DMR, D-STAR and C4FM on 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). 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. 2. Boot the Raspberry Pi and set it up to your needs.
- Localisation - Localisation
- Keyboard layout - Keyboard layout
- Install needed packages - Install needed packages
- Install your favourite shell (bash, zsh, fish, csh ...) - Install your favourite shell (bash, zsh, fish, csh ...)
3. Disable the serial console (and we will also disable Bluetooth) 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 - Open `/boot/cmdline.txt` and remove the text `console=serial0,115200`
dtoverlay=disable-bt - Open `/boot/config.txt` and add to the end
enable_uart=1
~~~ ```ini
dtoverlay=disable-bt
enable_uart=1
```
You may also run `raspi-config` and disable the console from there. You may also run `raspi-config` and disable the console from there.
Choose _3 Interface Options_ » _I6 Serial Port_ » _No (login shell)_ » Choose _3 Interface Options_ » _I6 Serial Port_ » _No (login shell)_ »
_Yes (serial hardware)_ » _OK_ _Yes (serial hardware)_ » _OK_
Disable the services Disable the services
~~~console ```console
$ sudo systemctl disable serial-getty@ttyAMA0.service $ sudo systemctl disable serial-getty@ttyAMA0.service
$ sudo systemctl disable bluetooth.service $ sudo systemctl disable bluetooth.service
~~~ ```
Reboot the Raspberry Pi after those changes! Reboot the Raspberry Pi after those changes!
~~~console ```console
$ sudo reboot $ sudo reboot
~~~ ```
4. Install the needed packages to compile the software later 4. Install the needed packages to compile the software later
~~~console ```console
$ sudo apt update -y $ sudo apt update -y
$ sudo apt full-upgrade $ 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 $ 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 Because **wiringPi** is currently not available from official sources, we
have to install it manually. have to install it manually.
~~~console ```console
$ git clone git@github.com:WiringPi/WiringPi.git $ git clone git@github.com:WiringPi/WiringPi.git
$ cd wiringPi $ cd wiringPi
$ ./build $ ./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 ```console
$ gpio -v $ gpio -v
gpio version: 2.70 gpio version: 2.70
Copyright (c) 2012-2018 Gordon Henderson Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY. This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty For details type: gpio -warranty
Raspberry Pi Details: Raspberry Pi Details:
Type: Pi 4B, Revision: 01, Memory: 4096MB, Maker: Sony Type: Pi 4B, Revision: 01, Memory: 4096MB, Maker: Sony
* Device tree is enabled. * Device tree is enabled.
*--> Raspberry Pi 4 Model B Rev 1.1 *--> Raspberry Pi 4 Model B Rev 1.1
* This Raspberry Pi supports user-level GPIO access. * This Raspberry Pi supports user-level GPIO access.
~~~ ```
5. Create a non-privileged user called _mmdvm_ and add the user to the 5. Create a non-privileged user called _mmdvm_ and add the user to the
group _dialout_ group _dialout_
~~~console ```console
$ sudo useradd mmdvm -g mmdvm -s /sbin/nologin $ sudo useradd mmdvm -g mmdvm -s /sbin/nologin
$ sudo usermod mmdvm -G dialout $ sudo usermod mmdvm -G dialout
~~~ ```
I had some problems with wiringPi, so I finally added the user _mmdvm_ to 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 the groups _gpio_ and _kmem_. (To let the user _mmdvm_ access `/dev/mem` and
`/dev/gpiomem`.) `/dev/gpiomem`.)
~~~console ```console
$ sudo usermod -G gpio,kmem -a mmdvm $ sudo usermod -G gpio,kmem -a mmdvm
~~~ ```
## Firmware ## 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`. 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 $ git clone --recursive git@github.com:juribeparada/MMDVM_HS.git
~~~ ```
### Configuration ### Configuration
Enter the directory and copy an appropriate default configuration for your board. Enter the directory and copy an appropriate default configuration for your board.
~~~console ```console
$ cp configs/MMDVM_HS_Dual_Hat-12mhz.h Config.h $ 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 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! version of the installed TCXO of **12**.2880 MHz!
~~~cpp ```cpp
// file: "Config.h" // file: "Config.h"
#if !defined(CONFIG_H) #if !defined(CONFIG_H)
#define CONFIG_H #define CONFIG_H
@ -171,11 +171,11 @@ version of the installed TCXO of **12**.2880 MHz!
#define ENABLE_UDID #define ENABLE_UDID
#endif #endif
~~~ ```
Those settings are also interesting to play with in the file `ADF7021.h`: Those settings are also interesting to play with in the file `ADF7021.h`:
~~~cpp ```cpp
// file: "ADF7021.h" // file: "ADF7021.h"
// Disable TX Raised Cosine filter for 4FSK modulation in ADF7021: // Disable TX Raised Cosine filter for 4FSK modulation in ADF7021:
#define ADF7021_DISABLE_RC_4FSK #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: // Configure AFC with positive initial frequency offset:
// #define ADF7021_AFC_POS // #define ADF7021_AFC_POS
~~~ ```
I only disabled the Raised Cosine filter for 4FSK modulation because this works 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. 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. You may want to consider making the following changes on those two files.
~~~cpp ```cpp
// file: "DMRDMOTX.cpp" // file: "DMRDMOTX.cpp"
//m_txDelay(240U), // 200ms //m_txDelay(240U), // 200ms
m_txDelay(120U), // 200ms m_txDelay(120U), // 200ms
~~~ ```
~~~cpp ```cpp
// file: "DMRDMOTX.cpp" // file: "DMRDMOTX.cpp"
void CDMRDMOTX::setTXDelay(uint8_t delay) void CDMRDMOTX::setTXDelay(uint8_t delay)
{ {
//m_txDelay = 600U + uint16_t(delay) * 12U; // 500ms + tx delay //m_txDelay = 600U + uint16_t(delay) * 12U; // 500ms + tx delay
m_txDelay = 60U + uint16_t(delay) * 12U; m_txDelay = 60U + uint16_t(delay) * 12U;
} }
~~~ ```
~~~cpp ```cpp
// file: "DMRTX.cpp" // file: "DMRTX.cpp"
// const uint32_t STARTUP_COUNT = 20U; // const uint32_t STARTUP_COUNT = 20U;
const uint32_t STARTUP_COUNT = 2U; const uint32_t STARTUP_COUNT = 2U;
~~~ ```
I'll leave you with this, if you have no idea what you are doing here: you should 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... 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. If no errors were made in `Config.h` this should be as easy as the steps above.
~~~console ```console
$ make clean $ make clean
$ make -j4 $ make -j4
$ sudo make mmdvm_hs_dual_hat $ sudo make mmdvm_hs_dual_hat
~~~ ```
Finish this with a reboot of the Raspberry Pi. Finish this with a reboot of the Raspberry Pi.
~~~console ```console
$ sudo reboot $ sudo reboot
~~~ ```
{{< alert circle-info >}} {{< alert circle-info >}}
Note, that we used `-j4` as an argument of `make` because the Raspberry Pi 4 has 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 We run this command also in our separated `git` folder. Just to keep all those
git repositories in one place. git repositories in one place.
~~~console ```console
$ git clone git@github.com:g4klx/MMDVMHost.git $ git clone git@github.com:g4klx/MMDVMHost.git
~~~ ```
### Compile the code ### Compile the code
Enter the newly created directory and compile it. Enter the newly created directory and compile it.
~~~console ```console
$ make -j4 -f Makefile.Pi $ make -j4 -f Makefile.Pi
~~~ ```
Install the executables into `/usr/local/bin` by executing Install the executables into `/usr/local/bin` by executing
~~~console ```console
$ sudo make install $ sudo make install
~~~ ```
### Configuration ### Configuration
Copy the default configuration file to `/etc`: Copy the default configuration file to `/etc`:
~~~console ```console
$ sudo cp MMDVM.ini /etc/ $ sudo cp MMDVM.ini /etc/
~~~ ```
and edit it to your needs. Most of the options are self-explanatory and I will 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. only publish some excerpts of my `/etc/MMDVM.ini` file.
~~~ini ```ini
# file: "/etc/MMDVM.ini" # file: "/etc/MMDVM.ini"
[Log] [Log]
# Logging levels, 0=No logging # Logging levels, 0=No logging
@ -437,7 +437,7 @@ GatewayAddress=127.0.0.1
GatewayPort=4200 GatewayPort=4200
# ModeHang=3 # ModeHang=3
Debug=0 Debug=0
~~~ ```
These are the most important parts of the configuration -- make sure that you 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. 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 ### Create log file directory
~~~console ```console
$ sudo mkdir /var/log/mmdvm $ sudo mkdir /var/log/mmdvm
$ sudo chown mmdvm:mmdvm /var/log/mmdvm $ sudo chown mmdvm:mmdvm /var/log/mmdvm
~~~ ```
### Check for errors ### 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. Make sure, that you have set `Daemon=0` in your `MMDVM.ini` file for this test.
Start `MMDVMHost` as user _mmdvm_ Start `MMDVMHost` as user _mmdvm_
~~~console ```console
$ sudo -u mmdvm MMDVMHost /etc/MMDVM.ini $ sudo -u mmdvm MMDVMHost /etc/MMDVM.ini
~~~ ```
Set `Daemon=1` back in your `MMDVM.ini` if you haven't already. 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. Copy the unit file for Systemd to the system.
~~~console ```console
$ sudo cp linux/systemd/mmdvmhost.service /etc/systemd/system/ $ sudo cp linux/systemd/mmdvmhost.service /etc/systemd/system/
~~~ ```
No modification should be needed, but for reference this is the content No modification should be needed, but for reference this is the content
of the file: of the file:
~~~ini ```ini
# file: "/etc/systemd/system/mmdvmhost.service" # file: "/etc/systemd/system/mmdvmhost.service"
[Unit] [Unit]
Description=MMDVMHost Radio Service Description=MMDVMHost Radio Service
@ -491,14 +491,14 @@ Restart=on-abnormal
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
~~~ ```
Start and enable this service in one go with Start and enable this service in one go with
~~~console ```console
$ sudo systemctl daemon-reload $ sudo systemctl daemon-reload
$ sudo systemctl enable --now mmdvmhost.service $ sudo systemctl enable --now mmdvmhost.service
~~~ ```
## DMRGateway ## DMRGateway
@ -507,13 +507,13 @@ austrian brandmeister master server (BM2321).
### Get the code ### Get the code
~~~console ```console
$ git clone git@github.com:g4klx/DMRGateway.git $ git clone git@github.com:g4klx/DMRGateway.git
~~~ ```
### Configuration ### Configuration
~~~ini ```ini
# file: "/etc/DMRGateway.ini" # file: "/etc/DMRGateway.ini"
[General] [General]
Timeout=10 Timeout=10
@ -636,16 +636,16 @@ Port=3769
Enable=0 Enable=0
Address=127.0.0.1 Address=127.0.0.1
Port=7643 Port=7643
~~~ ```
### Test your setup ### Test your setup
Change the configuration from above to `Daemon=0` and start DMRGateway in a Change the configuration from above to `Daemon=0` and start DMRGateway in a
terminal with terminal with
~~~console ```console
$ sudo -u mmdvm DMRGateway /etc/DMRGateway.ini $ sudo -u mmdvm DMRGateway /etc/DMRGateway.ini
~~~ ```
Check for errors and move on when everything is fine. You should hear the 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 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 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. want to do that by yourself, use this one to start with.
~~~ini ```ini
# file: "/etc/systemd/system/dmrgateway.service" # file: "/etc/systemd/system/dmrgateway.service"
[Unit] [Unit]
Description=DMRGateway Radio Service Description=DMRGateway Radio Service
@ -670,13 +670,13 @@ Restart=on-abnormal
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
~~~ ```
Change the configuration back `Daemon=1` and enable the service/unit. Change the configuration back `Daemon=1` and enable the service/unit.
~~~console ```console
$ sudo systemctl enable --now dmrgateway.service $ sudo systemctl enable --now dmrgateway.service
~~~ ```
## YSFGateway (C4FM, YSF, YCS) ## 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_. I've included his changes in my fork and created a branch called _YCS232_.
~~~console ```console
$ git clone git@github.com:oe7drt/YSFClients.git $ git clone git@github.com:oe7drt/YSFClients.git
$ cd YSFClients $ cd YSFClients
$ git fetch --all $ git fetch --all
$ git checkout YCS232 $ git checkout YCS232
~~~ ```
You can also add the original sources as an additional remote: You can also add the original sources as an additional remote:
~~~console ```console
$ git remote add upstream git@github.com:g4klx/YSFClients.git $ git remote add upstream git@github.com:g4klx/YSFClients.git
$ git fetch --all $ git fetch --all
~~~ ```
#### Original, most actual codebase #### Original, most actual codebase
~~~console ```console
$ git clone git@github.com:g4klx/YSFClients.git $ git clone git@github.com:g4klx/YSFClients.git
~~~ ```
### Either choice of source, compile it ### Either choice of source, compile it
Enter the created directory _YSFClients_ and compile the code. Install them Enter the created directory _YSFClients_ and compile the code. Install them
into `/usr/local/bin` into `/usr/local/bin`
~~~console ```console
$ cd YSFClients $ cd YSFClients
$ make -j4 $ make -j4
$ sudo make install $ sudo make install
~~~ ```
### Configuration ### Configuration
Copy the default configuration file into `/etc` Copy the default configuration file into `/etc`
~~~console ```console
$ sudo cp YSFGateway/YSFGateway.ini /etc/ $ sudo cp YSFGateway/YSFGateway.ini /etc/
~~~ ```
and edit the file. Here are some excerpts of mine: and edit the file. Here are some excerpts of mine:
~~~ini ```ini
# file: "/etc/YSFGateway.ini" # file: "/etc/YSFGateway.ini"
[General] [General]
Callsign=OE7DRT Callsign=OE7DRT
@ -806,7 +806,7 @@ YSF2P25Port=42015
Enable=0 Enable=0
Rooms=./FCSRooms.txt Rooms=./FCSRooms.txt
Port=42001 Port=42001
~~~ ```
This is **not the full** file, but pretty much of it. Adopt to your needs but 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. 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 Change `Daemon=0` in the configuration file for the test and run
~~~console ```console
$ sudo -u mmdvm YSFGateway /etc/YSFGateway.ini $ sudo -u mmdvm YSFGateway /etc/YSFGateway.ini
~~~ ```
You should see yourself in the dashboard and also the screen should print 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`. 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` Create the unit file `/etc/systemd/system/ysfgateway.service`
~~~ini ```ini
# file: "/etc/systemd/system/ysfgateway.service" # file: "/etc/systemd/system/ysfgateway.service"
[Unit] [Unit]
Description=YSFGateway Service Description=YSFGateway Service
@ -845,14 +845,14 @@ Restart=on-abnormal
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
~~~ ```
Start and enable the service. Start and enable the service.
~~~console ```console
$ sudo systemctl daemon-reload $ sudo systemctl daemon-reload
$ sudo systemctl enable --now ysfgateway.service $ sudo systemctl enable --now ysfgateway.service
~~~ ```
## ircDDBGateway (D-STAR) ## 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?) In our `~/git` directory (where else?)
~~~console ```console
$ git clone git@github.com:g4klx/ircDDBGateway.git $ git clone git@github.com:g4klx/ircDDBGateway.git
~~~ ```
### Compile the code and install the programs ### 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 I like to use `/var/log/mmdvm`, `/usr/local/bin` and `/usr/local/etc` for
example... example...
~~~console ```console
$ cd ircDDBGateway $ cd ircDDBGateway
$ make -j4 $ make -j4
$ sudo make install $ sudo make install
~~~ ```
### Configuration ### Configuration
@ -896,7 +896,7 @@ These are the files that I use at the moment, changes may be done if needed.
### /etc/ircddbgateway ### /etc/ircddbgateway
~~~ini ```ini
# file: "/etc/ircddbgateway" # file: "/etc/ircddbgateway"
gatewayType=1 gatewayType=1
# gatewayType=0 is the default, but Pi-Star uses 1 here # gatewayType=0 is the default, but Pi-Star uses 1 here
@ -1089,7 +1089,7 @@ mobileGPSAddress=127.0.0.1
mobileGPSPort=7834 mobileGPSPort=7834
windowX=-1 windowX=-1
windowY=-1 windowY=-1
~~~ ```
I wasn't aware what numbers need to be set on _gatewayType_ or _repeaterType_, 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 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">}} {{< highlight cpp "linenos=table,hl_lines=2,linenostart=64">}}
enum HW_TYPE { enum HW_TYPE {
HW_HOMEBREW, HW_HOMEBREW,
HW_ICOM, HW_ICOM,
HW_DUMMY HW_DUMMY
}; };
{{< /highlight >}} {{< /highlight >}}
{{< highlight cpp "linenos=table,hl_lines=3,linenostart=130">}} {{< highlight cpp "linenos=table,hl_lines=3,linenostart=130">}}
enum GATEWAY_TYPE { enum GATEWAY_TYPE {
GT_REPEATER, GT_REPEATER,
GT_HOTSPOT, GT_HOTSPOT,
GT_DONGLE, GT_DONGLE,
GT_STARNET GT_STARNET
}; };
{{< /highlight >}} {{< /highlight >}}
@ -1134,7 +1134,7 @@ be set to
Adopt those changes in `/etc/timeserver`. Adopt those changes in `/etc/timeserver`.
~~~ini ```ini
# file: "/etc/timeserver" # file: "/etc/timeserver"
callsign=N0SIGN callsign=N0SIGN
sendA=0 sendA=0
@ -1148,13 +1148,13 @@ format=1
interval=2 interval=2
windowX=0 windowX=0
windowY=0 windowY=0
~~~ ```
## First run ## First run
~~~console ```console
$ sudo -u mmdvm ircddbgatewayd $ sudo -u mmdvm ircddbgatewayd
~~~ ```
Abort with `CTRL + C` when done. 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 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/...` need adjustement, so we create them directly with `sudo vim /etc/systemd/system/...`
~~~ini ```ini
# file: "/etc/systemd/system/ircddbgateway.service" # file: "/etc/systemd/system/ircddbgateway.service"
[Unit] [Unit]
Description=D-STAR Gateway Daemon Description=D-STAR Gateway Daemon
@ -1176,9 +1176,9 @@ Restart=on-abort
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
~~~ ```
~~~ini ```ini
# file: "/etc/systemd/system/timeserver.service" # file: "/etc/systemd/system/timeserver.service"
[Unit] [Unit]
Description=Timeserver (ircDDBGateway) Daemon Description=Timeserver (ircDDBGateway) Daemon
@ -1194,15 +1194,15 @@ Restart=on-abort
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
~~~ ```
Enable the services Enable the services
~~~console ```console
$ sudo systemctl daemon-reload $ sudo systemctl daemon-reload
$ sudo systemctl enable --now ircddbgateway.service $ sudo systemctl enable --now ircddbgateway.service
$ sudo systemctl enable --now timeserver.service $ sudo systemctl enable --now timeserver.service
~~~ ```
## The hotspot works ## The hotspot works
@ -1220,11 +1220,11 @@ electro-magnetic stream in the air.
Install some needed packages Install some needed packages
~~~console ```console
$ sudo apt install python3-websockets python3-pip $ sudo apt install python3-websockets python3-pip
$ sudo pip3 install ansi2html $ sudo pip3 install ansi2html
$ sudo apt install python3-gpiozero python3-psutil python3-serial $ sudo apt install python3-gpiozero python3-psutil python3-serial
~~~ ```
Refer to the [installation instructions](https://github.com/dg9vh/MMDVMHost-Websocketboard#installation) Refer to the [installation instructions](https://github.com/dg9vh/MMDVMHost-Websocketboard#installation)
on the repository for more information and the full instructions. 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 Allow the _logtailer_ program access to _MMDVMHost_ with `sudo visudo` and add
this line to the user section of the sudoers file: this line to the user section of the sudoers file:
~~~plain ```plain
www-data ALL=(ALL) NOPASSWD: /usr/local/bin/MMDVMHost www-data ALL=(ALL) NOPASSWD: /usr/local/bin/MMDVMHost
~~~ ```
#### Webserver or built-in solution? #### 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 Install nginx with php support with
~~~console ```console
$ sudo apt install nginx php-fpm $ sudo apt install nginx php-fpm
~~~ ```
##### Configure and limit webserver ##### 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 that we create in the document root of our webserver
(`sudo touch /var/www/html/index.html`). (`sudo touch /var/www/html/index.html`).
~~~nginx ```nginx
# file: "/etc/nginx/sites-enabled/default" # file: "/etc/nginx/sites-enabled/default"
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s; limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s;
@ -1315,15 +1315,15 @@ server {
# Virtual Host configuration for example.com # Virtual Host configuration for example.com
# #
# [...] # [...]
~~~ ```
### Get the code ### Get the code
~~~console ```console
$ sudo mkdir /opt/MMDVMDash $ sudo mkdir /opt/MMDVMDash
$ sudo chown pi /opt/MMDVMDash $ sudo chown pi /opt/MMDVMDash
$ git clone --recursive git@github.com:dg9vh/MMDVMHost-Websocketboard.git /opt/MMDVMDash $ git clone --recursive git@github.com:dg9vh/MMDVMHost-Websocketboard.git /opt/MMDVMDash
~~~ ```
We saved the dashboard repository now in `/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) Open `logtailer.ini`, this should look something like this (shrinked together)
~~~ini ```ini
# file: "/opt/MMDVMDash/logtailer.ini" # file: "/opt/MMDVMDash/logtailer.ini"
[DEFAULT] [DEFAULT]
Host=0.0.0.0 Host=0.0.0.0
@ -1357,11 +1357,11 @@ BinaryName1=MMDVMHost
BinaryName2=ircddbgatewayd BinaryName2=ircddbgatewayd
BinaryName3=YSFGateway BinaryName3=YSFGateway
BinaryName4=timeserverd BinaryName4=timeserverd
~~~ ```
Next, open `/opt/MMDVMDash/html/js/config.js` and modify it to your needs Next, open `/opt/MMDVMDash/html/js/config.js` and modify it to your needs
~~~js ```js
// file: "/opt/MMDVMDash/html/js/config.js" // file: "/opt/MMDVMDash/html/js/config.js"
var config_struc_ver = 20210501.1; var config_struc_ver = 20210501.1;
var qrz = 1; var qrz = 1;
@ -1379,24 +1379,20 @@ var services = 1;
var about = 0; var about = 0;
var useClientTimezone = 1; var useClientTimezone = 1;
var showBMTGLink = 0; var showBMTGLink = 0;
var qrz_blacklist = [ var qrz_blacklist = ["N0CALL"];
"N0CALL", var dashboard_blacklist = ["MY0CALL"];
]
var dashboard_blacklist = [
"MY0CALL",
]
var useDarkTheme = 0; var useDarkTheme = 0;
var customHeadlineText = ``; var customHeadlineText = ``;
var customText = ``; var customText = ``;
~~~ ```
### Create and enable a system service ### Create and enable a system service
~~~console ```console
$ sudo cp systemd/logtailer.service /etc/systemd/system/ $ sudo cp systemd/logtailer.service /etc/systemd/system/
$ sudo systemctl daemon-reload $ sudo systemctl daemon-reload
$ sudo systemctl enable --now logtailer.service $ sudo systemctl enable --now logtailer.service
~~~ ```
## Enjoy the multi-mode hotspot ## Enjoy the multi-mode hotspot

@ -2,20 +2,19 @@
title: Mounting disk images on linux title: Mounting disk images on linux
aliases: /posts/2022-08-06-mounting-disk-images-on-linux aliases: /posts/2022-08-06-mounting-disk-images-on-linux
summary: > summary: >
I sometimes create full-disk-images of USB drives or hard drives and in 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. rare cases I have to look into them. This is how I usually do that.
date: 2022-08-06T21:02:21+02:00 date: 2022-08-06T21:02:21+02:00
lastmod: 2023-12-26T13:25:16+0000 lastmod: 2024-09-28T23:48:06+0000
categories: [computerstuff] 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 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 $ 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 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 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_: When uncompressed, look at the partition table with _fdisk_:
~~~console ```console
$ fdisk -l disk.img $ fdisk -l disk.img
Festplatte disk.img: 7,4 GiB, 7948206080 Bytes, 15523840 Sektoren Festplatte disk.img: 7,4 GiB, 7948206080 Bytes, 15523840 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes Einheiten: Sektoren von 1 * 512 = 512 Bytes
@ -36,7 +35,7 @@ Festplattenbezeichner: 0x1b7f4bbb
Gerät Boot Anfang Ende Sektoren Größe Kn Typ Gerät Boot Anfang Ende Sektoren Größe Kn Typ
disk.img1 8192 532479 524288 256M c W95 FAT32 (LBA) disk.img1 8192 532479 524288 256M c W95 FAT32 (LBA)
disk.img2 532480 15523839 14991360 7,1G 83 Linux disk.img2 532480 15523839 14991360 7,1G 83 Linux
~~~ ```
We will refer to this output later again. 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 ### Creating and mounting the loop device
~~~console ```console
$ sudo losetup --partscan --find --show disk.img $ sudo losetup --partscan --find --show disk.img
/dev/loop1 /dev/loop1
~~~ ```
The second line is the output of the program. I used losetup already today, so 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. 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 Mount the new virtual loop device to the directory that you like. This is
`~/tmp` in my case. `~/tmp` in my case.
~~~console ```console
$ sudo mount /dev/loop1p2 tmp $ sudo mount /dev/loop1p2 tmp
~~~ ```
### Removing the loop device ### Removing the loop device
~~~console ```console
$ sudo umount tmp $ sudo umount tmp
$ sudo losetup -d /dev/loop1 $ sudo losetup -d /dev/loop1
~~~ ```
## Using `fdisk` and `mount` ## Using `fdisk` and `mount`
@ -83,15 +82,15 @@ We calculate the needed offset like: `532480 * 512 = 272629760`
And the resulting command is And the resulting command is
~~~console ```console
$ sudo mount -o loop,offset=272629760 disk.img tmp/ $ sudo mount -o loop,offset=272629760 disk.img tmp/
~~~ ```
A remount is simple as A remount is simple as
~~~console ```console
$ sudo umount tmp $ sudo umount tmp
~~~ ```
## When do you need this stuff ## When do you need this stuff

@ -1,15 +1,14 @@
--- ---
title: Using NFS shares on a Raspberry Pi title: Using NFS shares on a Raspberry Pi
aliases: aliases:
- /posts/2022-08-07-using-nfs-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 - /posts/2022-08-07-using-nfs-shares-on-a-raspberry-pi
summary: > summary: >
A quick and short guide on how to setup an NFS share on a A quick and short guide on how to setup an NFS share on a
Raspberry Pi. Raspberry Pi.
date: 2022-08-07T07:19:54+02:00 date: 2022-08-07T07:19:54+02:00
categories: [computerstuff] 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. 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 ## Installation and configuration
~~~console ```console
$ sudo apt update $ sudo apt update
$ sudo apt install nfs-kernel-server $ sudo apt install nfs-kernel-server
~~~ ```
~~~console ```console
$ sudo vim /etc/exports $ sudo vim /etc/exports
~~~ ```
We have to export our directories in the file `/etc/exports` on our Raspberry Pi. We have to export our directories in the file `/etc/exports` on our Raspberry Pi.
~~~plain ```plain
# file: "/etc/exports" # file: "/etc/exports"
/var/www/html 192.168.1.123(rw,async,all_squash,insecure,no_subtree_check,anonuid=1000,anongid=1000) /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) /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. 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. Also edit `/etc/hosts.allow` to grant access for your network or host.
~~~plain ```plain
# file: "/etc/hosts.allow" # file: "/etc/hosts.allow"
ALL: 192.168.1.123 ALL: 192.168.1.123
~~~ ```
After we changed the contents of `/etc/exports` we have to run the `exportfs` After we changed the contents of `/etc/exports` we have to run the `exportfs`
command and restart the nfs-server. command and restart the nfs-server.
~~~console ```console
$ sudo exportfs -ra $ sudo exportfs -ra
$ sudo systemctl restart nfs-server.service $ sudo systemctl restart nfs-server.service
~~~ ```
## Accessing the directories ## Accessing the directories
@ -71,16 +70,16 @@ only **root** is allowed to use mount without an entry in `/etc/fstab`.
So we run So we run
~~~console ```console
$ sudo mount 192.168.1.124:/var/www/html tmp/ $ 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 and if it does not print anything, all is good. On the Raspberry Pi you should
see a new line looking like: 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) raspi4 rpc.mountd[30223]: authenticated mount request from 192.168.1.123:894 for /opt/MMDVMDash/html (/opt/MMDVMDash/html)
~~~ ```
{{< alert circle-info >}} {{< alert circle-info >}}
**To eliminate the confusion:** I've mounted `/var/www/html` but the log shows **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. 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) 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 ## Creating entries in our `/etc/fstab` file
First, let us create a directory on our laptop. First, let us create a directory on our laptop.
~~~console ```console
$ mkdir -p ~/raspi4/html $ mkdir -p ~/raspi4/html
~~~ ```
~~~plain ```plain
# file: "/etc/fstab" # 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 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 After changing that file, make sure to reload Systemd with
`sudo systemctl daemon-reload`. `sudo systemctl daemon-reload`.

@ -22,9 +22,9 @@ used that as my starting point.
First of all, install NetworkManager-l2tp-gnome: First of all, install NetworkManager-l2tp-gnome:
~~~console ```console
$ sudo dnf install NetworkManager-l2tp-gnome $ sudo dnf install NetworkManager-l2tp-gnome
~~~ ```
After that, create the new VPN tunnel in `Settings``Network``VPN`. 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. static HAMNET IP address.
- Original article found on HAMNET - 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 - 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`. Create a textfile with the ending `.reg` like `openlogs.reg`.
~~~reg ```reg
Windows Registry Editor Version 5.00 Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.log] [HKEY_CLASSES_ROOT\.log]
@="txtfile" @="txtfile"
"Content Type"="text/plain" "Content Type"="text/plain"
~~~ ```
After saving the file, import it into the windows registry like this: After saving the file, import it into the windows registry like this:
~~~console ```console
$ wine regedit openlogs.reg $ wine regedit openlogs.reg
~~~ ```
This should work instantly. 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: Also create a textfile with the ending `.reg`, but fill it with these contents:
~~~reg ```reg
Windows Registry Editor Version 5.00 Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.log] [HKEY_CLASSES_ROOT\.log]
@ -84,13 +84,13 @@ Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\logfile\shell\open\command] [HKEY_CLASSES_ROOT\logfile\shell\open\command]
@="\"winebrowser\" \"%1\"" @="\"winebrowser\" \"%1\""
~~~ ```
Load this into the registry: Load this into the registry:
~~~console ```console
$ wine regedit openlogs_native.reg $ wine regedit openlogs_native.reg
~~~ ```
Also this should work instantly. Opening the logs should open your application Also this should work instantly. Opening the logs should open your application
on your linux computer that usually opens `.log` files. That is 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 Click on the green <kbd>+ Add</kbd> button on the bottom right and create the
new PPP interface with the following specs: new PPP interface with the following specs:
| Settings name | value | | Settings name | value |
| :--- | :--- | | :--------------------- | :--------------------------------- |
| Link Type | **L2TP** | | Link Type | **L2TP** |
| Link interface(s) | **WAN** | | Link interface(s) | **WAN** |
| Username | **N0CALL** (your callsign usually) | | Username | **N0CALL** (your callsign usually) |
| Password | (your password) | | Password | (your password) |
| Local IP | (leave empty) | | Local IP | (leave empty) |
| Gateway IP or hostname | **vpn.afu.rwth-aachen.de** | | 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 <!-- 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 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. Then click on the new interface and set it up.
| Settings name | value | | Settings name | value |
| :--- | :--- | | :---------------------- | :---------------------------------------- |
| Description | **VPN_HAMNET** (a meaningful description) | | Description | **VPN_HAMNET** (a meaningful description) |
| IPv4 Configuration Type | **L2TP** | | IPv4 Configuration Type | **L2TP** |
| IPv6 Configuration Type | **None** (or SLAAC if you use IPv6) | | IPv6 Configuration Type | **None** (or SLAAC if you use IPv6) |
| Username | **N0CALL** (your callsign usually) | | Username | **N0CALL** (your callsign usually) |
| Password | (your password) | | Password | (your password) |
| Remote IP address | **vpn.afu.rwth-aachen.de** | | Remote IP address | **vpn.afu.rwth-aachen.de** |
![screenshot showing interface configuration](04_interface-configuration.png) ![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>. You see three fields, <kbd>Number</kbd>, <kbd>Type</kbd> and <kbd>Value</kbd>.
| Number | Type | Value | | Number | Type | Value |
| :--- | :--- | :--- | | :----- | :------- | :------------------------------------------ |
| `121` | `String` | `09:2c:00:c0:a8:0a:01:0a:2c:80:c0:a8:0a:01` | | `121` | `String` | `09:2c:00:c0:a8:0a:01:0a:2c:80:c0:a8:0a:01` |
{{< alert >}} {{< alert >}}
Do not copy this configuration into your pfSense. This setting is somewhat Do not copy this configuration into your pfSense. This setting is somewhat
@ -114,7 +114,7 @@ your own configuration!
Create your own configuration with help of this script: Create your own configuration with help of this script:
~~~bash ```bash
#!/bin/bash #!/bin/bash
check_ip(){ check_ip(){
local n=0 val=1 local n=0 val=1
@ -162,7 +162,7 @@ while [ $# -gt 0 ] ; do
[ $# -gt 0 ] && echo -n ":" [ $# -gt 0 ] && echo -n ":"
done done
echo echo
~~~ ```
Source: [mgergi.hu](https://mgergi.hu/en/it-blog/static-route-dhcp-pfsense) 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! Replace `192.168.10.1` with your routers IP address!
~~~console ```console
$ hexroute.sh 44.0.0.0/9 192.168.10.1 $ hexroute.sh 44.0.0.0/9 192.168.10.1
09:2c:00:c0:a8:0a:01 09:2c:00:c0:a8:0a:01
$ hexroute.sh 44.128.0.0/10 192.168.10.1 $ hexroute.sh 44.128.0.0/10 192.168.10.1
0a:2c:80:c0:a8:0a:01 0a:2c:80:c0:a8:0a:01
~~~ ```
You see, you get two values. All you have to do is concatenate those two values 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> 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`: 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. # A list of options to request from the DHCP server.
#option domain_name_servers, domain_name, domain_search, host_name #option domain_name_servers, domain_name, domain_search, host_name
#option classless_static_routes #option classless_static_routes
# Respect the network MTU. This is applied to DHCP routes. # Respect the network MTU. This is applied to DHCP routes.
option interface_mtu option interface_mtu
~~~ ```
and let **dhcpcd** add the static routes automatically. Create the file and let **dhcpcd** add the static routes automatically. Create the file
`/etc/dhcpcd.exit-hook` and add the routes manually with this script: `/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.0.0.0/9 gw 192.168.10.1
/sbin/route add -net 44.128.0.0/10 gw 192.168.10.1 /sbin/route add -net 44.128.0.0/10 gw 192.168.10.1
~~~ ```
## More resources ## More resources
* https://support.aa.net.uk/L2TP_Client:_pfSense - https://support.aa.net.uk/L2TP_Client:_pfSense
* https://id3145.com/2017/blog/5-pfSense-Add-Static-Routes-to-pfSense-DHCP-Clients.html - 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.iana.org/assignments/bootp-dhcp-parameters/
* https://www.rfc-editor.org/rfc/rfc3442.html - 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. 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...""" But I use the other interface for internet because of speed..."""
date = "2022-11-24T20:15:44+02:00" date = "2022-11-24T20:15:44+02:00"
lastmod = '2024-04-06T05:40:08+0000' lastmod = '2024-09-28T23:48:06+0000'
categories = ["computerstuff"] categories = ["computerstuff"]
tags = ["linux","networking", "networkmanager"] tags = ["linux","networking", "networkmanager"]
@ -15,13 +15,13 @@ tags = ["linux","networking", "networkmanager"]
Check for connection names. Check for connection names.
~~~console ```console
$ nmcli connection $ nmcli connection
NAME UUID TYPE DEVICE > NAME UUID TYPE DEVICE >
MagentaNET 923ab10b-be81-4668-9aab-************ wifi wlx00259ce03> MagentaNET 923ab10b-be81-4668-9aab-************ wifi wlx00259ce03>
DreiNET b2bcc61c-19df-41f0-9790-************ wifi wlo1 > 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: Start editing the affected connection:
@ -42,14 +42,14 @@ nmcli> save
nmcli> quit nmcli> quit
{{< /highlight >}} {{< /highlight >}}
~~~console ```console
$ sudo systemctl restart NetworkManager $ sudo systemctl restart NetworkManager
~~~ ```
Check routing table with Check routing table with
~~~console ```console
$ ip route $ ip route
~~~ ```
Source: <https://dev.to/emamirazavi/how-to-set-metric-in-networkmanager-system-4525> 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: summary = """Another thing I forget constantly when using git:
Changing the remote URL of a submodule""" Changing the remote URL of a submodule"""
date = "2022-12-01T20:08:17+01:00" date = "2022-12-01T20:08:17+01:00"
lastmod = '2023-11-18T22:01:29+0000' lastmod = '2024-09-28T23:48:06+0000'
categories = ["computerstuff"] categories = ["computerstuff"]
tags = ["git"] 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. 1. Modify the <kbd>.gitmodules</kbd> file in the repo root to use the new URL.
2. Delete the submodule folder in the repo 2. Delete the submodule folder in the repo
~~~console ```console
$ rm -rf .git/modules/<submodule> $ rm -rf .git/modules/<submodule>
~~~ ```
3. Delete the submodule folder in the working directory 3. Delete the submodule folder in the working directory
~~~console ```console
$ rm -rf <submodule> $ rm -rf <submodule>
~~~ ```
4. Run 4. Run
~~~console ```console
$ git submodule sync $ git submodule sync
~~~ ```
5. And run 5. And run
~~~console ```console
$ git submodule update $ git submodule update
~~~ ```
More complete info can be found elsewhere: 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 summary = """This is how I install hugo nowadays. Although that routine might
change anytime.""" change anytime."""
date = "2023-01-24T22:36:25+0100" date = "2023-01-24T22:36:25+0100"
lastmod = '2024-03-31T11:26:26+0000' lastmod = '2024-09-28T23:48:06+0000'
categories = ["computerstuff"] categories = ["computerstuff"]
tags = ["linux", "server", "gohugo", "selfhost", "website-news"] tags = ["linux", "server", "gohugo", "selfhost", "website-news"]
@ -28,45 +28,45 @@ This is done on your computer.
- Install Git - Install Git
Depending on your <abbr title="Operating System">OS</abbr>, this might look Depending on your <abbr title="Operating System">OS</abbr>, this might look
like one of those: like one of those:
~~~console ```console
$ sudo apt install git $ sudo apt install git
~~~ ```
~~~console ```console
$ sudo pacman -S git $ sudo pacman -S git
~~~ ```
- Install Go version 1.18 or later - Install Go version 1.18 or later
See above for the syntax, this package may be called `golang` on some See above for the syntax, this package may be called `golang` on some
distributions (I think Ubuntu/Debian for example). distributions (I think Ubuntu/Debian for example).
- Update your PATH environment variable as described in the Go documentation - Update your PATH environment variable as described in the Go documentation
Now, that looks like this: Now, that looks like this:
~~~zsh ```zsh
if [[ -d $HOME/go ]]; then if [[ -d $HOME/go ]]; then
export GOPATH="$HOME/go" export GOPATH="$HOME/go"
path=( path=(
$GOPATH/bin $GOPATH/bin
$path $path
) )
fi fi
~~~ ```
_That is an example taken from my `.zprofile` file._ _That is an example taken from my `.zprofile` file._
### Install hugo ### Install hugo
We are still on our computer. We are still on our computer.
~~~console ```console
$ go install -tags extended github.com/gohugoio/hugo@latest $ go install -tags extended github.com/gohugoio/hugo@latest
~~~ ```
That installs the latest version of hugo into `$HOME/go/bin`. If your terminal 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... 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: From your project directory, initialise hugo modules:
~~~console ```console
$ hugo mod init github.com/<username>/<repo-name> $ hugo mod init github.com/<username>/<repo-name>
~~~ ```
Create `config/_default/module.toml` and add the following: Create `config/_default/module.toml` and add the following:
~~~toml ```toml
[[imports]] [[imports]]
path = "github.com/jpanther/congo/v2" path = "github.com/jpanther/congo/v2"
~~~ ```
Start your server using `hugo server` and the theme will be downloaded Start your server using `hugo server` and the theme will be downloaded
automatically. automatically.
@ -179,10 +179,10 @@ our computer.
Create a file `.cloudflarerc` in your `$HOME` directory that contains those two Create a file `.cloudflarerc` in your `$HOME` directory that contains those two
variables: variables:
~~~bash ```bash
apikey=*********************************-****** apikey=*********************************-******
id=******************************** id=********************************
~~~ ```
You find them in your [Cloudflare dashboard](https://dash.cloudflare.com/). You find them in your [Cloudflare dashboard](https://dash.cloudflare.com/).
Click on <kbd>Websites</kbd> and continue with clicking your domain name. 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 Now we need one last file in our git repository. Create `.git/hooks/pre-push` and
fill it with this: fill it with this:
~~~bash ```bash
#!/bin/bash #!/bin/bash
if ! [ -f ~/.cloudflarerc ] ; then if ! [ -f ~/.cloudflarerc ] ; then
@ -226,17 +226,17 @@ else
# exit with 1, so the update does not proceed, so we will know # exit with 1, so the update does not proceed, so we will know
exit 1 exit 1
fi fi
~~~ ```
I found the script on I found the script on
<https://www.supertechcrew.com/clear-cloudflare-cache-when-pushing-from-git-github-pages/> <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: Don't forget to make this script executable:
~~~console ```console
$ chmod +x .git/hooks/pre-push $ chmod +x .git/hooks/pre-push
~~~ ```
## Publish the website ## 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`: It's actually the file `website.git/hook/post-receive.d/publish`:
~~~bash ```bash
#!/usr/bin/env bash #!/usr/bin/env bash
# change these to your needs... # 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} /home/git/go/bin/hugo --gc --minify --cleanDestinationDir -s ${WORKING_DIR} -d ${PUBLIC_WWW}
rm -rf ${WORKING_DIR} rm -rf ${WORKING_DIR}
trap - exit trap - exit
~~~ ```
If you use Gitea, those repositories are per default in If you use Gitea, those repositories are per default in
`/var/lib/gitea/data/gitea-repositories/`... `/var/lib/gitea/data/gitea-repositories/`...
That is it, basically. That is it, basically.

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

Loading…
Cancel
Save