prettier..content
This commit is contained in:
parent
c6b582b1bf
commit
4b9975a63e
141 changed files with 2534 additions and 2076 deletions
|
@ -1,7 +1,6 @@
|
|||
---
|
||||
title: OE7DRT
|
||||
description: my personal website
|
||||
|
||||
---
|
||||
|
||||
This is my personal space on the internet that I use mainly to keep track on
|
||||
|
@ -9,4 +8,3 @@ different topics mainly on tech stuff like [**amateur radio**](/categories/amate
|
|||
or general [computer](/categories/computerstuff/) related topics with some
|
||||
flavour of [Linux](/tags/linux/) and [networking](/tags/networking/) (and
|
||||
a bit of [\*BSD](/tags/openbsd/))
|
||||
|
||||
|
|
|
@ -4,8 +4,7 @@ date: 2019-08-21
|
|||
coverCaption: >
|
||||
Längenfeld at the evening.
|
||||
Photo taken near [Astlehn/Fischbach](https://www.openstreetmap.org/?mlat=47.062377833333336&mlon=10.959586666666667#map=15/47.062377833333336/10.959586666666667).
|
||||
lastmod: 2024-09-22T12:53:48+0000
|
||||
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
comment: false
|
||||
|
||||
showDate: false
|
||||
|
@ -17,7 +16,6 @@ showAuthor: false
|
|||
sharingLinks: false
|
||||
|
||||
feed_exclude: true
|
||||
|
||||
---
|
||||
|
||||
## Who Am I
|
||||
|
@ -56,13 +54,13 @@ I usually participate in the following [Winlink](https://winlink.org/) nets:
|
|||
### [Winlink Wednesday](https://winlinkwednesday.net/)
|
||||
|
||||
> The original Winlink Wednesday is a weekly amateur radio digital
|
||||
net where check-ins are accomplished by using the Winlink (global
|
||||
email via amateur radio) system.
|
||||
> net where check-ins are accomplished by using the Winlink (global
|
||||
> email via amateur radio) system.
|
||||
|
||||
> The primary purpose of Winlink Wednesday is to encourage the regular
|
||||
use of the Winlink system among amateur radio operators by providing an
|
||||
opportunity to expand their skills with Winlink, and to practice them
|
||||
on a regular basis.
|
||||
> use of the Winlink system among amateur radio operators by providing an
|
||||
> opportunity to expand their skills with Winlink, and to practice them
|
||||
> on a regular basis.
|
||||
|
||||
I think this summarizes the Winlink Wednesday pretty well.
|
||||
|
||||
|
@ -73,14 +71,15 @@ This is a german speaking net currently maintained by Patrick, OE1LHP.
|
|||
To quote the groups.io description:
|
||||
|
||||
> This group is for announcements and information concerning the Winlink Net "WLNET-OE".
|
||||
It represents some kind of Blackboard for those who want to participate and learn about
|
||||
the use of Winlink in not only emergency communication situations.
|
||||
Amateur radio operators from in and outside of Austria are encouraged to join the sessions.
|
||||
To be clear: everyone is welcome, but keep in mind that the primary language will be German.
|
||||
> It represents some kind of Blackboard for those who want to participate and learn about
|
||||
> the use of Winlink in not only emergency communication situations.
|
||||
> Amateur radio operators from in and outside of Austria are encouraged to join the sessions.
|
||||
> To be clear: everyone is welcome, but keep in mind that the primary language will be German.
|
||||
|
||||
I try to participate every week.
|
||||
|
||||
{{< comment >}}
|
||||
|
||||
### [FFWN](https://w0rmt.net/ffwn/)
|
||||
|
||||
Well, I'm not so active on Mastodon (in terms of writing posts) but I
|
||||
|
@ -89,9 +88,9 @@ occassionally participate in the net when I find the time.
|
|||
Also to quote the website:
|
||||
|
||||
> For those operators who are active on federated social media (the “Fediverse”;
|
||||
i.e., Mastodon), there is a weekly Winlink net called the #FediFridayWinlinkNet
|
||||
(or #FFWN). Any amateur operators are welcome to check-in and participate, and
|
||||
also to take turns serving as net control! And be sure to follow #FFWN on Mastodon.
|
||||
> i.e., Mastodon), there is a weekly Winlink net called the #FediFridayWinlinkNet
|
||||
> (or #FFWN). Any amateur operators are welcome to check-in and participate, and
|
||||
> also to take turns serving as net control! And be sure to follow #FFWN on Mastodon.
|
||||
|
||||
Find out more by following the hastag [#FFWN](https://mastodon.radio/tags/FFWN)
|
||||
(example link -- follow it on an instance that you like/prefer).
|
||||
|
@ -126,9 +125,9 @@ to send me emails.
|
|||
Feel free to encrypt your message with OpenPGP and make sure you got this
|
||||
fingerprint:
|
||||
|
||||
~~~
|
||||
```
|
||||
D49A 3CE2 CCF7 2668 4D98 9A31 BC9D 6AE1 A3BE 169A
|
||||
~~~
|
||||
```
|
||||
|
||||
My public key is on [keys.openpgp.org][key] or on [my website][web] (\~4KB).
|
||||
|
||||
|
@ -149,4 +148,3 @@ GNU/Linux is the host system that serves the websites with Apache at _(celeste.)
|
|||
Some scripts still run on the old host at _bor.oe7drt.com_ which runs OpenBSD 7.5.
|
||||
Moving these script to the Linux host is already in progress (when time allows) and
|
||||
I don't think I will upgrade the host to OpenBSD 7.6.
|
||||
|
||||
|
|
|
@ -7,9 +7,7 @@ showReadingTime: false
|
|||
showWordCount: false
|
||||
|
||||
feed_exclude: true
|
||||
|
||||
---
|
||||
|
||||
I will not write reviews of my equipment here, this page lists my equipment only.
|
||||
The publishing dates represent usually the day I got (bought) the stuff.
|
||||
|
||||
|
|
|
@ -11,10 +11,8 @@ showPagination: false
|
|||
|
||||
feed_exclude: true
|
||||
weight: 30
|
||||
|
||||
---
|
||||
|
||||
A few of my used notebooks are listed below.
|
||||
Descriptions and/or opinions may not be complete -- they may not have
|
||||
been used only for amateur radio.
|
||||
|
||||
|
|
|
@ -1,16 +1,14 @@
|
|||
---
|
||||
title: Apple MacBook Pro Mid 2015
|
||||
summary:
|
||||
summary:
|
||||
date: 2015-09-29
|
||||
# coverCaption:
|
||||
# lastmod:
|
||||
# coverCaption:
|
||||
# lastmod:
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
This was my photography laptop running Lightroom and Photoshop back then.
|
||||
It is still a good choice: that's why I replaced the battery in 2024.
|
||||
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
---
|
||||
title: Asus X73SV-TY152V
|
||||
summary:
|
||||
summary:
|
||||
date: 2011-09-29
|
||||
# coverCaption:
|
||||
# lastmod:
|
||||
# coverCaption:
|
||||
# lastmod:
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
I think this was my first laptop with hybrid graphics (Nvidia) and if
|
||||
|
@ -21,4 +20,3 @@ Windows versions.
|
|||
|
||||
[bf2]: https://en.wikipedia.org/wiki/Battlefield_2
|
||||
[Loxone]: https://www.loxone.com/
|
||||
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
---
|
||||
title: HP Elitebook 830 G6
|
||||
summary:
|
||||
summary:
|
||||
date: 2024-05-25
|
||||
# coverCaption:
|
||||
#lastmod:
|
||||
# coverCaption:
|
||||
#lastmod:
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
I got this one specifically for my Winlink stuff so I don't have
|
||||
|
@ -22,4 +21,3 @@ and similar protections).
|
|||
|
||||
These protections are one big reason that will keep me from buying
|
||||
an HP laptop again.
|
||||
|
||||
|
|
|
@ -2,16 +2,14 @@
|
|||
title: Lenovo T420
|
||||
summary: A tough notebook from Lenovo. It was quite decent when it came out.
|
||||
date: 2017-07-22
|
||||
# coverCaption:
|
||||
lastmod: 2024-06-15T21:34:37+0000
|
||||
# coverCaption:
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
i5 quad core
|
||||
|
||||
It's still usable but playing the VP9 codecs (youtube) in fullscreen can lag sometimes.
|
||||
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
---
|
||||
title: Lenovo T60
|
||||
summary:
|
||||
summary:
|
||||
date: 2014-02-10
|
||||
# coverCaption:
|
||||
# lastmod:
|
||||
# coverCaption:
|
||||
# lastmod:
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
I don't use this anymore. It has a broken screen so it is packed into
|
||||
|
@ -18,4 +17,3 @@ It ran primarily FreeBSD mostly without X. I used this often when I had
|
|||
to sleep at other locations for work to check my emails and read through
|
||||
some newsgroups. (I do not need a computer for my work so I used this at
|
||||
the evenings when I was back in the appartement.)
|
||||
|
||||
|
|
|
@ -2,13 +2,12 @@
|
|||
title: Lenovo X1 Carbon Gen7
|
||||
summary: Compact notebook with solid hardware for power users.
|
||||
date: 2023-05-09
|
||||
# coverCaption:
|
||||
# coverCaption:
|
||||
# lastmod: 2024-05-09T14:26:01+0000
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
linux machine... pat, winlink, had openbsd and freebsd on it for a while...
|
||||
|
@ -21,4 +20,3 @@ to keep them up to date.
|
|||
|
||||
I would like to have more power and RAM on this machine (more power cores)
|
||||
but hey, it is really small so I will live with it...
|
||||
|
||||
|
|
|
@ -2,13 +2,12 @@
|
|||
title: Microsoft Surface 2 Go
|
||||
summary: Small tablet that runs Windows 10 (11).
|
||||
date: 2022-11-11
|
||||
# coverCaption:
|
||||
# coverCaption:
|
||||
# lastmod: 2024-05-09T14:25:51+0000
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
I currently run Fedora Linux on it -- because the touch interface
|
||||
|
@ -20,12 +19,11 @@ hate lagging computers :winking_face_with_tongue:
|
|||
|
||||
Some data:
|
||||
|
||||
| weight | description |
|
||||
| :--- | :--- |
|
||||
| 541g | tablet alone |
|
||||
| 561g | tablet with pen |
|
||||
| 786g | tablet with keyboard |
|
||||
| weight | description |
|
||||
| :----- | :--------------------------- |
|
||||
| 541g | tablet alone |
|
||||
| 561g | tablet with pen |
|
||||
| 786g | tablet with keyboard |
|
||||
| 806g | tablet with keyboard and pen |
|
||||
|
||||
I would not buy one again -- it is way too slow to be used by normal people.
|
||||
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
---
|
||||
title: Toshiba Satellite Pro P100
|
||||
summary:
|
||||
summary:
|
||||
date: 2007-11-01
|
||||
# coverCaption:
|
||||
# lastmod:
|
||||
# coverCaption:
|
||||
# lastmod:
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
Used for some basic internet tasks like reading websites and PDFs,
|
||||
|
@ -16,4 +15,3 @@ checking mails and editing office documents.
|
|||
|
||||
This one shut itself down very often when it got too hot. It was
|
||||
really annoying.
|
||||
|
||||
|
|
|
@ -2,17 +2,16 @@
|
|||
title: Tuxedo Polaris 17
|
||||
summary: shit laptop - shit company
|
||||
date: 2021-04-30
|
||||
# coverCaption:
|
||||
# coverCaption:
|
||||
# lastmod: 2024-05-09T14:40:37+0000
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
Bought because of Linux. Tuxedo provides only very old LTS distributions like
|
||||
fu***** Ubuntu 22.04...
|
||||
fu**\*** Ubuntu 22.04...
|
||||
|
||||
Keyboard drivers must be installed in order to use backlight...
|
||||
|
||||
|
@ -20,4 +19,3 @@ lots of problems with that device - also on other installations of other distros
|
|||
|
||||
I still use this for cracking passwords with john or hashcat and gaming with Steam.
|
||||
It is also powerful enough to run a view virtual machines.
|
||||
|
||||
|
|
|
@ -11,7 +11,4 @@ showPagination: false
|
|||
|
||||
feed_exclude: true
|
||||
weight: 20
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
|
|
@ -11,7 +11,4 @@ showPagination: false
|
|||
|
||||
feed_exclude: true
|
||||
weight: 20
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
|
|
@ -11,7 +11,4 @@ showPagination: false
|
|||
|
||||
feed_exclude: true
|
||||
weight: 20
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: Inateck 40l
|
||||
summary:
|
||||
summary:
|
||||
date: 2021-06-30
|
||||
|
||||
showBreadcrumbs: true
|
||||
|
@ -13,8 +13,4 @@ showWordCount: false
|
|||
# site_exclude: true
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: Kombat UK Viking 60l
|
||||
summary:
|
||||
summary:
|
||||
date: 2020-09-01
|
||||
|
||||
showBreadcrumbs: true
|
||||
|
@ -13,8 +13,4 @@ showWordCount: false
|
|||
# site_exclude: true
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: The North Face Jester 26l
|
||||
summary:
|
||||
summary:
|
||||
date: 2020-10-16
|
||||
|
||||
showBreadcrumbs: true
|
||||
|
@ -13,8 +13,4 @@ showWordCount: false
|
|||
# site_exclude: true
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: Skysper Daypack 20l
|
||||
summary:
|
||||
summary:
|
||||
date: 2024-05-11
|
||||
|
||||
showBreadcrumbs: true
|
||||
|
@ -13,8 +13,4 @@ showWordCount: false
|
|||
# site_exclude: true
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: TT Modular Pack 30l
|
||||
summary:
|
||||
summary:
|
||||
date: 2024-05-05
|
||||
|
||||
showBreadcrumbs: true
|
||||
|
@ -13,8 +13,4 @@ showWordCount: false
|
|||
# site_exclude: true
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: TT Modular Trooper Pack 55l
|
||||
summary:
|
||||
summary:
|
||||
date: 2023-06-21
|
||||
|
||||
showBreadcrumbs: true
|
||||
|
@ -13,8 +13,4 @@ showWordCount: false
|
|||
# site_exclude: true
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: TT Urban Tac Pack 22l
|
||||
summary:
|
||||
summary:
|
||||
date: 2024-08-25
|
||||
|
||||
showBreadcrumbs: true
|
||||
|
@ -13,8 +13,4 @@ showWordCount: false
|
|||
# site_exclude: true
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -11,7 +11,4 @@ showPagination: false
|
|||
|
||||
feed_exclude: true
|
||||
weight: 20
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: Manual coffee grinder
|
||||
summary:
|
||||
summary:
|
||||
date: 2024-09-22T22:54:30+02:00
|
||||
|
||||
showBreadcrumbs: true
|
||||
|
@ -13,8 +13,4 @@ showWordCount: false
|
|||
# site_exclude: true
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: Titanium French Press
|
||||
summary:
|
||||
summary:
|
||||
date: 2024-09-22T22:54:21+02:00
|
||||
|
||||
showBreadcrumbs: true
|
||||
|
@ -13,8 +13,4 @@ showWordCount: false
|
|||
# site_exclude: true
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -12,10 +12,8 @@ showPagination: false
|
|||
|
||||
feed_exclude: true
|
||||
weight: 10
|
||||
|
||||
---
|
||||
|
||||
|
||||
## (Hot) outdoor food
|
||||
|
||||
A hot meal is sometimes needed and I haven't tested much of these -- I bought
|
||||
|
@ -57,4 +55,3 @@ from Blasercafé.
|
|||
I do have a titanium French Press and a hand mill -- a hot coffee is the best
|
||||
thing to enjoy somewhere outside of civilisation (add some Speck and Brötle to it
|
||||
and it is absolutely perfect!).
|
||||
|
||||
|
|
|
@ -11,7 +11,4 @@ showPagination: false
|
|||
|
||||
feed_exclude: true
|
||||
weight: 20
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
|
|
@ -11,7 +11,4 @@ showPagination: false
|
|||
|
||||
feed_exclude: true
|
||||
weight: 10
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
|
|
@ -20,7 +20,6 @@ showWordCount: false
|
|||
|
||||
feed_exclude: true
|
||||
weight: 40
|
||||
|
||||
---
|
||||
|
||||
{{< alert >}}
|
||||
|
|
|
@ -2,21 +2,20 @@
|
|||
title: "Coax Cables"
|
||||
summary: A quick comparison of the three coax types that I use.
|
||||
date: 2024-03-02T09:55:35+01:00
|
||||
lastmod: 2024-03-31T11:02:44+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
## Comparison
|
||||
|
||||
| Name | ∅ \[mm\] | Impedance \[Ω\] | Lenght \[m\] | Loss \[dB\] | Loss/100m \[dB\] | Weight/m \[kg\] |
|
||||
|:------ | --------:| ---------------:| ------------:| -----------:| ----------------:| ---------------:|
|
||||
| H-155 | 5.50 | 50.44 | 10.18 | 0.329 | 3.232 | 0.38 |
|
||||
| RG-174 | 2.79 | 50.70 | 6.03 | 0.775 | 12.850 | 0.01 |
|
||||
| RG-316 | 2.59 | 49.45 | 5.15 | 0.568 | 11.025 | 0.01 |
|
||||
| :----- | -------: | --------------: | -----------: | ----------: | ---------------: | --------------: |
|
||||
| H-155 | 5.50 | 50.44 | 10.18 | 0.329 | 3.232 | 0.38 |
|
||||
| RG-174 | 2.79 | 50.70 | 6.03 | 0.775 | 12.850 | 0.01 |
|
||||
| RG-316 | 2.59 | 49.45 | 5.15 | 0.568 | 11.025 | 0.01 |
|
||||
|
||||
Measurements have been made with a NanoVNA-H (HW version 3.4) version 1.2.19 (Build time: Jan 31 2023 - 16:06:06)
|
||||
at 14.020 MHz (because that is around the frequency that I use mainly at my home QTH).
|
||||
|
@ -33,4 +32,3 @@ and is "not so lossy" than the RG-174.
|
|||
I'd take the RG-174 when I'm not sure about what lenght the antenna cable
|
||||
should be because I have two cables with 6m with the appropriate connectors
|
||||
already on the cables.
|
||||
|
||||
|
|
|
@ -6,12 +6,11 @@ summary: |
|
|||
coverCaption: My selfmade common mode choke placed into a neat plastic case
|
||||
with BNC connectors.
|
||||
date: 2023-10-26T13:36:26+02:00
|
||||
lastmod: 2024-03-31T11:02:19+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
So this is basically a 140-43 toroid with 9 turns of RG174 connected to
|
||||
|
@ -27,4 +26,3 @@ I find this okay for now but I still wonder if this can be made any better
|
|||
(maybe 30dB attenuation?). Would I benefit from even more attenuation?
|
||||
|
||||
I will probably find out on another day.
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: "Antenna masts"
|
||||
summary:
|
||||
summary:
|
||||
date: 2024-03-17T20:38:06+0100
|
||||
|
||||
showBreadcrumbs: true
|
||||
|
@ -8,7 +8,6 @@ showReadingTime: false
|
|||
showWordCount: false
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
## FGM-Fiberglasmast
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
title: Mobilinkd TNC4
|
||||
summary:
|
||||
summary:
|
||||
date: 2023-10-01T22:24:03+01:00
|
||||
#lastmod:
|
||||
#lastmod:
|
||||
#categories:
|
||||
#- amateur-radio
|
||||
#- computerstuff
|
||||
|
@ -18,7 +18,4 @@ showWordCount: false
|
|||
# site_exclude: true
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
|
|
@ -2,12 +2,11 @@
|
|||
title: NanoVNA-F
|
||||
summary: A so-called "fake" NanoVNA.
|
||||
date: 2020-07-05
|
||||
lastmod: 2024-09-22T12:54:18+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
I bought a "fake" NanoVNA-F in my early days as an amateur radio operator
|
||||
|
@ -19,4 +18,3 @@ I wouldn't buy any device from SYSJOINT again. Also software wise.
|
|||
|
||||
**Update:** I've changed one SMA connector and most problems are gone but
|
||||
sometimes the curve still flickers and moves a little bit.
|
||||
|
||||
|
|
|
@ -3,16 +3,14 @@ title: NanoVNA
|
|||
summary: The compact and trusty NanoVNA-H. Small and efficient.
|
||||
coverCaption: The NanoVNA-H is very compact and I like it for portable operation.
|
||||
date: 2022-05-16
|
||||
lastmod: 2024-09-22T12:54:18+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
I leave the BNC adapter on because I usually only have BNC connectors
|
||||
on my portable rigs and antennas.
|
||||
|
||||
This is the analyzer that is in the same bag as the TX-500.
|
||||
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
---
|
||||
title: RigExpert Stick 230
|
||||
summary:
|
||||
summary:
|
||||
date: 2022-08-11
|
||||
lastmod: 2024-03-31T11:01:16+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
The RigExpert Stick 230 is nice and practical to use, but it comes with a
|
||||
|
@ -18,4 +17,3 @@ as moving through a frequency range.
|
|||
|
||||
I personally don't like the user interface and I therefore don't use it much
|
||||
at home and almost never when I'm portable.
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
title: TinySA ultra
|
||||
summary:
|
||||
summary:
|
||||
date: 2023-08-01
|
||||
lastmod: 2023-08-12T15:25:56+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
#categories:
|
||||
#- amateur-radio
|
||||
#tags:
|
||||
|
@ -17,7 +17,4 @@ showWordCount: false
|
|||
# site_exclude: true
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
|
|
@ -19,5 +19,4 @@ showWordCount: false
|
|||
|
||||
feed_exclude: true
|
||||
weight: 30
|
||||
|
||||
---
|
||||
|
|
|
@ -9,4 +9,3 @@ content coming...
|
|||
|
||||
i heard a lot of good things about this on youtube but I cannot confirm these
|
||||
thoughts -- the performance is very poor beginning at 40m (down to 80m).
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
title: Homebrew 40m Hw Endfed
|
||||
summary:
|
||||
summary:
|
||||
date: 2023-05-01T11:45:01+02:00
|
||||
# lastmod:
|
||||
# lastmod:
|
||||
#categories:
|
||||
#- amateur-radio
|
||||
#- computerstuff
|
||||
|
@ -18,7 +18,4 @@ showWordCount: false
|
|||
# site_exclude: true
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
|
|
@ -3,12 +3,11 @@ title: Homebrew dipole for 20m
|
|||
summary: This is my non-plus-ultra antenna. Often used at home and portable.
|
||||
date: 2023-04-23T08:51:00+02:00
|
||||
coverCaption: Homebrew dipole for the 20m band made from 1.5mm² speaker cable
|
||||
lastmod: 2024-05-19T20:53:34+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
I am very happy with this antenna -- it is very compact when fold together
|
||||
|
@ -28,4 +27,3 @@ respond often within the first three requests).
|
|||
|
||||
I also use [a choke]({{< ref "/equipment/radio-stuff/accessories/homebrew-common-mode-choke/" >}})
|
||||
with the antenna.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
title: Anytone D878UV+
|
||||
date: 2019-12-08
|
||||
lastmod: 2024-03-17T19:59:25+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
#categories:
|
||||
#- amateur-radio
|
||||
|
||||
|
@ -11,7 +11,6 @@ showBreadcrumbs: true
|
|||
showReadingTime: false
|
||||
showWordCount: false
|
||||
# showPagination: false
|
||||
|
||||
---
|
||||
|
||||
I bought this because of its ability to do APRS (TX only) and it
|
||||
|
@ -28,4 +27,3 @@ While this radio was in repair, I ordered my second DMR radio, the
|
|||
[1]: {{< ref "hytera-pd785g" >}}
|
||||
|
||||
I wasn't really satisfied with its receiving capabilities anyway.
|
||||
|
||||
|
|
|
@ -2,16 +2,15 @@
|
|||
title: Hytera PD785G
|
||||
aliases:
|
||||
- /amateur-radio/2020-01-27-aprs-with-hytera-pd785g-v9
|
||||
summary:
|
||||
summary:
|
||||
date: 2019-12-31
|
||||
lastmod: 2024-06-09T06:32:40+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
showBreadcrumbs: true
|
||||
|
||||
# showDate: false
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
# showPagination: false
|
||||
|
||||
---
|
||||
|
||||
This is the second DMR radio that I bought. I wanted something stable,
|
||||
|
@ -51,4 +50,3 @@ me to trash the device and buy another one (with some discount).
|
|||
The Hytera PD785G only supports 70cm.
|
||||
|
||||
![output power around 433.500 MHz](power.png)
|
||||
|
||||
|
|
|
@ -4,12 +4,11 @@ summary: >
|
|||
A really awesome handheld radio -- and it does D-STAR as a
|
||||
bonus. Check it out -- it's cool!
|
||||
date: 2021-12-10
|
||||
lastmod: 2024-03-17T19:59:25+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
This is actually my number one handheld radio. I find it very intuitive to use
|
||||
|
@ -24,10 +23,10 @@ on digital mode (D-STAR).
|
|||
Right away: there are two ways to open a repeater with a 1750Hz tone.
|
||||
|
||||
1. Push _PTT_ like you would perform a double-click with your computer mouse
|
||||
and hold _PTT_ on the second "click".
|
||||
and hold _PTT_ on the second "click".
|
||||
2. Open _MENU >> SET >> DTMF/T-CALL >> DTMF Memory_ and select _T-CALL_ with _OK_
|
||||
key. Go back to standby screen and press _PTT_. Now additionally press the
|
||||
_SQL_ button.
|
||||
key. Go back to standby screen and press _PTT_. Now additionally press the
|
||||
_SQL_ button.
|
||||
|
||||
### SQL
|
||||
|
||||
|
@ -113,8 +112,8 @@ receiver information, time and date as well as some basic info about the picture
|
|||
|
||||
## Power output
|
||||
|
||||
| Power output diagrams | |
|
||||
| --- | --- |
|
||||
| Power output diagrams | |
|
||||
| ---------------------------------------- | -------------------------------------------- |
|
||||
| ![output power on 2m band](power-2m.png) | ![output power on 70cm band](power-70cm.png) |
|
||||
|
||||
I've found out how to measure more than 4 traces at once (hint:
|
||||
|
@ -122,13 +121,13 @@ disable <kbd>TRACKING</kbd> in the Marker options)
|
|||
|
||||
The measured output power around 144.500 MHz and 433.500 MHz are:
|
||||
|
||||
| Power setting | Output power 2m | Output power 70cm |
|
||||
| :---- | :----- | :----- |
|
||||
| S-Low | 107 mW | 99 mW |
|
||||
| Low1 | 539 mW | 443 mW |
|
||||
| Low2 | 1.09 W | 783 mW |
|
||||
| Mid | 2.45 W | 2.21 W |
|
||||
| High | 6.26 W | 4.94 W |
|
||||
| Power setting | Output power 2m | Output power 70cm |
|
||||
| :------------ | :-------------- | :---------------- |
|
||||
| S-Low | 107 mW | 99 mW |
|
||||
| Low1 | 539 mW | 443 mW |
|
||||
| Low2 | 1.09 W | 783 mW |
|
||||
| Mid | 2.45 W | 2.21 W |
|
||||
| High | 6.26 W | 4.94 W |
|
||||
|
||||
## Harmonics
|
||||
|
||||
|
@ -136,4 +135,3 @@ Only measured on the 2m band.
|
|||
|
||||
![harmonics](harmonics.png "I could not see any harmonics at <mark>145.550 MHz</mark>.
|
||||
For people that cannot read the small fonts properly: the graph goes up to 3 GHz.")
|
||||
|
||||
|
|
|
@ -4,18 +4,17 @@ summary: >
|
|||
Consider the OpenGD77 firmware and you're all set with a very
|
||||
user friendly and customizable handheld radio.
|
||||
aliases:
|
||||
- /equipment/handhelds/radioddity-gd77/
|
||||
- /equipment/handhelds/radioddity-gd77/
|
||||
date: 2020-10-17
|
||||
lastmod: 2024-09-25T03:37:50+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
#categories:
|
||||
#- amateur-radio
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
[Product page][1] — [OpenGD77 Firmware][2] — [Latest CPS][3]
|
||||
[Product page][1] — [OpenGD77 Firmware][2] — [Latest CPS][3]
|
||||
|
||||
[1]: https://www.radioddity.com/products/radioddity-gd-77-dmr-two-way-radio
|
||||
[2]: https://www.opengd77.com/downloads/GD77/Latest/
|
||||
|
@ -27,7 +26,7 @@ radio usage.
|
|||
|
||||
## udev-Rules for Linux
|
||||
|
||||
~~~rb
|
||||
```rb
|
||||
# USB rules for GD-77
|
||||
# Place this in /etc/udev/rules.d/ to let all users talk to the radios by USB.
|
||||
|
||||
|
@ -49,27 +48,27 @@ KERNEL=="hiddev*", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="0666
|
|||
|
||||
# OpenGD77
|
||||
KERNEL=="ttyACM[0-9]*", SUBSYSTEM=="tty", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="0094", MODE="0666", GROUP="dialout", SYMLINK+="OpenGD77"
|
||||
~~~
|
||||
```
|
||||
|
||||
If you want do reload udev with the new rules, run:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ udevadm control --reload-rules && udevadm trigger
|
||||
~~~
|
||||
```
|
||||
|
||||
## Original boot tone melody
|
||||
|
||||
The originally used boot-up melody. I'm not sure if it changed already, but this
|
||||
was on my GD-77 when I first installed the OpenGD77 firmware.
|
||||
|
||||
~~~plain
|
||||
```plain
|
||||
38,6,0,2,38,2,0,2,38,6,0,2,38,2,0,2,38,6
|
||||
~~~
|
||||
```
|
||||
|
||||
## My boot-up picture
|
||||
|
||||
| Normal display settings | Inverted display settings |
|
||||
| :--- | :--- |
|
||||
| Normal display settings | Inverted display settings |
|
||||
| :---------------------------------------------------- | :--------------------------------------------------------------- |
|
||||
| ![OE7DRT Boot-up picture white](rendeer512_white.png) | ![OE7DRT Boot-up picture black (inverted)](rendeer512_black.png) |
|
||||
|
||||
## Importing DMR-IDs
|
||||
|
@ -114,15 +113,15 @@ Press and hold the hash key <kbd>#</kbd> when in VFO mode to enter this feature.
|
|||
|
||||
![2m band output power](power-2m.png)
|
||||
|
||||
| Power setting | Out power (device 1) | Out power (device 2) |
|
||||
| :--- | :--- | :----- |
|
||||
| +W- | 7.50 W | 7.60 W |
|
||||
| 5W | 5.31 W | 5.40 W |
|
||||
| 50mW | 376 mW | 152 mW |
|
||||
| 1W | 1.30 W | 1.35 W |
|
||||
| 2W | 2.37 W | 2.14 W |
|
||||
| 3W | 2.90 W | 2.70 W |
|
||||
| 4W | 3.76 W | 3.40 W |
|
||||
| Power setting | Out power (device 1) | Out power (device 2) |
|
||||
| :------------ | :------------------- | :------------------- |
|
||||
| +W- | 7.50 W | 7.60 W |
|
||||
| 5W | 5.31 W | 5.40 W |
|
||||
| 50mW | 376 mW | 152 mW |
|
||||
| 1W | 1.30 W | 1.35 W |
|
||||
| 2W | 2.37 W | 2.14 W |
|
||||
| 3W | 2.90 W | 2.70 W |
|
||||
| 4W | 3.76 W | 3.40 W |
|
||||
|
||||
I have two devices and they differ on some settings (50mW setting for example).
|
||||
|
||||
|
@ -132,16 +131,15 @@ I have two devices and they differ on some settings (50mW setting for example).
|
|||
|
||||
I have only measured one device as devices may differ largely.
|
||||
|
||||
| Power setting | Output power|
|
||||
| :---- | :----- |
|
||||
| 50mW | 917 mW |
|
||||
| 250mW | 925 mW |
|
||||
| 500mW | 1.86 W |
|
||||
| 750mW | 1.49 W |
|
||||
| 1W | 1.67 W |
|
||||
| 2W | 2.35 W |
|
||||
| 3W | 2.96 W |
|
||||
| 4W | 4.22 W |
|
||||
| 5W | 7.50 W |
|
||||
| +W- | 8.41 W |
|
||||
|
||||
| Power setting | Output power |
|
||||
| :------------ | :----------- |
|
||||
| 50mW | 917 mW |
|
||||
| 250mW | 925 mW |
|
||||
| 500mW | 1.86 W |
|
||||
| 750mW | 1.49 W |
|
||||
| 1W | 1.67 W |
|
||||
| 2W | 2.35 W |
|
||||
| 3W | 2.96 W |
|
||||
| 4W | 4.22 W |
|
||||
| 5W | 7.50 W |
|
||||
| +W- | 8.41 W |
|
||||
|
|
|
@ -2,12 +2,11 @@
|
|||
title: Wouxun UV9D Mate
|
||||
summary: This is the radio of choice when I do some Winlinking (HI) via packet radio or VARA FM.
|
||||
date: 2021-03-15
|
||||
lastmod: 2024-05-19T20:53:51+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
I can not remember when I bought this radio because I lost my documents somwhere
|
||||
|
@ -24,5 +23,3 @@ The special use case for it is in the car primarily -- the next RMS packet stati
|
|||
approx. 27km north/north-east of my home QTH (with some mountains in between) -- it
|
||||
works well with the Digirig when using packet radio and VARA-FM; and with the Mobilinkd
|
||||
TNC4.
|
||||
|
||||
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
---
|
||||
title: Yaesu FT-3D
|
||||
date: 2020-05-24
|
||||
lastmod: 2024-03-17T19:59:25+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
C4FM is one of the easiest digital operating mode to set up. Enter your
|
||||
|
@ -52,16 +51,16 @@ the brightness at all, but YMMV.
|
|||
The FT-3D supports 4 power levels: LOW1 (0.3W), LOW2 (1W), LOW3 (2.5W) and
|
||||
HIGH (5W).
|
||||
|
||||
| Power output on 2m and 70cm | |
|
||||
| ---- | --- |
|
||||
| Power output on 2m and 70cm | |
|
||||
| ------------------------------------------------------------------ | ---------------------------------------------------------------------- |
|
||||
| ![2m power output](power-2m.png "power output around 145.500 MHz") | ![70cm power output](power-70cm.png "power output around 433.500 MHz") |
|
||||
|
||||
| Power setting | Output 2m | Output 70cm |
|
||||
| :--- | :----- | :----- |
|
||||
| LOW1 | 350 mW | 340 mW |
|
||||
| LOW2 | 1.00 W | 972 mW |
|
||||
| LOW3 | 2.80 W | 2.44 W |
|
||||
| HIGH | 5.66 W | 4.87 W |
|
||||
| :------------ | :-------- | :---------- |
|
||||
| LOW1 | 350 mW | 340 mW |
|
||||
| LOW2 | 1.00 W | 972 mW |
|
||||
| LOW3 | 2.80 W | 2.44 W |
|
||||
| HIGH | 5.66 W | 4.87 W |
|
||||
|
||||
## Band scope
|
||||
|
||||
|
@ -102,4 +101,3 @@ on 145.57500 MHz but receives on 432.57500 MHz.
|
|||
Although the recordings are sometimes quite buggy, I really appreciate this
|
||||
function on newer radios. No need to pull out your smartphone to get a recording
|
||||
on tape.
|
||||
|
||||
|
|
|
@ -2,12 +2,11 @@
|
|||
title: Yaesu FT-4XE
|
||||
date: 2019-11-23
|
||||
coverCaption: My FT-4X with a Diamond SRJ77 antenna.
|
||||
lastmod: 2024-03-17T19:59:25+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
|
||||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
This is the first handheld radio (and the first radio at all) that I got.
|
||||
|
@ -24,4 +23,3 @@ The radio is also small enough to just take it with you when you want to quickly
|
|||
have a radio with you.
|
||||
|
||||
I'm not using it that much. Mostly when I want to listen to a FM radio station.
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
title: Cloudlog
|
||||
summary:
|
||||
summary:
|
||||
date: 2023-02-10
|
||||
# lastmod:
|
||||
# lastmod:
|
||||
#categories:
|
||||
#- amateur-radio
|
||||
#tags:
|
||||
|
@ -19,10 +19,8 @@ showWordCount: false
|
|||
# site_exclude: true
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
My default logging “application”. It is used online.
|
||||
|
||||
link: https://www.magicbug.co.uk/cloudlog/
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
title: CQRLOG
|
||||
summary:
|
||||
summary:
|
||||
date: 2023-02-10
|
||||
# lastmod:
|
||||
# lastmod:
|
||||
#categories:
|
||||
#- amateur-radio
|
||||
#tags:
|
||||
|
@ -19,7 +19,6 @@ showWordCount: false
|
|||
# site_exclude: true
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
I used this for a while, is very bloated and with it's own database
|
||||
|
@ -34,4 +33,3 @@ also it sometimes breakes and I'm fed up with the linux-ish way of tinkering and
|
|||
fixing things to get it working again. mostly the db is causing trouble.
|
||||
|
||||
link: https://www.cqrlog.com/
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
title: QLog
|
||||
summary:
|
||||
summary:
|
||||
date: 2023-02-10
|
||||
# lastmod:
|
||||
# lastmod:
|
||||
#categories:
|
||||
#- amateur-radio
|
||||
#tags:
|
||||
|
@ -19,7 +19,6 @@ showWordCount: false
|
|||
# site_exclude: true
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
I've tested this in it's early stage and I don't know about it's actual
|
||||
|
@ -27,4 +26,3 @@ progress, but it looked very promising and actively developed by Ladislav
|
|||
Foldyna, OK1MLG.
|
||||
|
||||
link: https://github.com/foldynl/QLog
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ summary: >
|
|||
A very good-looking and functional **Winlink client for iOS**. Combine this with
|
||||
Varanny on a headless Linux or Windows PC and you are unstoppable out in the field.
|
||||
date: 2024-02-16
|
||||
# lastmod:
|
||||
# lastmod:
|
||||
#categories:
|
||||
#- amateur-radio
|
||||
#tags:
|
||||
|
@ -21,7 +21,6 @@ showWordCount: false
|
|||
# site_exclude: true
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
I already wrote about [my short experience with RadioMail][1] in an article back in
|
||||
|
@ -33,4 +32,3 @@ VARA programs which makes swapping HF rigs a dream!
|
|||
[1]: {{< ref "/posts/2023/58-winlink-on-my-iphone-with-radiomail" >}}
|
||||
|
||||
If you like minimal equipment on your hikes or activations: this might be it for you.
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
title: RUMlogNG
|
||||
summary:
|
||||
summary:
|
||||
date: 2023-02-10
|
||||
# lastmod:
|
||||
# lastmod:
|
||||
#categories:
|
||||
#- amateur-radio
|
||||
#tags:
|
||||
|
@ -19,7 +19,6 @@ showWordCount: false
|
|||
# site_exclude: true
|
||||
|
||||
draft: true
|
||||
|
||||
---
|
||||
|
||||
For MacOS only. This is one of the best logging applications for MacOS that
|
||||
|
@ -30,4 +29,3 @@ link: https://dl2rum.de/rumsoft/RUMLog.html
|
|||
There is also a version for the iPhone.
|
||||
|
||||
link: https://dl2rum.de/rumsoft/RUMlog2Go.html
|
||||
|
||||
|
|
|
@ -23,4 +23,3 @@ draft: true
|
|||
|
||||
Replaced my cloudlog installation.
|
||||
I am very happy with this.
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: Transceivers
|
||||
summary: The big ones. May contain QRP transceivers.
|
||||
aliases:
|
||||
- /equipment/transceiver/
|
||||
- /equipment/transceiver/
|
||||
#date: 2022-11-16T22:19:11+01:00
|
||||
#tags:
|
||||
#- transceiver
|
||||
|
@ -20,5 +20,4 @@ showWordCount: false
|
|||
|
||||
feed_exclude: true
|
||||
weight: 10
|
||||
|
||||
---
|
||||
|
|
|
@ -8,7 +8,6 @@ coverCaption: TX-500 in action on a stone
|
|||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
This is the third HF transceiver that I bought. I was looking for a while for
|
||||
|
@ -32,7 +31,7 @@ no punch and I'm not using this for the moment.
|
|||
## Original CAT cable settings
|
||||
|
||||
| Setting | Value |
|
||||
| :--- | :--- |
|
||||
| :-------- | :------ |
|
||||
| RIG type | KENWOOD |
|
||||
| Baud rate | 9600 |
|
||||
| Data bits | 8 |
|
||||
|
@ -46,15 +45,15 @@ I use these rigctld commands:
|
|||
|
||||
### KENWOOD mode
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ rigctld -m 2014 -r /dev/ttyUSB0 -d /dev/ttyUSB0 -p /dev/ttyUSB0 -P RTS -s 9600 -vvvv
|
||||
~~~
|
||||
```
|
||||
|
||||
### Lab599 mode
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ rigctld -m 2050 -r /dev/ttyUSB0 -d /dev/ttyUSB0 -p /dev/ttyUSB0 -P RTS -s 9600 -vvvv
|
||||
~~~
|
||||
```
|
||||
|
||||
## Power output at 10%
|
||||
|
||||
|
@ -64,18 +63,18 @@ I do not want to hide them :)
|
|||
|
||||
As always, take these with a grain of salt!
|
||||
|
||||
| BAND | FREQUENCY | TONE SETTINGS | TX500 | tinySA |
|
||||
| :--- | :--- | :--- | ---: | ---: |
|
||||
| 80m | 3.530 MHz | NORMAL | 0.8 W | 1.72 W |
|
||||
| | | DUAL | 0.6 W | 0.48 W |
|
||||
| 40m | 7.130 MHz | NORMAL | 0.8 W | 1.40 W |
|
||||
| | | DUAL | 0.6 W | 0.41 W |
|
||||
| 20m | 14.285 MHz | NORMAL | 0.7 W | 1.40 W |
|
||||
| | | DUAL | 0.6 W | 0.44 W |
|
||||
| 15m | 21.245 MHz | NORMAL | 1.3 W | 2.13 W |
|
||||
| | | DUAL | 1.1 W | 0.60 W |
|
||||
| 10m | 29.080 MHz | NORMAL | 1.7 W | 2.86 W |
|
||||
| | | DUAL | 1.5 W | 0.90 W |
|
||||
| BAND | FREQUENCY | TONE SETTINGS | TX500 | tinySA |
|
||||
| :--- | :--------- | :------------ | ----: | -----: |
|
||||
| 80m | 3.530 MHz | NORMAL | 0.8 W | 1.72 W |
|
||||
| | | DUAL | 0.6 W | 0.48 W |
|
||||
| 40m | 7.130 MHz | NORMAL | 0.8 W | 1.40 W |
|
||||
| | | DUAL | 0.6 W | 0.41 W |
|
||||
| 20m | 14.285 MHz | NORMAL | 0.7 W | 1.40 W |
|
||||
| | | DUAL | 0.6 W | 0.44 W |
|
||||
| 15m | 21.245 MHz | NORMAL | 1.3 W | 2.13 W |
|
||||
| | | DUAL | 1.1 W | 0.60 W |
|
||||
| 10m | 29.080 MHz | NORMAL | 1.7 W | 2.86 W |
|
||||
| | | DUAL | 1.5 W | 0.90 W |
|
||||
|
||||
## PA500
|
||||
|
||||
|
@ -83,4 +82,3 @@ Since the TX-500 does not have a built-in tuner the PA500 is well
|
|||
worth the investment. It got it's
|
||||
[own page]({{/* ref "/equipment/accessories/diy599-pa500/" */}})
|
||||
in my equipment collecion.
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
---
|
||||
title: Yaesu FT-891
|
||||
aliases:
|
||||
- /equipment/transceiver/yaesu-fd891/
|
||||
- /equipment/transceiver/yaesu-ft891/
|
||||
- /equipment/transceiver/yaesu-fd891/
|
||||
- /equipment/transceiver/yaesu-ft891/
|
||||
date: 2020-06-21T14:20:47+01:00
|
||||
coverCaption: Field setup for Winlink
|
||||
lastmod: 2024-04-13T19:06:32+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
#categories:
|
||||
#- amateur-radio
|
||||
#tags:
|
||||
|
@ -13,7 +13,6 @@ lastmod: 2024-04-13T19:06:32+0000
|
|||
showBreadcrumbs: true
|
||||
showReadingTime: false
|
||||
showWordCount: false
|
||||
|
||||
---
|
||||
|
||||
I got this because the IC-7300 was too chunky to be effectively
|
||||
|
@ -62,7 +61,7 @@ Made from aluminium the
|
|||
[891escort](https://portablezero.com/yaesu857D.html)
|
||||
adds a little weight but also protection to the radio, especially
|
||||
for the knobs on the front panel. The addidional strap mounts can be
|
||||
used to attach a sling to the radio, it could be easily carried now --
|
||||
used to attach a sling to the radio, it could be easily carried now --
|
||||
not that I used that once, but it is there as a feature. My focus was
|
||||
the additional protection when I bought them. Now, a year later, I
|
||||
carry the radio inside a cloth bag without the escort just to save
|
||||
|
@ -79,4 +78,3 @@ outside, but I haven't found a good one yet (and a short one).
|
|||
This radio is an excellent choice if you have enough power with you --
|
||||
the current draw is very high compared to a QRP radio and an amplifier
|
||||
(Tx-500 with PA-500 for example).
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
title: License
|
||||
date: 2022-12-04T18:15:03+01:00
|
||||
lastmod: 2023-11-27T16:42:24+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
|
||||
comment: false
|
||||
|
||||
|
@ -15,7 +15,6 @@ sharingLinks: false
|
|||
|
||||
feed_exclude: true
|
||||
#site_exclude: true
|
||||
|
||||
---
|
||||
|
||||
The content on this site is licensed under the
|
||||
|
@ -60,4 +59,3 @@ rights may limit how you use the material.
|
|||
This page was inspired by [mrus](https://xn--gckvb8fzb.com/license/) because of
|
||||
the perfect wording. We do not stay in any relation, but if you like hack related
|
||||
computer stuff: there are some nice articles on his website.
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@ showWordCount: false
|
|||
showPagination: false
|
||||
|
||||
feed_exclude: true
|
||||
|
||||
---
|
||||
|
||||
## Digital modes performance comparison (Winlink)
|
||||
|
@ -26,4 +25,3 @@ Let's compare some digital modes like PACTOR, VARA, ARDOP and WINMOR (†).
|
|||
A small collection of manuals that I saved.
|
||||
|
||||
<https://celeste.oe7drt.com/pub/hamradio/manuals/>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
title: Notes
|
||||
date: 2023-11-04T08:01:00+01:00
|
||||
#lastmod:
|
||||
#lastmod:
|
||||
|
||||
groupByYear: false
|
||||
showDate: false
|
||||
|
@ -11,10 +11,8 @@ showWordCount: false
|
|||
showBreadcrumbs: true
|
||||
|
||||
feed_exclude: true
|
||||
|
||||
#showPagination: false
|
||||
#showAuthor: false
|
||||
|
||||
---
|
||||
|
||||
These are notes that I will not or can not elaborate any further. Use them
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
title: Archlinux
|
||||
date: 2023-11-29T20:33:48+0100
|
||||
lastmod: 2024-09-14T09:53:25+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
tags:
|
||||
- archlinux
|
||||
- systemd
|
||||
|
@ -15,7 +15,6 @@ showBreadcrumbs: true
|
|||
|
||||
feed_exclude: true
|
||||
# site_exclude: true
|
||||
|
||||
---
|
||||
|
||||
Arch Linux
|
||||
|
@ -33,9 +32,9 @@ If your user account is locked, wait 15 minutes (usually) and you can try again.
|
|||
If you need to unlock your account immediately: run this command (if you have another user
|
||||
that can login on the box):
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo faillock --user dominic --reset
|
||||
~~~
|
||||
```
|
||||
|
||||
Calling `faillock` without arguments show an overview.
|
||||
|
||||
|
@ -50,13 +49,13 @@ This makes my ethernet interface be called **eth0** again.
|
|||
|
||||
Create `/usr/lib/systemd/network/80-ether.link` with this content:
|
||||
|
||||
~~~systemd
|
||||
```systemd
|
||||
[Match]
|
||||
Type=ether
|
||||
|
||||
[Link]
|
||||
NamePolicy=keep kernel
|
||||
~~~
|
||||
```
|
||||
|
||||
Reboot.
|
||||
|
||||
|
@ -66,13 +65,13 @@ This makes my wireless interface be called **wlan0** again.
|
|||
|
||||
Create `/usr/lib/systemd/network/80-wlan.link` with this content:
|
||||
|
||||
~~~systemd
|
||||
```systemd
|
||||
[Match]
|
||||
Type=wlan
|
||||
|
||||
[Link]
|
||||
NamePolicy=keep kernel
|
||||
~~~
|
||||
```
|
||||
|
||||
Reboot.
|
||||
|
||||
|
@ -80,21 +79,21 @@ Reboot.
|
|||
|
||||
### Using **iwctl**
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ iwctl device list
|
||||
$ iwctl station wlan0 scan
|
||||
$ iwctl station wlan0 get-networks
|
||||
$ iwctl station wlan0 connect {ssid}
|
||||
~~~
|
||||
```
|
||||
|
||||
### Using **nmcli** (NetworkManager)
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ nmcli device wifi list
|
||||
$ nmcli device wifi rescan
|
||||
$ nmcli device wifi connect {ssid} --ask
|
||||
$ nmcli device wifi show-password
|
||||
~~~
|
||||
```
|
||||
|
||||
Last command shows the connected SSID and a QR-code within the terminal.
|
||||
|
||||
|
@ -106,23 +105,23 @@ We create some files in `/etc/NetworkManager/conf.d`:
|
|||
|
||||
`wifi_backend.conf`:
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
[device]
|
||||
wifi.backend=iwd
|
||||
~~~
|
||||
```
|
||||
|
||||
## Using `dhcpcd` as DHCP client
|
||||
|
||||
`dhcp-client.conf`:
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
[main]
|
||||
dhcp=dhcpcd
|
||||
~~~
|
||||
```
|
||||
|
||||
## Using the CPU with hashcat
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ hashcat -I
|
||||
hashcat (v6.2.6) starting in backend information mode
|
||||
|
||||
|
@ -147,7 +146,7 @@ OpenCL Platform ID #1
|
|||
Local.Memory...: 64 KB
|
||||
OpenCL.Version.: OpenCL C 1.2
|
||||
Driver.Version.: 24.31.30508
|
||||
~~~
|
||||
```
|
||||
|
||||
This is what I've seen on `hashcat -I` for a long time now but I never dig myself
|
||||
into this "problem" -- but today I tried to find the reason why there is no CPU
|
||||
|
@ -156,19 +155,19 @@ listed on my Carbon X1 Gen7 laptop.
|
|||
After a few minutes doing some trial & error I finally got the CPU listed after
|
||||
installing _pocl_.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ paru -S pocl
|
||||
~~~
|
||||
```
|
||||
|
||||
Or, on my gaming laptop running a cheap clone of Ubuntu:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo apt install pocl-opencl-icd
|
||||
~~~
|
||||
```
|
||||
|
||||
Now my `hashcat -I` looks like this:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ hashcat -I took 6s
|
||||
hashcat (v6.2.6) starting in backend information mode
|
||||
|
||||
|
@ -212,7 +211,7 @@ OpenCL Platform ID #2
|
|||
Local.Memory...: 256 KB
|
||||
OpenCL.Version.: OpenCL C 1.2 PoCL
|
||||
Driver.Version.: 6.0
|
||||
~~~
|
||||
```
|
||||
|
||||
## Paru / Pacman
|
||||
|
||||
|
@ -225,127 +224,127 @@ I had to copy this to my notes archive here...
|
|||
|
||||
#### install
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ paru -S <package>
|
||||
~~~
|
||||
```
|
||||
|
||||
#### Edit PKGBUILD and skip checksum check
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ paru -S gnucash-xbt --fm helix --mflags "--skipchecksums"
|
||||
~~~
|
||||
```
|
||||
|
||||
#### uninstall (-n: no backup files; -s: remove dependencies)
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ paru -Rns <package>
|
||||
~~~
|
||||
```
|
||||
|
||||
#### system update
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ paru -Syu
|
||||
~~~
|
||||
```
|
||||
|
||||
### Mirrors
|
||||
|
||||
#### select fastest
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo pacman-mirrors --fasttrack
|
||||
~~~
|
||||
```
|
||||
|
||||
#### select by country
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo pacman-mirrors --country Germany,France,Austria
|
||||
~~~
|
||||
```
|
||||
|
||||
### Search repo
|
||||
|
||||
#### search package
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ paru -Ss <package>
|
||||
~~~
|
||||
```
|
||||
|
||||
#### package details
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ paru -Si <package>
|
||||
~~~
|
||||
```
|
||||
|
||||
#### list files
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ paru -Fl <package>
|
||||
~~~
|
||||
```
|
||||
|
||||
#### find package for file
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ pkgfile <filename>
|
||||
~~~
|
||||
```
|
||||
|
||||
#### search command
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ paru -F glxinfo
|
||||
~~~
|
||||
```
|
||||
|
||||
### Installed packages
|
||||
|
||||
#### search package
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ paru -Qs <package>
|
||||
~~~
|
||||
```
|
||||
|
||||
#### package details
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ paru -Qii <package>
|
||||
~~~
|
||||
```
|
||||
|
||||
#### list files
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ paru -Ql <package>
|
||||
~~~
|
||||
```
|
||||
|
||||
#### orphans
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ paru -Qdt
|
||||
~~~
|
||||
```
|
||||
|
||||
#### manually installed (list all aur)
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ pacman -Qm
|
||||
~~~
|
||||
```
|
||||
|
||||
### Clean-up
|
||||
|
||||
#### clear cache
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ paru -Sc
|
||||
~~~
|
||||
```
|
||||
|
||||
### Official repo vs. AUR
|
||||
|
||||
#### repo
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ paru -[...] --repo
|
||||
~~~
|
||||
```
|
||||
|
||||
#### aur
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ paru -[...] --aur
|
||||
~~~
|
||||
```
|
||||
|
||||
<!-- paru end -->
|
||||
|
||||
|
@ -356,25 +355,25 @@ on the box, also using the raw table should not create useless states as for wha
|
|||
I understand from the source article on
|
||||
[serverfault.com](https://serverfault.com/a/823336).
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo ipset -N badips iphash
|
||||
$ while read ip; do sudo ipset -A badips "$ip"; done < blocked.txt
|
||||
$ sudo iptables -t raw -I PREROUTING -m set --match-set badips src,dst -j DROP
|
||||
$ sudo iptables-save -f /etc/iptables/iptables.rules
|
||||
~~~
|
||||
```
|
||||
|
||||
Enable iptables in case it is not running yet.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo systemctl enable --now iptables.service
|
||||
~~~
|
||||
```
|
||||
|
||||
Also make the ipset configuration persistent:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo ipset save -file /etc/ipset.conf
|
||||
$ sudo systemctl enable ipset.service
|
||||
~~~
|
||||
```
|
||||
|
||||
Reboot to test its persistency.
|
||||
|
||||
|
@ -382,10 +381,10 @@ Reboot to test its persistency.
|
|||
|
||||
`99-unmanaged-devices.conf`:
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
[keyfile]
|
||||
unmanaged-devices=mac:xx:xx:xx:xx:xx:xx
|
||||
~~~
|
||||
```
|
||||
|
||||
## Prefer local DNS instead of systemd-resolved defaults
|
||||
|
||||
|
@ -419,11 +418,11 @@ The wiki page is for Raspberry Pi 4.
|
|||
|
||||
I create my wine prefixes usually like this:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ export WINEPREFIX=/home/dominic/.wine-winlink
|
||||
$ export WINEARCH=win32
|
||||
$ wine wineboot
|
||||
~~~
|
||||
```
|
||||
|
||||
## Installing multiple ruby versions
|
||||
|
||||
|
@ -431,60 +430,59 @@ I came to the point to test an older website from me and it was made with
|
|||
Jekyll which I had to install quickly. Problems occured with OpenSSL and I
|
||||
finally managed to install ruby version 2.7.1 and 3.0.0 in my home directory.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ rvm pkg install openssl
|
||||
$ rvm install "ruby-3.0.0" --with-openssl-dir=$HOME/.rvm/usr
|
||||
$ rvm install "ruby-2.7.1" --with-openssl-dir=$HOME/.rvm/usr
|
||||
~~~
|
||||
```
|
||||
|
||||
Later in the desired directory, I re-installed the gems because with ruby 2.7.1
|
||||
I got another "Directory not found" error.
|
||||
|
||||
I had to do this because I used ruby 2.7.1 on one website.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ bundle install --force
|
||||
~~~
|
||||
```
|
||||
|
||||
## Bigger font for systemd-boot
|
||||
|
||||
Edit `/boot/loader/loader.conf`:
|
||||
|
||||
~~~
|
||||
```
|
||||
console-mode 0
|
||||
~~~
|
||||
```
|
||||
|
||||
Possible settings are:
|
||||
|
||||
| Value | Description |
|
||||
| :--- | :--- |
|
||||
| 0 | Standard UEFI 80x25 mode |
|
||||
| 1 | 80x50 mode, not supported by all devices |
|
||||
| Value | Description |
|
||||
| :---- | :------------------------------------------------------------------ |
|
||||
| 0 | Standard UEFI 80x25 mode |
|
||||
| 1 | 80x50 mode, not supported by all devices |
|
||||
| 2 | the first non-standard mode provided by the device firmware, if any |
|
||||
| auto | Pick a suitable mode automatically using heuristics |
|
||||
| max | Pick the highest-numbered available mode |
|
||||
| keep | Keep the mode selected by firmware (the default) |
|
||||
| auto | Pick a suitable mode automatically using heuristics |
|
||||
| max | Pick the highest-numbered available mode |
|
||||
| keep | Keep the mode selected by firmware (the default) |
|
||||
|
||||
More details can be found in {{< man loader.conf 5 >}}.
|
||||
|
||||
## Manual sections
|
||||
|
||||
| Section | Description |
|
||||
| :--- | :--- |
|
||||
| 1 | Section 1 of the manual describes **user commands** and tools, for example, file manipulation tools, shells, compilers, web browsers, file and image viewers and editors, and so on |
|
||||
| Section | Description |
|
||||
| :------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 1 | Section 1 of the manual describes **user commands** and tools, for example, file manipulation tools, shells, compilers, web browsers, file and image viewers and editors, and so on |
|
||||
| 2 | Section 2 of the manual describes the Linux **system calls**. A system call is an entry point into the Linux kernel. Usually, system calls are not invoked directly: instead, most system calls have corresponding C library wrapper functions which perform the steps required (e.g., trapping to kernel mode) in order to invoke the system call. Thus, making a system call looks the same as invoking a normal library function. |
|
||||
| 3 | Section 3 of the manual describes all **library functions** excluding the library functions (system call wrappers) described in Section 2, which implement system calls. |
|
||||
| 4 | Section 4 of the manual describes **special files (devices)**. |
|
||||
| 5 | Section 5 of the manual describes various **file formats**, as well as the **corresponding C structures**, if any. |
|
||||
| 6 | Section 6 of the manual describes the **games** and funny little programs available on the system. |
|
||||
| 7 | Section 7 of the manual provides **overviews on various topics**, and describes conventions and protocols, character set standards, the standard filesystem layout, and miscellaneous other things. |
|
||||
| 3 | Section 3 of the manual describes all **library functions** excluding the library functions (system call wrappers) described in Section 2, which implement system calls. |
|
||||
| 4 | Section 4 of the manual describes **special files (devices)**. |
|
||||
| 5 | Section 5 of the manual describes various **file formats**, as well as the **corresponding C structures**, if any. |
|
||||
| 6 | Section 6 of the manual describes the **games** and funny little programs available on the system. |
|
||||
| 7 | Section 7 of the manual provides **overviews on various topics**, and describes conventions and protocols, character set standards, the standard filesystem layout, and miscellaneous other things. |
|
||||
|
||||
## Encoding videos with ffmpeg
|
||||
|
||||
This is not an Arch way of encoding videos, but since I do this on my...
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ ffmpeg -i <input> -c:v libx264 -b:v 1M -maxrate 1M -bufsize 2M -pass 1 -f null /dev/null
|
||||
$ ffmpeg -i <input> -c:v libx264 -b:v 1M -maxrate 1M -bufsize 2M -pass 2 <output>
|
||||
~~~
|
||||
|
||||
```
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
---
|
||||
title: FreeBSD
|
||||
date: 2024-08-31T08:35:46+02:00
|
||||
lastmod: 2024-09-07T21:58:19+0000
|
||||
description:
|
||||
summary:
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
description:
|
||||
summary:
|
||||
tags:
|
||||
- freebsd
|
||||
- git
|
||||
- freebsd
|
||||
- git
|
||||
|
||||
#showDate: false
|
||||
showReadingTime: false
|
||||
|
@ -17,7 +17,6 @@ showBreadcrumbs: true
|
|||
|
||||
feed_exclude: true
|
||||
# site_exclude: true
|
||||
|
||||
---
|
||||
|
||||
Some basic and random information about FreeBSD.
|
||||
|
@ -49,77 +48,85 @@ As for my understanding only source updates are possible on the STABLE branch,
|
|||
but I still use pkg to install pre-compiled packages -- I will find out if that
|
||||
breaks things.
|
||||
|
||||
1. Update sources
|
||||
~~~console
|
||||
$ doas git -C /usr/src pull
|
||||
~~~
|
||||
1. Update sources
|
||||
|
||||
```console
|
||||
$ doas git -C /usr/src pull
|
||||
```
|
||||
|
||||
2. Check `/usr/src/UPDATING`
|
||||
|
||||
3. Go to `/usr/src`
|
||||
~~~console
|
||||
$ cd /usr/src
|
||||
~~~
|
||||
3. Go to `/usr/src`
|
||||
|
||||
4. Compile world
|
||||
~~~console
|
||||
$ doas make -j8 buildworld
|
||||
~~~
|
||||
```console
|
||||
$ cd /usr/src
|
||||
```
|
||||
|
||||
5. Compile and install kernel
|
||||
~~~console
|
||||
$ doas make -j8 kernel
|
||||
~~~
|
||||
4. Compile world
|
||||
|
||||
This is equivalent to `make -j8 buildkernel installkernel`.
|
||||
```console
|
||||
$ doas make -j8 buildworld
|
||||
```
|
||||
|
||||
6. Reboot
|
||||
~~~console
|
||||
$ shutdown -r now
|
||||
~~~
|
||||
5. Compile and install kernel
|
||||
|
||||
7. Update config files
|
||||
~~~console
|
||||
$ doas etcupdate -p
|
||||
~~~
|
||||
```console
|
||||
$ doas make -j8 kernel
|
||||
```
|
||||
|
||||
`-p` short explained:
|
||||
|
||||
> Enable “pre-world” mode. Only merge changes to files that
|
||||
> are necessary to successfully run ‘make installworld’ or
|
||||
> ‘make installkernel’.
|
||||
This is equivalent to `make -j8 buildkernel installkernel`.
|
||||
|
||||
8. Again, go to `/usr/src`
|
||||
~~~console
|
||||
$ cd /usr/src
|
||||
~~~
|
||||
6. Reboot
|
||||
|
||||
9. Install world
|
||||
~~~console
|
||||
$ doas make installworld
|
||||
~~~
|
||||
```console
|
||||
$ shutdown -r now
|
||||
```
|
||||
|
||||
10. Update config files (after world installation)
|
||||
~~~console
|
||||
7. Update config files
|
||||
|
||||
```console
|
||||
$ doas etcupdate -p
|
||||
```
|
||||
|
||||
`-p` short explained:
|
||||
|
||||
> Enable “pre-world” mode. Only merge changes to files that
|
||||
> are necessary to successfully run ‘make installworld’ or
|
||||
> ‘make installkernel’.
|
||||
|
||||
8. Again, go to `/usr/src`
|
||||
|
||||
```console
|
||||
$ cd /usr/src
|
||||
```
|
||||
|
||||
9. Install world
|
||||
|
||||
```console
|
||||
$ doas make installworld
|
||||
```
|
||||
|
||||
10. Update config files (after world installation)
|
||||
|
||||
```console
|
||||
$ doas etcupdate -B
|
||||
~~~
|
||||
```
|
||||
|
||||
`-B` explained:
|
||||
|
||||
> Do not build generated files in a private object tree.
|
||||
> Instead, reuse the generated files from a previously built
|
||||
> object tree that matches the source tree. This can be
|
||||
> object tree that matches the source tree. This can be
|
||||
> useful to avoid gratuitous conflicts in sendmail(8)
|
||||
> configuration files when bootstrapping. It can also be
|
||||
> configuration files when bootstrapping. It can also be
|
||||
> useful for building a tarball that matches a specific
|
||||
> world build.
|
||||
|
||||
11. Another one, reboot
|
||||
~~~console
|
||||
11. Another one, reboot
|
||||
```console
|
||||
$ shutdown -r now
|
||||
~~~
|
||||
```
|
||||
|
||||
System is up to date, following the branch <kbd>[stable/14][2]</kbd> (for now).
|
||||
|
||||
[2]: https://cgit.freebsd.org/src/log/?h=stable/14
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
title: OpenBSD
|
||||
date: 2023-11-29T20:33:48+0100
|
||||
lastmod: 2024-05-19T20:54:02+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
tags:
|
||||
- openbsd
|
||||
- python
|
||||
|
@ -23,7 +23,6 @@ showBreadcrumbs: true
|
|||
|
||||
feed_exclude: true
|
||||
# site_exclude: true
|
||||
|
||||
---
|
||||
|
||||
These are random notes -- more or less about OpenBSD. Some may
|
||||
|
@ -38,13 +37,13 @@ to the weather page. It was complaining about different
|
|||
certificates and I wasn't sure how I could fix that easily. I thought wildcard
|
||||
certs could fix that because I'd only have one cert for all the domains.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ doas pkg_add certbot
|
||||
~~~
|
||||
```
|
||||
|
||||
Run and follow instructions:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ doas certbot certonly --manual --preferred-challenges dns \
|
||||
--server https://acme-v02.api.letsencrypt.org/directory \
|
||||
--manual-public-ip-logging-ok -d '*.oe7drt.com' -d oe7drt.com
|
||||
|
@ -67,19 +66,19 @@ If you like Certbot, please consider supporting our work by:
|
|||
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
|
||||
* Donating to EFF: https://eff.org/donate-le
|
||||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
~~~
|
||||
```
|
||||
|
||||
Also adding my .net domain to the certs:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ doas certbot certonly --manual --manual-public-ip-logging-ok \
|
||||
--preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory \
|
||||
-d "*.oe7drt.com" -d "*.oe7drt.net" -d oe7drt.com -d oe7drt.net
|
||||
~~~
|
||||
```
|
||||
|
||||
Some changes to the apache2 configuration were made:
|
||||
|
||||
~~~apache
|
||||
```apache
|
||||
<MDomain oe7drt.com oe7drt.net>
|
||||
MDMember *.oe7drt.com
|
||||
MDMember *.oe7drt.net
|
||||
|
@ -91,11 +90,11 @@ MDChallengeDns01 /etc/apache2/dns/dns-challenge.phar --
|
|||
MDCertificateAgreement accepted
|
||||
MDContactEmail {email_redacted}
|
||||
MDCAChallenges dns-01
|
||||
~~~
|
||||
```
|
||||
|
||||
It seems Apache likes this:
|
||||
|
||||
![cropped output of apaches status website /md-status](./mod-status-certs.png)
|
||||
![cropped output of apaches status website /md-status](./mod-status-certs.png)
|
||||
|
||||
This is **currently testing** because I have no idea if mod_md will update these certs
|
||||
itself or if I should run certbot again when it's needed. In the meantime I monitor my
|
||||
|
@ -122,13 +121,13 @@ I've now seen that no certificate gets renewed automatically.
|
|||
The actual certificate got renewed with the command from above (including
|
||||
the .net domain). The output of that command clearly states:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
NEXT STEPS:
|
||||
- This certificate will not be renewed automatically. Autorenewal of
|
||||
--manual certificates requires the use of an authentication hook script
|
||||
(--manual-auth-hook) but one was not provided. To renew this certificate,
|
||||
repeat this same certbot command before the certificate's expiry date.
|
||||
~~~
|
||||
```
|
||||
|
||||
I will execute the same certbot command before the certificate's expiry date
|
||||
the next time to enhance my experience :wink:
|
||||
|
@ -138,11 +137,11 @@ the next time to enhance my experience :wink:
|
|||
|
||||
## Get some filesystem information
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ dumpfs /dev/rsd1a
|
||||
magic 19540119 (FFS2) time Thu Nov 16 21:14:34 2023
|
||||
[...] (snip; lots of output...)
|
||||
~~~
|
||||
```
|
||||
|
||||
This can be helpful if you want to know, which filesystem you actually
|
||||
use on your OpenBSD box.
|
||||
|
@ -160,15 +159,15 @@ microSD cards.
|
|||
|
||||
Delete the first bytes on the stick:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ doas dd if=/dev/zero bs=1m count=1 of=/dev/rsd2c
|
||||
~~~
|
||||
```
|
||||
|
||||
Create the needed partition:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ echo -n 'edit 0\n0c\n\n2048\n*\nq\n' | doas fdisk -e sd2
|
||||
~~~
|
||||
```
|
||||
|
||||
A short explanation (`\n` is basically a newline; the <kbd>Enter</kbd> key):
|
||||
|
||||
|
@ -181,7 +180,7 @@ A short explanation (`\n` is basically a newline; the <kbd>Enter</kbd> key):
|
|||
|
||||
This results in a partition table like this:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ fdisk sd2
|
||||
Disk: sd2 geometry: 966/255/63 [15523840 Sectors]
|
||||
Offset: 0 Signature: 0xAA55
|
||||
|
@ -192,11 +191,11 @@ Offset: 0 Signature: 0xAA55
|
|||
1: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused
|
||||
2: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused
|
||||
3: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused
|
||||
~~~
|
||||
```
|
||||
|
||||
whereas a `fdisk -iy sd2` creates a table like this:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ fdisk sd2
|
||||
Disk: sd2 geometry: 966/255/63 [15523840 Sectors]
|
||||
Offset: 0 Signature: 0xAA55
|
||||
|
@ -207,20 +206,20 @@ Offset: 0 Signature: 0xAA55
|
|||
1: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused
|
||||
2: 00 0 0 0 - 0 0 0 [ 0: 0 ] Unused
|
||||
*3: A6 0 1 2 - 966 80 10 [ 64: 15523776 ] OpenBSD
|
||||
~~~
|
||||
```
|
||||
|
||||
Don't forget to create the file system:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ doas newfs_msdos -F 32 -L 8GB_Stick sd2i
|
||||
~~~
|
||||
```
|
||||
|
||||
## Mounting disk images
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ doas vnconfig /dev/vnd0c /path/to/imagefile.img
|
||||
$ doas mount_msdos /dev/vnd0i ~/mnt/disk
|
||||
~~~
|
||||
```
|
||||
|
||||
## Packages / Ports
|
||||
|
||||
|
@ -230,9 +229,9 @@ Updating dependencies before installing (switch `-U`) does help sometimes...
|
|||
|
||||
> Can't install [package] because of libraries
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ doas pkg_add -uiU
|
||||
~~~
|
||||
```
|
||||
|
||||
Should fix that.
|
||||
|
||||
|
@ -242,9 +241,9 @@ Should fix that.
|
|||
|
||||
Install python modules with pip.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ python3 -m pip install --user --upgrade ${example_module}
|
||||
~~~
|
||||
```
|
||||
|
||||
## Rust
|
||||
|
||||
|
@ -259,9 +258,9 @@ that disables the optional features (battery).
|
|||
|
||||
So the final installation of Starship looks like:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ cargo install starship --locked --no-default-features
|
||||
~~~
|
||||
```
|
||||
|
||||
The compilation took about 9½ minutes.
|
||||
|
||||
|
@ -280,7 +279,7 @@ and it failes at downloading the satellites infos from other websites.
|
|||
I solved this by copying `/etc/ssl` to `/var/www/etc/ssl` via rsync, keeping file
|
||||
permissions intact. I may setup a cronjob for this maybe.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ cd /var/www
|
||||
$ doas rsync -avhzrp /etc/ssl/ etc/ssl
|
||||
sending incremental file list
|
||||
|
@ -297,7 +296,7 @@ total size is 344.08K speedup is 2.21
|
|||
$ doas rcctl restart php80_fpm
|
||||
php80_fpm(ok)
|
||||
php80_fpm(ok)
|
||||
~~~
|
||||
```
|
||||
|
||||
## Cloudlog (client)
|
||||
|
||||
|
@ -306,9 +305,9 @@ Use of the online logging tool Cloudlog on my OpenBSD machine.
|
|||
First off, connect the TX-500 with the computer (CAT cable) and
|
||||
start `rigctld`:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ rigctld -m 2014 -r /dev/cuaU0 -s 9600 -v
|
||||
~~~
|
||||
```
|
||||
|
||||
I use `2014` which is actually a Kenwood TS-2000 -- but on OpenBSD hamlib is currently
|
||||
at version 4.4 and the TX-500 is only available on
|
||||
|
@ -316,16 +315,16 @@ at version 4.4 and the TX-500 is only available on
|
|||
|
||||
For newer hamlib versions (≥4.5) use the rig 2050 like:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ rigctld -m 2050 -r /dev/cuaU0 -s 9600 -v
|
||||
~~~
|
||||
```
|
||||
|
||||
In combination with Digirig I would probably use something like this,
|
||||
because otherwise Digirig would instantly key the transceiver:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ rigctld -m 2014 -r /dev/cuaU0 -s 9600 --set-conf=rts_state=OFF -v
|
||||
~~~
|
||||
```
|
||||
|
||||
Well, I tested this on my desk at home but never used my Laptop for
|
||||
doing digital modes with my TX-500 though -- but I want this to be noted
|
||||
|
@ -333,9 +332,9 @@ here just in case I should need it someday.
|
|||
|
||||
On another terminal start [`cloudlogbashcat.sh`](https://github.com/g0wfv/CloudlogBashCat):
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ cloudlogbashcat.sh
|
||||
~~~
|
||||
```
|
||||
|
||||
Now, if you open the website of your Cloudlog installation (and if you have
|
||||
setup your rigs) and select the radio that uses cloudlogbashcat.
|
||||
|
@ -348,38 +347,38 @@ setup your rigs) and select the radio that uses cloudlogbashcat.
|
|||
|
||||
I defined an alias `ls` but I forgot where it was.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ PS4='+%x:%I>' zsh -i -x -c '' |& grep ls
|
||||
~~~
|
||||
```
|
||||
|
||||
There will be a lot of screen output probably.
|
||||
|
||||
### Renaming multiple directories
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ count=1; zmv -n '*' '$f[1,4]/$((count++))-$f[12,-1]'
|
||||
mv -- 2023-08-05-problems-with-apt-keys-on-my-hotspots 2023/51-problems-with-apt-keys-on-my-hotspots
|
||||
mv -- 2023-08-26-dmrhost-on-a-raspberrypi4-with-openbsd-or-freebsd 2023/52-dmrhost-on-a-raspberrypi4-with-openbsd-or-freebsd
|
||||
mv -- 2023-09-16-openbsd-current-built-from-source 2023/53-openbsd-current-built-from-source
|
||||
~~~
|
||||
```
|
||||
|
||||
Moves subdirectories into other folder structure with a counting variable.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ count=16; zmv -Q '*(/)' '$((count++))-$f[12,-1]'
|
||||
mv -- 2021-08-08-win10-grub2-and-uefi 16-win10-grub2-and-uefi
|
||||
mv -- 2021-08-12-running-n1mm-logger-on-linux 17-running-n1mm-logger-on-linux
|
||||
mv -- 2021-10-03-winlink-and-vara-on-linux 18-winlink-and-vara-on-linux
|
||||
mv -- 2021-10-03-wordlist-generation 19-wordlist-generation
|
||||
mv -- 2021-10-26-processes-accessing-mountpoints 20-processes-accessing-mountpoints
|
||||
~~~
|
||||
```
|
||||
|
||||
That was the second part, counting from where we stopped from the previous directory.
|
||||
|
||||
There was a draft post left in `2022` which I deleted, now I had to renumber the folders
|
||||
from `28-*` to `34-` to a number lower by 1.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ for i in {29..34}; do zmv -n -W $i'*' $((--i))'*'; done
|
||||
mv -- 29-using-nfs-on-a-raspberry-pi 28-using-nfs-on-a-raspberry-pi
|
||||
mv -- 30-vpn-tunnel-into-hamnet-on-fedora-36 29-vpn-tunnel-into-hamnet-on-fedora-36
|
||||
|
@ -387,15 +386,15 @@ mv -- 31-winlink-on-linux-fix-invalid-handle-on-logfiles 30-winlink-on-linux-fix
|
|||
mv -- 32-hamnet-on-the-pfsense 31-hamnet-on-the-pfsense
|
||||
mv -- 33-changing-network-metrics-on-linux 32-changing-network-metrics-on-linux
|
||||
mv -- 34-change-git-submodule-url 33-change-git-submodule-url
|
||||
~~~
|
||||
```
|
||||
|
||||
So, there is still one post left that is actually a draft post and I'd like to
|
||||
remove the leading number from that directory.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ zmv -n -W '59-*' '*'
|
||||
mv -- 59-pat-winlink-on-openbsd pat-winlink-on-openbsd
|
||||
~~~
|
||||
```
|
||||
|
||||
## Neovim
|
||||
|
||||
|
@ -418,13 +417,13 @@ If that does not work, it is mostly a submodule. You can try to update and compi
|
|||
Switch to the folder, update `make` with `gmake` and finally run `gmake` in that folder.
|
||||
That will produce a compiled output (a library) and the updated procedure will pick that up
|
||||
at the next run and the submodule will usually be ignored unless the main repo has new commits
|
||||
in its tree. You may then stash the local changes and re-run the update procedure again.
|
||||
in its tree. You may then stash the local changes and re-run the update procedure again.
|
||||
|
||||
## Concatenate sound files (.wav)
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sox *.wav one-big-soundfile.wav
|
||||
~~~
|
||||
```
|
||||
|
||||
`cat *.wav > bigfile.wav` works too, but different. That would put all
|
||||
audio files into separate streams at the output file whereas `sox`
|
||||
|
@ -432,16 +431,15 @@ appends one file after another in the big output file.
|
|||
|
||||
## Manual page sections
|
||||
|
||||
| Section | Description |
|
||||
| :--- | :--- |
|
||||
| 1 | General Commands |
|
||||
| 2 | System Calls |
|
||||
| 3 | Library Functions |
|
||||
| 3p | Perl Library |
|
||||
| 4 | Device Drivers |
|
||||
| 5 | File Formats |
|
||||
| 6 | Games |
|
||||
| Section | Description |
|
||||
| :------ | :------------------------ |
|
||||
| 1 | General Commands |
|
||||
| 2 | System Calls |
|
||||
| 3 | Library Functions |
|
||||
| 3p | Perl Library |
|
||||
| 4 | Device Drivers |
|
||||
| 5 | File Formats |
|
||||
| 6 | Games |
|
||||
| 7 | Miscallaneous Information |
|
||||
| 8 | System Manager's Manual |
|
||||
| 8 | System Manager's Manual |
|
||||
| 9 | Kernel Developer's Manual |
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
title: Raspberry Pi
|
||||
date: 2024-01-27T11:01:31+0000
|
||||
#lastmod:
|
||||
#lastmod:
|
||||
|
||||
#showDate: false
|
||||
showReadingTime: false
|
||||
|
@ -12,7 +12,6 @@ showBreadcrumbs: true
|
|||
|
||||
feed_exclude: true
|
||||
# site_exclude: true
|
||||
|
||||
---
|
||||
|
||||
Some basic info about Raspberry Pi of any version.
|
||||
|
@ -23,17 +22,17 @@ Some basic info about Raspberry Pi of any version.
|
|||
|
||||
#### Actual models
|
||||
|
||||
| LED Activity | Description |
|
||||
|:------------------|:------------------------------------|
|
||||
| 3 flashes | start.elf not found |
|
||||
| 4 flashes | start.elf not launch-able (corrupt) |
|
||||
| 7 flashes | kernel.img not found |
|
||||
| LED Activity | Description |
|
||||
| :---------------- | :----------------------------------------------------------------------------------------------- |
|
||||
| 3 flashes | start.elf not found |
|
||||
| 4 flashes | start.elf not launch-able (corrupt) |
|
||||
| 7 flashes | kernel.img not found |
|
||||
| 8 flashes | SDRAM not recognized. You need a newer bootcode.bin/start.elf firmware, or your SDRAM is damaged |
|
||||
|
||||
#### Older models up to Raspberry Pi 3
|
||||
|
||||
| LED Activity | Description |
|
||||
|:------------------|:-------------------------------------|
|
||||
| :---------------- | :----------------------------------- |
|
||||
| 3 flashes | loader.bin not found |
|
||||
| 4 flashes | loader.bin not launch-able (corrupt) |
|
||||
| 5 flashes | start.elf not found |
|
||||
|
@ -43,21 +42,21 @@ Some basic info about Raspberry Pi of any version.
|
|||
### Raspberry Pi 4
|
||||
|
||||
| Long flashes | Short flashes | Description |
|
||||
|:-------------|:--------------|:------------------------------------|
|
||||
| 0 | 3 | Generic failure to boot |
|
||||
| 0 | 4 | start*.elf not found |
|
||||
| 0 | 7 | Kernel image not found |
|
||||
| 0 | 8 | SDRAM failure |
|
||||
| :----------- | :------------ | :---------------------------------- |
|
||||
| 0 | 3 | Generic failure to boot |
|
||||
| 0 | 4 | start\*.elf not found |
|
||||
| 0 | 7 | Kernel image not found |
|
||||
| 0 | 8 | SDRAM failure |
|
||||
| 0 | 9 | Insufficient SDRAM |
|
||||
| 0 | 10 | In HALT state |
|
||||
| 2 | 1 | Partition not FAT |
|
||||
| 2 | 2 | Failed to read from partition |
|
||||
| 2 | 3 | Extended partition not FAT |
|
||||
| 2 | 4 | File signature/hash mismatch - Pi 4 |
|
||||
| 4 | 4 | Unsupported board type |
|
||||
| 4 | 5 | Fatal firmware error |
|
||||
| 4 | 6 | Power failure type A |
|
||||
| 4 | 7 | Power failure type B |
|
||||
| 2 | 1 | Partition not FAT |
|
||||
| 2 | 2 | Failed to read from partition |
|
||||
| 2 | 3 | Extended partition not FAT |
|
||||
| 2 | 4 | File signature/hash mismatch - Pi 4 |
|
||||
| 4 | 4 | Unsupported board type |
|
||||
| 4 | 5 | Fatal firmware error |
|
||||
| 4 | 6 | Power failure type A |
|
||||
| 4 | 7 | Power failure type B |
|
||||
|
||||
## Freeze a package with apt/apt-get
|
||||
|
||||
|
@ -73,9 +72,9 @@ Run `wifi-menu`. It does not survice a reboot though!
|
|||
|
||||
I prefer `iwctl` or NetworkManager, so what I do:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
# pacman -S networkmanager
|
||||
~~~
|
||||
```
|
||||
|
||||
### No network after boot
|
||||
|
||||
|
@ -85,15 +84,15 @@ file was totally messed up (a bracket too much I think).
|
|||
|
||||
So there is a quick way to connect to a WiFi network with the use of `nmcli` (NetworkManager).
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo nmcli device wifi connect [ssid] password [password]
|
||||
~~~
|
||||
```
|
||||
|
||||
You can view networks with (no need for _sudo_):
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ nmcli device wifi list
|
||||
~~~
|
||||
```
|
||||
|
||||
### Moving to testing (from bookworm)
|
||||
|
||||
|
@ -107,24 +106,24 @@ prompt that I use on my computers -- it needed a newer version of the
|
|||
|
||||
First of all, upgrade to the latest packages.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo apt update && sudo apt upgrade
|
||||
~~~
|
||||
```
|
||||
|
||||
Now change the release name (e.g. `bookworm`) to `testing` in `/etc/apt/sources.list`:
|
||||
|
||||
~~~
|
||||
```
|
||||
deb http://deb.debian.org/debian testing main contrib non-free non-free-firmware
|
||||
deb http://deb.debian.org/debian-security/ testing-security main contrib non-free non-free-firmware
|
||||
deb http://deb.debian.org/debian testing-updates main contrib non-free non-free-firmware
|
||||
~~~
|
||||
```
|
||||
|
||||
Then update step by step.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo apt update
|
||||
$ sudo apt upgrade
|
||||
~~~
|
||||
```
|
||||
|
||||
> Restart services during package upgrades without asking?
|
||||
|
||||
|
@ -132,10 +131,10 @@ Answer with <kbd>Yes</kbd>.
|
|||
|
||||
Finish the update:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo apt full-upgrade
|
||||
$ sudo reboot
|
||||
~~~
|
||||
```
|
||||
|
||||
### Python 3
|
||||
|
||||
|
@ -145,18 +144,18 @@ I could not find `aprslib` as a package, so I had to install this myself.
|
|||
Debian did not allow the installation as it did before, so I had to create
|
||||
a virtual environment. And it went like this:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ python -m venv ~/.env
|
||||
$ source ~/.env/bin/activate
|
||||
$ pip install aprslib
|
||||
$ deactivate
|
||||
~~~
|
||||
```
|
||||
|
||||
I now have a similar line in my crontab:
|
||||
|
||||
~~~crontab
|
||||
```crontab
|
||||
3 * * * * /home/dominic/.env/bin/python /home/dominic/bin/aprs_sendstatus.py
|
||||
~~~
|
||||
```
|
||||
|
||||
We could also create virtual environments per application, module, package etc.
|
||||
|
||||
|
@ -175,25 +174,25 @@ Though, I have some quick notes to remember:
|
|||
|
||||
Some software is needed to get status information about the batteries (which are of type 18650).
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ python3 -m venv .
|
||||
$ curl -LsO https://raw.githubusercontent.com/geeekpi/upsplus/main/install.sh
|
||||
$ bash install.sh
|
||||
~~~
|
||||
```
|
||||
|
||||
Any errors can be resolved by installing by hand. In my notes I thought that info is enough, so
|
||||
here we are :wink:
|
||||
|
||||
We may have to edit our crontab:
|
||||
|
||||
~~~cron
|
||||
```cron
|
||||
* * * * * /home/dr/bin/python3 /home/dr/bin/upsPlus.py > /tmp/upsPlus.log
|
||||
* * * * * /home/dr/bin/python3 /home/dr/bin/upsPlus_iot.py > /tmp/upsPlus_iot.log
|
||||
~~~
|
||||
```
|
||||
|
||||
Getting information:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ python3 bin/upsPlus.py
|
||||
------------------------------------------------------------
|
||||
------Current information of the detected Raspberry Pi------
|
||||
|
@ -210,7 +209,7 @@ Current Battery Power Supplement: 263.415 mW
|
|||
Successfully set the protection voltage to: 3700 mV
|
||||
------------------------------------------------------------
|
||||
Currently charging via Type C Port.
|
||||
~~~
|
||||
```
|
||||
|
||||
The Raspberry Pi will continue to work if you remove the power cable.
|
||||
|
||||
|
@ -250,4 +249,3 @@ file (`pico_nuke_pico_w-1.1.uf2`) on the mounted device.
|
|||
On OpenBSD there is no response but you can see the filesystem unmounted/removed.
|
||||
Unplug the USB and plug it in again booting into uf2 loading, copying over the
|
||||
MicroPython uf2 file again.
|
||||
|
||||
|
|
|
@ -12,4 +12,3 @@ for me.
|
|||
## Replicating a MySQL database
|
||||
|
||||
<https://www.digitalocean.com/community/tutorials/how-to-set-up-replication-in-mysql>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
title: Unraid
|
||||
date: 2024-01-25T22:41:48+0100
|
||||
lastmod: 2024-08-31T14:02:07+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
tags:
|
||||
- unraid
|
||||
- selfhost
|
||||
|
@ -25,9 +25,9 @@ Selfhosting made easy -- with Unraid as storage and virtualisation server.
|
|||
|
||||
Easy peasy -- though, I forget that command every time I need it.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
# docker network create {network-name}
|
||||
~~~
|
||||
```
|
||||
|
||||
## Don't move dockers filesystem
|
||||
|
||||
|
@ -42,4 +42,3 @@ files mentioned in the directory above.
|
|||
|
||||
This should bring back all your docker containers with your used settings,
|
||||
but as my knowledge is limited, I can't guarantee this: I probably just had luck :winking_face_with_tongue:
|
||||
|
||||
|
|
|
@ -5,10 +5,9 @@ summary: >
|
|||
This is a short story from my life that explains how I came to my amateur
|
||||
radio license.
|
||||
date: 2020-01-02T17:01:26+01:00
|
||||
lastmod: "2023-02-12T01:32:43+0100"
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
categories: [amateur-radio]
|
||||
tags: [life]
|
||||
|
||||
---
|
||||
|
||||
I'm not the casual ham radio operator that always wanted to operate his own
|
||||
|
@ -37,53 +36,57 @@ Innsbruck.
|
|||
We had to attend these blocks:
|
||||
|
||||
**1. block**
|
||||
- **Friday, September 27, (15:00 to 20:30)**
|
||||
introduction and law pt 1
|
||||
- **Saturday, September 28, (09:00 to 18:00)**
|
||||
law pt 2 and engineering pt 1
|
||||
|
||||
- **Friday, September 27, (15:00 to 20:30)**
|
||||
introduction and law pt 1
|
||||
- **Saturday, September 28, (09:00 to 18:00)**
|
||||
law pt 2 and engineering pt 1
|
||||
|
||||
**2. block**
|
||||
- **Friday, October 4, (15:00 to 20:30)**
|
||||
operating technology pt 1
|
||||
- **Saturday, October 5, (09:00 to 18:00)**
|
||||
engineering pt 2
|
||||
|
||||
- **Friday, October 4, (15:00 to 20:30)**
|
||||
operating technology pt 1
|
||||
- **Saturday, October 5, (09:00 to 18:00)**
|
||||
engineering pt 2
|
||||
|
||||
**3. block**
|
||||
- **Friday, October 11, (15:00 to 20:30)**
|
||||
engineering pt 3
|
||||
- **Saturday, October 12, (09:00 to 18:00)**
|
||||
engineering pt 4 and operating technology pt 2
|
||||
|
||||
- **Friday, October 11, (15:00 to 20:30)**
|
||||
engineering pt 3
|
||||
- **Saturday, October 12, (09:00 to 18:00)**
|
||||
engineering pt 4 and operating technology pt 2
|
||||
|
||||
**4. block -- refreshing**
|
||||
- **Saturday, October 19, (13:00 to 17:00)**
|
||||
simulation of an exam (it was highly recommended to visit this training)
|
||||
|
||||
- **Saturday, October 19, (13:00 to 17:00)**
|
||||
simulation of an exam (it was highly recommended to visit this training)
|
||||
|
||||
## Cost report
|
||||
|
||||
This represents the total amount of money I had to put into getting my license.
|
||||
|
||||
| date and time | value | description |
|
||||
| :--- | ---: | :--- |
|
||||
| 12.08.2019, Monday | 75.56 € | documentation scripts |
|
||||
| 27.09.2019, Friday | 90.00 € | the course itself |
|
||||
| 27.09.2019, Friday | 14.70 € | parking "Hentschelhof" |
|
||||
| 28.09.2019, Saturday | 48.15 € | refueling |
|
||||
| 28.09.2019, Saturday | 10 € | lunch |
|
||||
| 28.09.2019, Saturday | 14.40 € | parking "Wilten" |
|
||||
| 04.10.2019, Friday | 14.40 € | parking "Wilten" |
|
||||
| 05.10.2019, Saturday | 10 € | lunch |
|
||||
| 05.10.2019, Saturday | 18.20 € | parking "Altstadtgarage" |
|
||||
| 05.10.2019, Saturday | 53.11 € | refueling |
|
||||
| 11.10.2019, Friday | 14.70 € | parking "Altstadtgarage" |
|
||||
| 12.10.2019, Saturday | 7 € | lunch |
|
||||
| 12.10.2019, Saturday | 18.20 € | parking "Altstadtgarage" |
|
||||
| 12.10.2019, Saturday | 45.26 € | refueling |
|
||||
| 19.10.2019, Saturday | 13 € | parking "Markthalle" |
|
||||
| 19.10.2019, Saturday | 57.08 € | refueling |
|
||||
| 22.10.2019, Tuesday | 28.83 € | examination fee |
|
||||
| 22.10.2019, Tuesday | 14.30 € | examination certificate |
|
||||
| 22.10.2019, Tuesday | 3 € | parking "SOHO 2.0" |
|
||||
| | **549.89 €** | **total** |
|
||||
| date and time | value | description |
|
||||
| :------------------- | -----------: | :----------------------- |
|
||||
| 12.08.2019, Monday | 75.56 € | documentation scripts |
|
||||
| 27.09.2019, Friday | 90.00 € | the course itself |
|
||||
| 27.09.2019, Friday | 14.70 € | parking "Hentschelhof" |
|
||||
| 28.09.2019, Saturday | 48.15 € | refueling |
|
||||
| 28.09.2019, Saturday | 10 € | lunch |
|
||||
| 28.09.2019, Saturday | 14.40 € | parking "Wilten" |
|
||||
| 04.10.2019, Friday | 14.40 € | parking "Wilten" |
|
||||
| 05.10.2019, Saturday | 10 € | lunch |
|
||||
| 05.10.2019, Saturday | 18.20 € | parking "Altstadtgarage" |
|
||||
| 05.10.2019, Saturday | 53.11 € | refueling |
|
||||
| 11.10.2019, Friday | 14.70 € | parking "Altstadtgarage" |
|
||||
| 12.10.2019, Saturday | 7 € | lunch |
|
||||
| 12.10.2019, Saturday | 18.20 € | parking "Altstadtgarage" |
|
||||
| 12.10.2019, Saturday | 45.26 € | refueling |
|
||||
| 19.10.2019, Saturday | 13 € | parking "Markthalle" |
|
||||
| 19.10.2019, Saturday | 57.08 € | refueling |
|
||||
| 22.10.2019, Tuesday | 28.83 € | examination fee |
|
||||
| 22.10.2019, Tuesday | 14.30 € | examination certificate |
|
||||
| 22.10.2019, Tuesday | 3 € | parking "SOHO 2.0" |
|
||||
| | **549.89 €** | **total** |
|
||||
|
||||
In the end I paid **203.60€** for gasoline, **27€** for lunch on Saturdays and
|
||||
**110.60€** for parking my car.
|
||||
|
@ -95,8 +98,8 @@ kilometers -- you may get away with less on that part.
|
|||
The exam is split into three different topics: law, engineering and operating
|
||||
technology.
|
||||
|
||||
Every person gets three questions in *law*, three questions in *engineering* and
|
||||
three questions in *operating technology*. This happens one person at a time, so
|
||||
Every person gets three questions in _law_, three questions in _engineering_ and
|
||||
three questions in _operating technology_. This happens one person at a time, so
|
||||
if person 1 answered the first three questions person 2 has to answer three
|
||||
other questions in the same topic.
|
||||
|
||||
|
|
|
@ -4,7 +4,6 @@ aliases: /posts/2020-11-14-error-with-signed-commits
|
|||
categories: [computerstuff]
|
||||
tags: [git]
|
||||
date: 2020-11-14T23:22:42+01:00
|
||||
|
||||
---
|
||||
|
||||
For some reason my git commits failed when I re-enabled gpg signing. This is how
|
||||
|
@ -14,22 +13,22 @@ I finally fixed that problem.
|
|||
|
||||
##### Add to `~/.gnupg/gpg.conf`
|
||||
|
||||
~~~plain
|
||||
use-agent
|
||||
```plain
|
||||
use-agent
|
||||
pinentry-mode loopback
|
||||
~~~
|
||||
```
|
||||
|
||||
##### And add to `~/.gnupg/gpg-agent.conf`
|
||||
|
||||
~~~plain
|
||||
```plain
|
||||
allow-loopback-pinentry
|
||||
~~~
|
||||
```
|
||||
|
||||
##### Restart the agent
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ echo RELOADAGENT | gpg-connect-agent
|
||||
~~~
|
||||
```
|
||||
|
||||
This information was found on
|
||||
[d.sb/2016/11/gpg-inappropriate-ioctl-for-device-errors][1].
|
||||
|
|
|
@ -4,7 +4,6 @@ aliases: /posts/2020-11-14-keep-up-to-date-on-forked-repositories
|
|||
categories: [computerstuff]
|
||||
tags: [git]
|
||||
date: 2020-11-14T23:20:16+01:00
|
||||
|
||||
---
|
||||
|
||||
I usually fetch the upstream repository and merge it into my local repository,
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
---
|
||||
title: Operating the Z-Shell
|
||||
aliases:
|
||||
- /posts/2020-11-15-operating-the-z-shell
|
||||
- /posts/2020-11-14-operating-the-z-shell
|
||||
- /posts/2020-11-15-operating-the-z-shell
|
||||
- /posts/2020-11-14-operating-the-z-shell
|
||||
categories: [computerstuff]
|
||||
tags: [zsh-shell]
|
||||
date: 2020-11-15T00:35:22+01:00
|
||||
|
||||
---
|
||||
|
||||
This article is a summary of
|
||||
|
@ -18,7 +17,7 @@ pleasure :wink:
|
|||
<!--more-->
|
||||
|
||||
{{< alert circle-info >}}
|
||||
*None of the following commands on this page are my own.*
|
||||
_None of the following commands on this page are my own._
|
||||
{{< /alert >}}
|
||||
|
||||
[1]: https://reasoniamhere.com/2014/01/11/outrageously-useful-tips-to-master-your-z-shell/
|
||||
|
|
|
@ -7,8 +7,7 @@ summary: >
|
|||
categories: [amateur-radio]
|
||||
tags: [dmr, scripting]
|
||||
date: 2020-11-16T23:23:51+01:00
|
||||
lastmod: 2024-09-22T17:00:57+0000
|
||||
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
---
|
||||
|
||||
Let's start with the website [ham-digital.org](https://ham-digital.org/). It
|
||||
|
@ -27,7 +26,7 @@ registrations or the list of local administrators.~~
|
|||
[reg]: https://register.ham-digital.org/
|
||||
|
||||
Okay, I try to keep this simple. These scripts are made to download an actual
|
||||
snapshot of the DMR-ID database from *ham-digital.org*. They create a
|
||||
snapshot of the DMR-ID database from _ham-digital.org_. They create a
|
||||
comma-separated list of DMR-IDs and callsigns to import into an amateur radio
|
||||
device. Actually I use them only on my
|
||||
[Radioddity GD-77]({{< ref "equipment/radio-stuff/handhelds/radioddity-gd77" >}}).
|
||||
|
@ -38,7 +37,7 @@ That fetches the whole database, which are something around 180.000 entries at
|
|||
the moment (2020-Nov-15). The script uses about 8MB of RAM. Something like
|
||||
that.
|
||||
|
||||
~~~php
|
||||
```php
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/*
|
||||
|
@ -68,7 +67,7 @@ that.
|
|||
fclose ($remote_file);
|
||||
fclose ($local_file);
|
||||
?>
|
||||
~~~
|
||||
```
|
||||
|
||||
## Download only a few regions into separate files
|
||||
|
||||
|
@ -76,7 +75,7 @@ Fetch some regions (specified in the script) and some additional callsigns from
|
|||
a file that contains one callsign per line. This script uses a lot more RAM.
|
||||
Something around 32MB I guess. Or so.
|
||||
|
||||
~~~php
|
||||
```php
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/*
|
||||
|
@ -89,13 +88,13 @@ Something around 32MB I guess. Or so.
|
|||
$remote_file = fopen ($url, 'r') or die ($php_errormsg);
|
||||
|
||||
$mem = array ();
|
||||
|
||||
|
||||
while (!feof ($remote_file)) {
|
||||
$line = fgetss ($remote_file, 64);
|
||||
$elem = explode (',', $line, -4);
|
||||
array_push($mem, $elem);
|
||||
}
|
||||
|
||||
|
||||
$path = '/Users/dominic/';
|
||||
|
||||
$fav_filename = 'Favorite_Callsigns.txt';
|
||||
|
@ -145,14 +144,14 @@ Something around 32MB I guess. Or so.
|
|||
fclose ($remote_file);
|
||||
fclose ($local_file);
|
||||
?>
|
||||
~~~
|
||||
```
|
||||
|
||||
## Download only a few regions into one single file
|
||||
|
||||
Like the one above, but it saves all IDs into one file. Uses probably the same
|
||||
amount of RAM.
|
||||
|
||||
~~~php
|
||||
```php
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/*
|
||||
|
@ -167,7 +166,7 @@ amount of RAM.
|
|||
$remote_file = fopen ($url, 'r') or die ($php_errormsg);
|
||||
|
||||
$mem = array ();
|
||||
|
||||
|
||||
while (!feof ($remote_file)) {
|
||||
$line = fgetss ($remote_file, 64);
|
||||
$elem = explode (',', $line, -4);
|
||||
|
@ -190,7 +189,7 @@ amount of RAM.
|
|||
|
||||
$filename = 'DMR-IDS-SMALL.csv';
|
||||
@unlink($path.$filename);
|
||||
|
||||
|
||||
$file = fopen ($path.$filename, 'w') or die ($php_errormsg);
|
||||
|
||||
fputcsv ($file, array ('dmrid', 'callsign', 'name'));
|
||||
|
@ -215,6 +214,6 @@ amount of RAM.
|
|||
}
|
||||
}
|
||||
|
||||
fclose ($file);
|
||||
fclose ($file);
|
||||
?>
|
||||
~~~
|
||||
```
|
||||
|
|
|
@ -3,11 +3,10 @@ title: My virtual windows machine from VirtualBox on Big Sur will not start
|
|||
aliases: /posts/2020-11-22-virtual-machine-on-big-sur-not-starting
|
||||
summary: >
|
||||
A quick fix if your virtual machine will not start. As long, as you got the
|
||||
same configuration as me
|
||||
same configuration as me
|
||||
categories: [computerstuff]
|
||||
tags: [macos,virtualbox]
|
||||
tags: [macos, virtualbox]
|
||||
date: 2020-11-22T18:02:45+01:00
|
||||
|
||||
---
|
||||
|
||||
Okay, a quick one. I've updated my macbook now to Big Sur today. A lot of files
|
||||
|
@ -28,9 +27,9 @@ protection system as suggested on the forums before and rebootet the system agai
|
|||
|
||||
To enable Apples protection system, type this command:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ csrutil enable
|
||||
~~~
|
||||
```
|
||||
|
||||
After that, type `reboot` and hit enter.
|
||||
|
||||
|
|
|
@ -7,7 +7,6 @@ summary: >
|
|||
date: 2020-12-21T12:13:30+01:00
|
||||
categories: [computerstuff]
|
||||
tags: [git]
|
||||
|
||||
---
|
||||
|
||||
For me, git repositories are a complex thing. As I wrote in an [earlier article][1]
|
||||
|
@ -34,7 +33,7 @@ please let me know. I'm all up to learn this stuff the right way.
|
|||
|
||||
Let's take my prezto repository and add the upstream repository to it.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ git log
|
||||
commit d321120fdebb84c7dc282a05eaaa57fdaf56987b (HEAD -> master)
|
||||
Author: Dominic Reich <dominic>
|
||||
|
@ -71,7 +70,7 @@ Date: Fri Dec 18 16:38:31 2020 +0100
|
|||
Release notes:
|
||||
|
||||
[...]
|
||||
~~~
|
||||
```
|
||||
|
||||
In this example I already have a commit that changes something. And a few commits
|
||||
later the changes will be reverted again because that did not work out so well.
|
||||
|
@ -84,16 +83,16 @@ on top of the history on github.
|
|||
|
||||
Now, create our patchfile.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ git format-patch -5 HEAD > ../changes.patch
|
||||
~~~
|
||||
```
|
||||
|
||||
This saves the recent 5 commits from HEAD into `../changes.patch`, which file
|
||||
is not in the git repository, but one directory above.
|
||||
|
||||
We continue using the master branch and getting upstream/master.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ git checkout master
|
||||
Bereits auf 'master'
|
||||
Ihr Branch ist auf demselben Stand wie 'origin/master'.
|
||||
|
@ -105,13 +104,13 @@ Bereits aktuell.
|
|||
$ git reset --hard upstream/master
|
||||
HEAD ist jetzt bei b7a80d9 prompt: update powerlevel10k submodule to v1.14.4
|
||||
$ git push origin master --force
|
||||
~~~
|
||||
```
|
||||
|
||||
Now we have our local master branch set equal to the master branch on the
|
||||
remote upstream repository. We now add our changes into the repository, our
|
||||
patchfile.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ patch -p1 < ../changes.patch
|
||||
patching file runcoms/zlogout
|
||||
patching file runcoms/zpreztorc
|
||||
|
@ -122,7 +121,7 @@ patching file runcoms/zaliases
|
|||
patching file runcoms/zpreztorc
|
||||
patching file runcoms/zaliases
|
||||
patching file runcoms/zshenv
|
||||
~~~
|
||||
```
|
||||
|
||||
This leaves us again with many changes, but we can add them to git all together
|
||||
as one single commit if we like.
|
||||
|
@ -131,7 +130,7 @@ Run `git diff` to view the changes on the files.
|
|||
|
||||
Make your changes now and create a new commit.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ git add .
|
||||
$ gcm 'personalized'
|
||||
[master 3d19001] personalized
|
||||
|
@ -149,11 +148,11 @@ Gesamt 9 (Delta 5), Wiederverwendet 0 (Delta 0), Pack wiederverwendet 0
|
|||
remote: Resolving deltas: 100% (5/5), completed with 5 local objects.
|
||||
To github.com:oe7drt/prezto.git
|
||||
b7a80d9..3d19001 master -> master
|
||||
~~~
|
||||
```
|
||||
|
||||
The history now looks like this:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ git log
|
||||
commit 3d19001518997c29204457fe2d1119fc9830010c (HEAD -> master, origin/master, origin/HEAD)
|
||||
Author: Dominic Reich <dominic>
|
||||
|
@ -170,11 +169,11 @@ Date: Fri Dec 18 16:38:31 2020 +0100
|
|||
Release notes:
|
||||
|
||||
[...]
|
||||
~~~
|
||||
```
|
||||
|
||||
## Approach #2: reset to upstream branch
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ git checkout main
|
||||
Bereits auf 'main'
|
||||
Ihr Branch ist auf demselben Stand wie 'origin/main'.
|
||||
|
@ -207,7 +206,7 @@ Gesamt 6 (Delta 3), Wiederverwendet 0 (Delta 0)
|
|||
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
|
||||
To github.com:oe7drt/MMDVMHost-Websocketboard.git
|
||||
ea48f75..ba62875 main -> main
|
||||
~~~
|
||||
```
|
||||
|
||||
You now have the history of your upstream repository and only one commit on top
|
||||
of the history.
|
||||
|
|
|
@ -6,10 +6,9 @@ summary: >
|
|||
the command line. They work on linux and macOS. Use jpegtran for JPG
|
||||
images.
|
||||
categories: [computerstuff]
|
||||
tags: [ zsh-shell, fish-shell ]
|
||||
tags: [zsh-shell, fish-shell]
|
||||
date: 2020-01-20T20:34:20+01:00
|
||||
lastmod: 2023-12-26T13:25:16+0000
|
||||
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
---
|
||||
|
||||
## Optimizing a bunch of images in a directory
|
||||
|
@ -18,66 +17,66 @@ I found these commands here coincidentally on a
|
|||
[pull request](https://github.com/xianmin/hugo-theme-jane/pull/266) at Github.
|
||||
I found them quite handy :+1:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ find . -type f -name "*.png" -print0 | xargs -0 -I {} optipng -nb -nc "{}"
|
||||
$ find . -type f -name "*.png" -print0 | xargs -0 -I {} advpng -z4 "{}"
|
||||
$ find . -type f -name "*.png" -print0 | xargs -0 -I {} pngcrush -rem gAMA -rem alla -rem cHRM -rem iCCP -rem sRGB -rem time -ow "{}"
|
||||
~~~
|
||||
```
|
||||
|
||||
## Quickly optimizing only one image
|
||||
|
||||
I've set up a function in my `.zaliases` file for this to be done on a single
|
||||
image aswell:
|
||||
|
||||
~~~zsh
|
||||
```zsh
|
||||
function opti() {
|
||||
optipng -nb -nc "$*";
|
||||
advpng -z4 "$*";
|
||||
pngcrush -rem gAMA -rem alla -rem cHRM -rem iCCP -rem sRGB -rem time -ow "$*";
|
||||
}
|
||||
~~~
|
||||
```
|
||||
|
||||
To run all three commands on a single image I just call it like that:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ opti image.png
|
||||
~~~
|
||||
```
|
||||
|
||||
That's all the magic it needs.
|
||||
|
||||
## Use jpegtran for JPG images
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ jpegtran -copy none -optimize -progressive -outfile output.jpg input.jpg
|
||||
~~~
|
||||
```
|
||||
|
||||
## Install these tools on your system
|
||||
|
||||
On debian or ubuntu
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo apt-get install optipng pngcrush advancecomp
|
||||
~~~
|
||||
```
|
||||
|
||||
On Arch based distros using pamac
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo pamac install optipng pngcrush advancecomp
|
||||
~~~
|
||||
```
|
||||
|
||||
(advancecomp is in AUR)
|
||||
|
||||
On macOS
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo port install optipng pngcrush advancecomp
|
||||
~~~
|
||||
```
|
||||
|
||||
or if you use homebrew
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ brew install optipng pngcrush advancecomp
|
||||
~~~
|
||||
```
|
||||
|
||||
You may know other package managers commands, but I only use these.
|
||||
|
||||
|
@ -87,7 +86,7 @@ You may know other package managers commands, but I only use these.
|
|||
|
||||
The files taken from the snapshot tool on my macbook.
|
||||
|
||||
~~~plain
|
||||
```plain
|
||||
33K 00_locales.png
|
||||
61K 01_control-software.png
|
||||
157K 02_mmdvmhost.png
|
||||
|
@ -96,11 +95,11 @@ The files taken from the snapshot tool on my macbook.
|
|||
69K 05_exp_mmdvmhost-dmrnetwork.png
|
||||
212K 06_exp_dmrgw-dmrnetwork1.png
|
||||
236K 07_exp_dmrgw-dmrnetwork2.png
|
||||
~~~
|
||||
```
|
||||
|
||||
Three to four minutes later (all three commands):
|
||||
|
||||
~~~plain
|
||||
```plain
|
||||
17K 00_locales.png
|
||||
33K 01_control-software.png
|
||||
81K 02_mmdvmhost.png
|
||||
|
@ -109,14 +108,14 @@ Three to four minutes later (all three commands):
|
|||
32K 05_exp_mmdvmhost-dmrnetwork.png
|
||||
127K 06_exp_dmrgw-dmrnetwork1.png
|
||||
144K 07_exp_dmrgw-dmrnetwork2.png
|
||||
~~~
|
||||
```
|
||||
|
||||
### By view
|
||||
|
||||
~~~plain
|
||||
```plain
|
||||
25K opti_01.png
|
||||
13K opti_02.png
|
||||
~~~
|
||||
```
|
||||
|
||||
![Original image](opti_01.png "This is the unmodified image: `opti_01.png`") ![Optimized image](opti_02.png "And this is the optimized image: `opti_02.png`")
|
||||
|
||||
|
@ -126,7 +125,7 @@ Do you see much difference?
|
|||
|
||||
I added this to my fishs configuration (when I used fish for a while).
|
||||
|
||||
~~~fish
|
||||
```fish
|
||||
# file: "~/.config/fish/functions/opti.fish"
|
||||
function opti --description "Optimizes .png files"
|
||||
# Author: Dominic, OE7DRT <dominic@oe7drt.com>
|
||||
|
@ -163,11 +162,11 @@ function opti --description "Optimizes .png files"
|
|||
pngcrush -rem gAMA -rem alla -rem cHRM -rem iCCP -rem sRGB -rem time -ow "$argv[$i]";
|
||||
end
|
||||
end
|
||||
~~~
|
||||
```
|
||||
|
||||
And I made one for the jpeg version too:
|
||||
|
||||
~~~fish
|
||||
```fish
|
||||
# file: "~/.config/fish/functions/jopti.fish"
|
||||
function jopti --description "Optimizes .jpg files"
|
||||
# Author: Dominic, OE7DRT <dominic@oe7drt.com>
|
||||
|
@ -202,4 +201,4 @@ function jopti --description "Optimizes .jpg files"
|
|||
jpegtran -copy none -optimize -progressive -outfile "$argv[$i]" "$argv[$i]"
|
||||
end
|
||||
end
|
||||
~~~
|
||||
```
|
||||
|
|
|
@ -1,23 +1,22 @@
|
|||
---
|
||||
title: HS Dual Hat With PiStar v4
|
||||
aliases:
|
||||
- /posts/2020-01-23-hs-dual-hat-with-pistar-v4
|
||||
- /blog/amateur-radio/2020-01-23-hs-dual-hat-with-pistar-v4/
|
||||
- /amateur-radio/2020-01-23-hs-dual-hat-with-pistar-v4/
|
||||
- /posts/2020-01-23-hs-dual-hat-with-pistar-v4
|
||||
- /blog/amateur-radio/2020-01-23-hs-dual-hat-with-pistar-v4/
|
||||
- /amateur-radio/2020-01-23-hs-dual-hat-with-pistar-v4/
|
||||
summary: >
|
||||
This is a MMDVM_HS_Dual_Hat hotspot in duplex mode with DMRGateway
|
||||
and an actual Pi-Star image.
|
||||
categories: amateur-radio
|
||||
tags:
|
||||
- pistar
|
||||
- dmr
|
||||
- ysf
|
||||
- dstar
|
||||
- hotspot
|
||||
- mmdvm
|
||||
- pistar
|
||||
- dmr
|
||||
- ysf
|
||||
- dstar
|
||||
- hotspot
|
||||
- mmdvm
|
||||
date: 2020-01-23T15:03:35+01:00
|
||||
lastmod: 2024-05-19T16:41:25+0000
|
||||
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
---
|
||||
|
||||
{{< alert circle-info >}}
|
||||
|
@ -56,18 +55,18 @@ the same as on the dashboard.
|
|||
|
||||
Now you got the filesystem writable, so start the keyboard configuration:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo dpkg-reconfigure keyboard-configuration
|
||||
~~~
|
||||
```
|
||||
|
||||
I then usually go for the 105-key PC one. Choose German (Austria) and go for the
|
||||
default keyboard layout with no compose key -- except you have other needs.
|
||||
|
||||
Then start generating the locales for your environment.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo dpkg-reconfigure locales
|
||||
~~~
|
||||
```
|
||||
|
||||
Choose the locales that you need or want. My setup looks like this:
|
||||
|
||||
|
@ -80,7 +79,7 @@ I add my aliases to `.bash_aliases` -- this is the file that gets sourced via
|
|||
|
||||
Quick and dirty -- my current `.bash_aliases` on my Pi-Stars looks like this:
|
||||
|
||||
~~~bash
|
||||
```bash
|
||||
# File: "~/.bash_aliases"
|
||||
DATE=$(date +%Y-%m-%d)
|
||||
PI=/var/log/pi-star/
|
||||
|
@ -123,15 +122,15 @@ alias lx='ll -XB'
|
|||
alias ducks='du -cks * | sort -rn | head'
|
||||
|
||||
alias confcat="sed -e 's/#.*//;/^\s*$/d' "$@""
|
||||
~~~
|
||||
```
|
||||
|
||||
### Optional
|
||||
|
||||
More software that comes in handy from time to time.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo apt-get install htop lsof nmap arping vim pydf multitail git ldnsutils
|
||||
~~~
|
||||
```
|
||||
|
||||
{{< figure caption="`pydf` in combination with the alias from above displays a short and colored output when you list your diskspace with `df`" src="11_df_output.png" alt="an example output of `pf`" >}}
|
||||
|
||||
|
@ -140,21 +139,21 @@ $ sudo apt-get install htop lsof nmap arping vim pydf multitail git ldnsutils
|
|||
The installation of vnstat is useful, if you let your pi-star run 24/7 as the
|
||||
database gets cleared on every reboot!
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo apt-get install vnstat
|
||||
~~~
|
||||
```
|
||||
|
||||
Add the following line to your `/etc/fstab` file. I assume that you still
|
||||
have the filesystem writable -- if not, run `rpi-rw`.
|
||||
|
||||
~~~plain
|
||||
```plain
|
||||
# file: "/etc/fstab"
|
||||
tmpfs /var/lib/vnstat tmpfs nodev,noatime,nosuid,mode=1777,size=4m 0 0
|
||||
~~~
|
||||
```
|
||||
|
||||
If you run `cat /etc/fstab` it should look similar to this:
|
||||
|
||||
~~~plain
|
||||
```plain
|
||||
# file: "/etc/fstab"
|
||||
#File System Mountpoint Type Options Dump Pass
|
||||
proc /proc proc defaults 0 0
|
||||
|
@ -176,28 +175,28 @@ tmpfs /var/cache/samba tmpfs nodev,noatime,nosuid,mode=0755,siz
|
|||
tmpfs /var/spool/exim4/db tmpfs nodev,noatime,nosuid,mode=0750,size=64k 0 0
|
||||
tmpfs /var/spool/exim4/input tmpfs nodev,noatime,nosuid,mode=0750,size=64k 0 0
|
||||
tmpfs /var/spool/exim4/msglog tmpfs nodev,noatime,nosuid,mode=0750,size=64k 0 0
|
||||
~~~
|
||||
```
|
||||
|
||||
Normally, vnstat creates `/var/lib/vnstat` and starts the vnstat service. We now
|
||||
delete the freshly created databases (they are nearly empty anyway) and
|
||||
re-create them when we have mounted the ramdisk.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo rm /var/lib/vnstat/*
|
||||
$ sudo mount -a
|
||||
$ sudo systemctl restart vnstatd
|
||||
~~~
|
||||
```
|
||||
|
||||
Now run `vnstat` to display network interface statistics. It's output could
|
||||
look similar to this one:
|
||||
|
||||
~~~plain
|
||||
```plain
|
||||
rx / tx / total / estimated
|
||||
eth0: Not enough data available yet.
|
||||
wlan0:
|
||||
Jän '20 39,23 MiB / 39,10 MiB / 78,33 MiB / 106,00 MiB
|
||||
today 39,23 MiB / 39,10 MiB / 78,33 MiB / 138 MiB
|
||||
~~~
|
||||
```
|
||||
|
||||
It takes time to gather enough information. Get back to this in a few days and
|
||||
you will get more useful information. Because we save the databases in the
|
||||
|
@ -214,9 +213,9 @@ PiStar does not mount the volumes read-only!**
|
|||
|
||||
Once you finished your setup, make the filesystem read-only again.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ rpi-ro
|
||||
~~~
|
||||
```
|
||||
|
||||
## Start setting up your Pi-Star MMDVM
|
||||
|
||||
|
@ -231,16 +230,16 @@ the **Apply Changes** button. So when hitting the button wait a few seconds
|
|||
This setup uses some talk groups from IPSC2/DMR+ and the rest from Brandmeister.
|
||||
Specifically these talkgroups are:
|
||||
|
||||
* Timeslot 1
|
||||
* TG 1 - TG 7
|
||||
* TG 10 - TG 89
|
||||
* TG 100 - TG 199
|
||||
* Timeslot 2
|
||||
* DMR+ reflectors with TG 9
|
||||
* TG 232
|
||||
* TG 8181 - TG 8189
|
||||
* TG 8191 - TG 8199
|
||||
* GPS data sent as private calls to 9057
|
||||
- Timeslot 1
|
||||
- TG 1 - TG 7
|
||||
- TG 10 - TG 89
|
||||
- TG 100 - TG 199
|
||||
- Timeslot 2
|
||||
- DMR+ reflectors with TG 9
|
||||
- TG 232
|
||||
- TG 8181 - TG 8189
|
||||
- TG 8191 - TG 8199
|
||||
- GPS data sent as private calls to 9057
|
||||
|
||||
All other talkgroups are routed to the Brandmeister network. Private calls are
|
||||
also routed to Brandmeister.
|
||||
|
@ -251,7 +250,6 @@ This is where we actually start. At the first start either connect your
|
|||
Raspberry Pi to an ethernet port or look out for a WiFi network called
|
||||
Pi-Star Setup.
|
||||
|
||||
|
||||
{{< figure src="01_control-software.png" alt="Control Software configuration" caption="Make sure to use Duplex Repeater in order to use different RX and TX frequencies." >}}
|
||||
|
||||
### MMDVMHost
|
||||
|
@ -286,9 +284,9 @@ for Hotspot Security. That makes sure, that only you can add a Hotspot with your
|
|||
callsign. Also select the IPSC2 server of your choice and set the wanted
|
||||
options. I go with these for now:
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
StartRef=4197;RelinkTime=15;UserLink=1;TS2_1=232;TS2_2=8189;
|
||||
~~~
|
||||
```
|
||||
|
||||
In this scenario I want to statically link the two talk groups `232` and `8189`
|
||||
on timeslot 2. I also allow `UserLink` which allows users to link to different
|
||||
|
@ -296,9 +294,9 @@ reflectors. The default reflector is `4197` and this gets relinked if nobody
|
|||
presses PTT for 15 minutes. If you need talkgroups from timeslot 1 you would
|
||||
probably write something like this:
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
StartRef=4197;RelinkTime=15;UserLink=1;TS1_1=20;TS2_1=232;TS2_2=8189;
|
||||
~~~
|
||||
```
|
||||
|
||||
That will also include talk group 20 from timeslot 1. I thought you can
|
||||
statically link up to 5 talkgroups, but I'm not sure if this information is up
|
||||
|
@ -342,7 +340,7 @@ When you have saved that, go to the expert settings again and choose again
|
|||
This configuration file is split into paragraphs. Look out for the
|
||||
`[DMR Network 1]` block.
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
[DMR Network 1]
|
||||
Enabled=1
|
||||
Address=178.238.234.72
|
||||
|
@ -359,11 +357,11 @@ Password="***"
|
|||
Debug=0
|
||||
Id=232718001
|
||||
Name=BM_Germany_2622
|
||||
~~~
|
||||
```
|
||||
|
||||
Our next block is called `[DMR Network 2]`.
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
[DMR Network 2]
|
||||
Enabled=1
|
||||
Address=89.185.97.34
|
||||
|
@ -383,7 +381,7 @@ Debug=0
|
|||
Id=2327180
|
||||
Name=DMR+_IPSC2-OE-DMO
|
||||
Options="StartRef=4197;RelinkTime=15;UserLink=1;TS2_1=232;TS2_2=8189;"
|
||||
~~~
|
||||
```
|
||||
|
||||
[Read along here](https://github.com/g4klx/DMRGateway/wiki/Rewrite-Rules)
|
||||
if you want to know more about the different rewrite rules.
|
||||
|
@ -424,8 +422,8 @@ in the middle of the page. To get an api key visit the
|
|||
|
||||
There are some more handy links for Brandmeister:
|
||||
|
||||
* [list connected peers to the Austrian BM_2321 server][list]
|
||||
* [last heard on this specific master server][lh]
|
||||
- [list connected peers to the Austrian BM_2321 server][list]
|
||||
- [last heard on this specific master server][lh]
|
||||
|
||||
[list]: http://62.171.130.35/status/status.htm
|
||||
[lh]: https://brandmeister.network/?page=lh&Master=2321
|
||||
|
@ -440,10 +438,10 @@ Or reboot the whole Raspberry Pi.
|
|||
|
||||
{{< video "pistar-remote-reboot" >}}
|
||||
|
||||
To make use of PiStar Remote you need to set it up. Go to *Configuration ->
|
||||
Expert* and choose *PiStar Remote* (in the Full Edit line).
|
||||
To make use of PiStar Remote you need to set it up. Go to _Configuration ->
|
||||
Expert_ and choose _PiStar Remote_ (in the Full Edit line).
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
[enable]
|
||||
# Is the Pi-Star Remote Enabled? (true|false)
|
||||
enabled=true
|
||||
|
@ -456,11 +454,11 @@ svcrestart=8999998
|
|||
reboot=8999997
|
||||
#shutdown=8999996
|
||||
#hostfiles=9999995
|
||||
~~~
|
||||
```
|
||||
|
||||
## Final words
|
||||
|
||||
I think this whole article is a *work in progress* -- I just always find things
|
||||
I think this whole article is a _work in progress_ -- I just always find things
|
||||
that I do different now and I cannot always change these things in this article
|
||||
too; some aren't even wrong, they just fit better.
|
||||
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
---
|
||||
title: APRS With The Hytera PD785G
|
||||
aliases:
|
||||
- /posts/2020-01-27-aprs-with-hytera-pd785g-v9
|
||||
- /posts/2020-01-27-aprs-with-the-hytera-pd785g
|
||||
- /blog/amateur-radio/2020-01-27-aprs-with-hytera-pd785g-v9
|
||||
- /blog/2020-01-27-aprs-with-hytera-pd785g-v9-firmware/
|
||||
- /posts/2020-01-27-aprs-with-hytera-pd785g-v9
|
||||
- /posts/2020-01-27-aprs-with-the-hytera-pd785g
|
||||
- /blog/amateur-radio/2020-01-27-aprs-with-hytera-pd785g-v9
|
||||
- /blog/2020-01-27-aprs-with-hytera-pd785g-v9-firmware/
|
||||
summary: >
|
||||
This article is based on the Firmware v9.
|
||||
categories: [amateur-radio]
|
||||
tags: [dmr,aprs,hytera]
|
||||
tags: [dmr, aprs, hytera]
|
||||
date: 2020-01-27T17:34:01+01:00
|
||||
lastmod: 2023-12-26T18:36:39+0000
|
||||
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
---
|
||||
|
||||
I've read many articles about the Hytera PD785G, APRS, GPS, IPSC2, DMR+,
|
||||
|
@ -25,15 +24,15 @@ These settings remain the same as on the v8 firmware.
|
|||
|
||||
{{< figure src="hyt_01_gps.png" alt="GPS settings" caption="" >}}
|
||||
|
||||
Also this remains the same -- make sure to disable *Quick GPS* and enable
|
||||
*RSSI Report*.
|
||||
Also this remains the same -- make sure to disable _Quick GPS_ and enable
|
||||
_RSSI Report_.
|
||||
|
||||
{{< figure src="hyt_02_gps.png" alt="GPS settings" caption="" >}}
|
||||
|
||||
You do not really need the other settings. On incoming calls *Call Location*
|
||||
will show the location of other stations on the display. *Voice with Location*
|
||||
You do not really need the other settings. On incoming calls _Call Location_
|
||||
will show the location of other stations on the display. _Voice with Location_
|
||||
sends your own location info out with your voice. This is needed for
|
||||
*Call Location*.
|
||||
_Call Location_.
|
||||
|
||||
## Network settings
|
||||
|
||||
|
@ -44,7 +43,7 @@ Set the Control Center ID to `9057` if you want to appear as portable device.
|
|||
You can also use any of those number-symbol combinations.
|
||||
|
||||
| RRS & Radio IDs | description |
|
||||
| :--- | :--- |
|
||||
| :-------------- | :------------------- |
|
||||
| 9050 | without SSID |
|
||||
| 9055 | house / QTH |
|
||||
| 9056 | camping / fieldday |
|
||||
|
@ -57,7 +56,7 @@ You can also use any of those number-symbol combinations.
|
|||
Setup the channel like this. Just make sure to set `Location Info
|
||||
Revert Channel`. I did not select `IP Multi-site
|
||||
Connect` and I also did not select an `RRS Revert
|
||||
Channel`. I am not 100% sure, but I think the *RRS Revert Channel*
|
||||
Channel`. I am not 100% sure, but I think the _RRS Revert Channel_
|
||||
is what makes your HT send your position out when you change channels.
|
||||
|
||||
{{< figure src="hyt_04_channel.png" alt="channel settings" caption="" >}}
|
||||
|
@ -91,7 +90,6 @@ location is transferred as your plain CALLSIGN, without the `-7` for
|
|||
|
||||
{{< figure src="hyt_08_aprs_route_9057.png" alt="route with the ssid 7" caption="The route looks like this when transmitted as CALLSIGN-7." >}}
|
||||
|
||||
|
||||
{{< figure src="hyt_07_aprs_route_9050.png" alt="route without ssid" caption="The route looks like that when no SSID is appended to the CALLSIGN." >}}
|
||||
|
||||
When transmitted with SSID a location point looks like this:
|
||||
|
|
|
@ -3,25 +3,24 @@ title: Get DMRIDs Via Command Line
|
|||
aliases: /posts/2020-02-04-get-dmrids-on-the-command-line
|
||||
summary: This is a quick workaround to retrieve a DMRID on console or terminal.
|
||||
categories: [amateur-radio]
|
||||
tags: [dmr,pistar,scripting]
|
||||
tags: [dmr, pistar, scripting]
|
||||
date: 2020-02-04T13:05:25+01:00
|
||||
|
||||
---
|
||||
|
||||
You want to install `w3m`. It is a text browser. Don't forget `rpi-rw` before
|
||||
installing anything if you're on Pi-Star.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo apt-get -y install w3m
|
||||
~~~
|
||||
```
|
||||
|
||||
## The script
|
||||
|
||||
The script itself does not verify the given callsign, so whatever you write as
|
||||
an argument, it will be passed to the website. The script returns with `0` if
|
||||
nothing is found.
|
||||
nothing is found.
|
||||
|
||||
~~~bash
|
||||
```bash
|
||||
# file: "~/bin/call"
|
||||
#!/bin/bash
|
||||
# Get DMR-IDs from CALLSIGN or CALLSIGN from DMR-ID or vice versa
|
||||
|
@ -102,7 +101,7 @@ then
|
|||
else
|
||||
print_usage
|
||||
fi
|
||||
~~~
|
||||
```
|
||||
|
||||
{{< alert circle-info >}}
|
||||
If someone has two DMRIDS, the most recent registered callsign will appear on
|
||||
|
@ -115,53 +114,53 @@ heard ids.
|
|||
|
||||
Simply get one DMRID (or two, depends on the callsign though):
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ call OE7DRT
|
||||
~~~
|
||||
```
|
||||
|
||||
Now let's think a bit more complex. You can use the script in a loop. Let's fetch
|
||||
some austrian callsigns only.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ for i in 7one 7two 1three; do call oe$i ids >>! ids; done
|
||||
~~~
|
||||
```
|
||||
|
||||
That would fetch 3 callsigns `OE7ONE`, `OE7TWO` and `OE1ONE` and write them
|
||||
all into the file `ids`. So run `cat ids` and display them on screen. Or copy
|
||||
them into clipboard (on a mac only) with `pbcopy < ids`.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
OE7ONE Username1 0007001 2018-05-12
|
||||
OE7TWO Username2 0007003 2018-12-08
|
||||
OE7TWO Username2 0007002 2018-11-09
|
||||
OE1ONE Username3 0001001 2020-03-13
|
||||
~~~
|
||||
```
|
||||
|
||||
*I've been anonymizing the data a bit.*
|
||||
_I've been anonymizing the data a bit._
|
||||
|
||||
## Partially known callsign
|
||||
|
||||
***I anonymized some DMR-IDs on this website.***
|
||||
**_I anonymized some DMR-IDs on this website._**
|
||||
|
||||
So you know only the three last letters of an austrian callsign and want to
|
||||
know quickly what federal state it was? Run this command and you'll get a
|
||||
quick answer on the command line:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ for i in oe{1..9}drt; do call $i; done
|
||||
OE7DRT Dominic 2327180 2019-11-24
|
||||
~~~
|
||||
```
|
||||
|
||||
If you called your script `call` and if `call` is in your `$PATH`.
|
||||
|
||||
This works also if you missed one letter.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ for i in oe7{a..z}rt; do call $i; done
|
||||
OE7BRT Rainer 2327XXX 20XX-XX-XX
|
||||
OE7DRT Dominic 2327180 2019-11-24
|
||||
OE7JRT Josef 2327XXX 20XX-XX-XX
|
||||
~~~
|
||||
```
|
||||
|
||||
This took ~10 seconds on my computer.
|
||||
|
||||
|
@ -170,7 +169,7 @@ Or even with more letters, but this will take a while, since this will start
|
|||
your IP address quickly, if you hammer their server with so many request in a
|
||||
short period of time.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ for i in oe7d{a..z}{a..z}; do call $i; done
|
||||
2327XXX OE7D?? Daniel
|
||||
2327XXX OE7D?? Hermann
|
||||
|
@ -180,7 +179,7 @@ $ for i in oe7d{a..z}{a..z}; do call $i; done
|
|||
2327180 OE7D?? Dominic
|
||||
2327XXX OE7D?? Wechselberger
|
||||
2327XXX OE7D?? Gernot
|
||||
~~~
|
||||
```
|
||||
|
||||
And this ran for 3 minutes and 17 seconds on my computer.
|
||||
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
---
|
||||
title: My Nextion 2.4" DMR Last Heard Dashboard
|
||||
aliases:
|
||||
- /posts/2020-02-16-nextion-dmr-last-heard-dashboard
|
||||
- /blog/nextion-dmr-last-heard-dashboard/
|
||||
- /posts/2020-02-16-nextion-dmr-last-heard-dashboard
|
||||
- /blog/nextion-dmr-last-heard-dashboard/
|
||||
summary: >
|
||||
I created a simple last-heard-dashboard for my small Nextion screen.
|
||||
It currently shows the used slot, its origin (like Network or RF) , the
|
||||
callsign and the used talkgroup.
|
||||
categories: [amateur-radio]
|
||||
tags: [nextion,dmr]
|
||||
tags: [nextion, dmr]
|
||||
date: 2020-02-16T12:43:34+01:00
|
||||
lastmod: 2024-02-10T17:10:46+0000
|
||||
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
---
|
||||
|
||||
## The display
|
||||
|
@ -23,7 +22,6 @@ probably the Layout of [PD0DIB].
|
|||
|
||||
We're talking about a `NX3224T024_011`.
|
||||
|
||||
|
||||
{{< figure src="nxt_01_display.jpg" alt="display" caption="" >}}
|
||||
|
||||
My dashboard now looks like this:
|
||||
|
|
|
@ -3,29 +3,28 @@ title: Mountint Ext4 Filesystem On MacOS Readonly
|
|||
aliases: /posts/2020-02-22-mountint-ext4-filesystem-on-macos-readonly
|
||||
summary: An overview of how to mount your Pi-Star sdcard on a mac machine.
|
||||
categories: [computerstuff]
|
||||
tags: [pistar,macos]
|
||||
tags: [pistar, macos]
|
||||
date: 2020-02-22T09:33:44+01:00
|
||||
|
||||
---
|
||||
|
||||
##### Installing the needed tools
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ brew cask install osxfuse
|
||||
$ brew install ext4fuse
|
||||
~~~
|
||||
```
|
||||
|
||||
##### Mount the disk on your filesystem
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ ext4fuse /dev/disk2s2 pi-star
|
||||
~~~
|
||||
```
|
||||
|
||||
##### Users, groups, write permissions, &c
|
||||
|
||||
If you feel that you have to add yourself to another usergroup, then do that
|
||||
as the following code suggests:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo dseditgroup -o edit -a $username -t user $groupname
|
||||
~~~
|
||||
```
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
title: My 7-Inch DMR Dashboard
|
||||
aliases:
|
||||
- /posts/2020-03-28-my-7inch-dmr-dashboard
|
||||
- /blog/amateur-radio/2020-03-28-my-7inch-dmr-dashboard/
|
||||
- /posts/2020-03-28-my-7inch-dmr-dashboard
|
||||
- /blog/amateur-radio/2020-03-28-my-7inch-dmr-dashboard/
|
||||
summary: >
|
||||
I did not like the small screen and the small housing of my last Hotspot so
|
||||
I decided to make a bigger housing where I needed a bigger screen. Look what
|
||||
|
@ -10,10 +10,9 @@ summary: >
|
|||
just right off the screen itself. Make sure to install the NextionDrivers
|
||||
when you use this layout -- it offers way more possibilities.
|
||||
categories: [amateur-radio]
|
||||
tags: [nextion,dmr]
|
||||
tags: [nextion, dmr]
|
||||
date: 2020-03-28T12:42:44+01:00
|
||||
lastmod: 2024-07-07T20:35:21+0000
|
||||
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
---
|
||||
|
||||
I got a Nextion `NX8048K070_011` recently and I built a DMR Dashboard (again)
|
||||
|
@ -71,19 +70,19 @@ Download the files from my github repository.
|
|||
|
||||
- <https://repo.oe7drt.net/dominic/MMDVM-Nextion-Screen-Layouts>
|
||||
|
||||
*Have a look at the **releases** tab as there are more older versions available
|
||||
_Have a look at the **releases** tab as there are more older versions available
|
||||
(the older layout looks ugly on the system page, but has buttons for
|
||||
DMRGateway and DAPNETGateway).*
|
||||
DMRGateway and DAPNETGateway)._
|
||||
|
||||
## Management view
|
||||
|
||||
By "clicking" the page (mainly the header on the top of the screen) you will see
|
||||
a management screen with a lot of buttons. I think these are self-explanatory.
|
||||
|
||||
Although I hate to say it, but I had to run MMDVMHost as user *root* -- otherwise
|
||||
Although I hate to say it, but I had to run MMDVMHost as user _root_ -- otherwise
|
||||
the screen went all black. I'd rather like to have MMDVMHost running as a
|
||||
non-privileged user *mmdvm*. Please let me know if you found a solution to run
|
||||
MMDVMHost as user *mmdvm* again.
|
||||
non-privileged user _mmdvm_. Please let me know if you found a solution to run
|
||||
MMDVMHost as user _mmdvm_ again.
|
||||
|
||||
Maybe this is the reason why MMDVMHost runs as root on Pi-Star v4 too.
|
||||
|
||||
|
|
|
@ -5,10 +5,9 @@ summary: >
|
|||
If you can't change the band edges on your Anytone radio, change the band
|
||||
setting in the codeplug.
|
||||
categories: [amateur-radio]
|
||||
tags: [macos,anytone,dmr]
|
||||
tags: [macos, anytone, dmr]
|
||||
date: 2020-05-17T11:38:31+02:00
|
||||
lastmod: 2022-12-15T06:38:03+01:00
|
||||
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
---
|
||||
|
||||
This is as simple and straight-forward as it could be.
|
||||
|
@ -31,6 +30,7 @@ I use Linux on my computers so I usually have such tools installed already:
|
|||
```console
|
||||
$ printf '\x03' | dd of=codeplug.rdt bs=1 seek=17 count=1 conv=notrunc
|
||||
```
|
||||
|
||||
## Why would you need this?
|
||||
|
||||
You get a codeplug from a friend but you cannot load it into your radio because
|
||||
|
@ -50,7 +50,7 @@ You'd be fine if you only use frequencies within the HAM bands, though.
|
|||
## Bands settings
|
||||
|
||||
| Setting | Frequencies | Description |
|
||||
| :--- | :--- | :--- |
|
||||
| :------ | :-------------------- | :------------------------------------- |
|
||||
| **0** | **136-174 / 400-480** | Commercial Europe Mode `000000` |
|
||||
| 1 | 136-17d4 / 400-480 | Commercial US Mode `000001` |
|
||||
| **3** | **144-146 / 430-440** | Amateur Europe Mode `000003` |
|
||||
|
@ -59,4 +59,4 @@ You'd be fine if you only use frequencies within the HAM bands, though.
|
|||
| 10 | 144-148 / 430-450 | Amateur Australia/Canada Mode `000010` |
|
||||
| 13 | 136-174 / 403-470 | Commercial Mode `000013` |
|
||||
| 16 | 144-147 / 430-440 | Amateur Thailand Mode `000016` |
|
||||
| 17 | 136-174 / 430-440 | Commercial Thailand Mode `000017` |
|
||||
| 17 | 136-174 / 430-440 | Commercial Thailand Mode `000017` |
|
||||
|
|
|
@ -8,8 +8,7 @@ summary: >
|
|||
very complicated either ;-)
|
||||
date: 2021-08-08
|
||||
categories: [computerstuff]
|
||||
tags: [linux,windows,grub]
|
||||
|
||||
tags: [linux, windows, grub]
|
||||
---
|
||||
|
||||
Short and concise. I had to deal with a broken Grub 2 configuration recently
|
||||
|
@ -34,7 +33,7 @@ the computer.
|
|||
|
||||
The plain file in `/etc/grub.d/proxifiedScripts/` looks like this:
|
||||
|
||||
~~~cfg
|
||||
```cfg
|
||||
# file: "/etc/grub.d/proxifiedScripts/custom"
|
||||
#!/bin/sh
|
||||
exec tail -n +3 $0
|
||||
|
@ -49,7 +48,7 @@ menuentry "Windows 10"{
|
|||
menuentry "Reboot"{
|
||||
reboot
|
||||
}
|
||||
~~~
|
||||
```
|
||||
|
||||
And/Or if you just want to use `grub-customizer`: go ahead, create the
|
||||
menu entry and insert the part from above (Windows 10).
|
||||
|
|
|
@ -7,17 +7,15 @@ summary: >
|
|||
This is my attempt to properly install N1MM Logger+ on my main computer
|
||||
running Manjaro/Ubuntu Linux.
|
||||
date: 2021-08-12
|
||||
lastmod: 2024-02-18T11:02:08+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
categories: [amateur-radio]
|
||||
tags: [linux,windows,n1mm,emulation,wine]
|
||||
|
||||
tags: [linux, windows, n1mm, emulation, wine]
|
||||
---
|
||||
|
||||
## We need to talk again (an Update)
|
||||
|
||||
{{< alert >}}
|
||||
This is an update, the post was originally published on August 12<up>th</up>,
|
||||
2021. Most of the content has changed.
|
||||
This is an update, the post was originally published on August 12<up>th</up>, 2021. Most of the content has changed.
|
||||
{{< /alert >}}
|
||||
|
||||
So in this update I would like to re-phrase and/or re-arrange this article to
|
||||
|
@ -39,23 +37,23 @@ Some other articles that I researched and they might be interesting to you too:
|
|||
|
||||
Create a 32bit wine prefix (in winecfg: select Windows 7):
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ env WINEPREFIX=/home/dominic/.wine-n1mm WINEARCH=win32 wine wineboot
|
||||
$ env WINEPREFIX=/home/dominic/.wine-n1mm WINEARCH=win32 wine winecfg
|
||||
~~~
|
||||
```
|
||||
|
||||
So there is a ~500MB windows in my home folder, I will back this fragile
|
||||
directory up into an archive:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ tar -cJf wine-backup-n1mm-$(date +%Y-%m-%d-%H%M%S).tar.xz .wine-n1mm/
|
||||
~~~
|
||||
```
|
||||
|
||||
Next on the list: _.Net Framework 4.6_:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ env WINEPREFIX=/home/dominic/.wine-n1mm winetricks --force
|
||||
~~~
|
||||
```
|
||||
|
||||
Choose `Select default wine prefix`, choose
|
||||
`Install Windows-DLL`, select
|
||||
|
@ -79,9 +77,9 @@ something goes wrong at the next installations. It's the same command as before,
|
|||
as it would create a timestamped filename anyway. My wine prefix `.wine-n1mm` now
|
||||
is ~1.2GB big.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ tar -cJf wine-backup-n1mm-$(date +%Y-%m-%d-%H%M%S).tar.xz .wine-n1mm/
|
||||
~~~
|
||||
```
|
||||
|
||||
This time it took about three times longer than the first time, FYI.
|
||||
|
||||
|
@ -103,16 +101,16 @@ Like above, but navigate to `DOWNLOADS` >>
|
|||
After moving into the directory where our installation files reside, we tell wine
|
||||
to start the installers:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ cd Downloads/
|
||||
$ env WINEPREFIX=/home/dominic/.wine-n1mm wine N1MM-Logger-FullInstaller-1.0.8954.exe
|
||||
~~~
|
||||
```
|
||||
|
||||
Unselect `Finish and restart...` and close the installer.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ env WINEPREFIX=/home/dominic/.wine-n1mm wine N1MM-Logger-Update-1.0.9243.exe
|
||||
~~~
|
||||
```
|
||||
|
||||
Unselect `Run N1MM Logger+...` and close the installer.
|
||||
|
||||
|
@ -126,8 +124,8 @@ default shell on most linuxes) you would just omit the `env` at the beginning.
|
|||
Make sure to substitute the versions with what you have downloaded -- you can
|
||||
find these files here:
|
||||
|
||||
* [Full Install](https://n1mmwp.hamdocs.com/downloads/n1mm-full-install)
|
||||
* [Latest update](https://n1mmwp.hamdocs.com/mmfiles/categories/programlatestupdate)
|
||||
- [Full Install](https://n1mmwp.hamdocs.com/downloads/n1mm-full-install)
|
||||
- [Latest update](https://n1mmwp.hamdocs.com/mmfiles/categories/programlatestupdate)
|
||||
|
||||
You should now have new desktop icons and/or new menue entries (depends on your
|
||||
desktop environment).
|
||||
|
@ -140,7 +138,7 @@ that you installed it.
|
|||
|
||||
You'll figure that out, the content of one of these desktop icons is:
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
[Desktop Entry]
|
||||
Name=N1MM Logger+
|
||||
Exec=env WINEPREFIX="/home/dominic/.wine-n1mm" wine C:\\\\windows\\\\command\\\\start.exe /Unix /home/dominic/.wine-n1mm/dosdevices/c:/users/Public/Desktop/N1MM\\ Logger+.lnk
|
||||
|
@ -149,13 +147,13 @@ StartupNotify=true
|
|||
Path=/home/dominic/.wine-n1mm/dosdevices/c:/Program Files/N1MM Logger+/SkinsAndLayouts
|
||||
Icon=88F7_N1MMLogger.net.0
|
||||
StartupWMClass=n1mmlogger.net.exe
|
||||
~~~
|
||||
```
|
||||
|
||||
This would probably do the same:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ env WINEPREFIX=/home/dominic/.wine-n1mm wine .wine-n1mm/drive_c/Program\ Files/N1MM\ Logger+/N1MMLogger.net.exe
|
||||
~~~
|
||||
```
|
||||
|
||||
{{< figure src="06_errormsg.png" alt="Error message" caption="" >}}
|
||||
|
||||
|
@ -187,7 +185,7 @@ I recently switched my laptop from Manjaro Linux back to Tuxedos version of
|
|||
Kubuntu. So let's have a quick look at what I did in this newly created 32bit
|
||||
windows environment.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo apt-get install wine-stable
|
||||
$ sudo apt-get install winetricks
|
||||
$ sudo apt-get install exe-thumbnailer
|
||||
|
@ -204,7 +202,7 @@ $ winetricks win7 # Because N1MM Logger+ does not like WinXP, I thought that wou
|
|||
|
||||
$ wine Downloads/N1MM-Logger-FullInstaller-1.0.8954.exe
|
||||
$ wine Downloads/N1MM-Logger-Update-1.0.9275.exe
|
||||
~~~
|
||||
```
|
||||
|
||||
Start N1MM Logger+ from within your Application menue. There should be a new
|
||||
folder called
|
||||
|
|
|
@ -1,18 +1,17 @@
|
|||
---
|
||||
title: Running Winlink and VARA on Linux
|
||||
aliases:
|
||||
- /posts/2021-10-03-winlink-and-vara-on-linux
|
||||
- /posts/2021-10-03-running-winlink-and-vara-on-linux
|
||||
- /amateur-radio/2021-10-03-running-winlink-and-vara-on-linux
|
||||
- /amateur-radio/2021-10-03-winlink-and-vara-on-linux
|
||||
- /blog/2021-10-03-winlink-and-vara-on-linux
|
||||
- /posts/18-winlink-and-vara-on-linux
|
||||
- /posts/2021-10-03-winlink-and-vara-on-linux
|
||||
- /posts/2021-10-03-running-winlink-and-vara-on-linux
|
||||
- /amateur-radio/2021-10-03-running-winlink-and-vara-on-linux
|
||||
- /amateur-radio/2021-10-03-winlink-and-vara-on-linux
|
||||
- /blog/2021-10-03-winlink-and-vara-on-linux
|
||||
- /posts/18-winlink-and-vara-on-linux
|
||||
summary: >
|
||||
A quick and dirty summary of my Winlink installation on my linux laptop.
|
||||
date: 2021-10-03
|
||||
categories: [amateur-radio]
|
||||
tags: [linux,winlink,vara fm, vara hf,windows,emulation,wine]
|
||||
|
||||
tags: [linux, winlink, vara fm, vara hf, windows, emulation, wine]
|
||||
---
|
||||
|
||||
This article is about using VARA FM and/or VARA HF on a linux laptop -- or
|
||||
|
@ -20,7 +19,7 @@ computer.
|
|||
|
||||
## Quick and dirty
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo apt-get install wine-stable winetricks exe-thumbnailer
|
||||
|
||||
$ export WINEPREFIX=/home/dominic/.wine-winlink
|
||||
|
@ -51,7 +50,7 @@ $ wine Downloads/VARA\ FM\ setup\ \(Run\ as\ Administrator\).exe
|
|||
|
||||
## Optional, if you want backups, after you installed Winlink and VARA
|
||||
$ tar -cJf wine-backup_$(date +%Y-%m-%d-%H-%M-%S)_vara-installed.tar.xz .wine-winlink
|
||||
~~~
|
||||
```
|
||||
|
||||
If your VARA window is empty after it gets started from Winlink, just minimize
|
||||
it and restore it and you should see it's content again.
|
||||
|
|
|
@ -3,10 +3,9 @@ title: Wordlist Generation
|
|||
aliases: /posts/2021-10-03-wordlist-generation
|
||||
summary: Just for the record. These results may not mean anything...
|
||||
date: 2021-10-03
|
||||
lastmod: 2023-06-04T21:30:28+0200
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
categories: [computerstuff]
|
||||
tags: [linux,pentest,hashcat,john]
|
||||
|
||||
tags: [linux, pentest, hashcat, john]
|
||||
---
|
||||
|
||||
I've done a simple comparison back in April and never pushed this to the website.
|
||||
|
@ -19,27 +18,26 @@ The two don't work the same, the files were different in terms of sorting.
|
|||
|
||||
- <https://www.openwall.com/john/>
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ john --mask='05253?d?d?d?d?d' --min-length=9 --max-length=10 --stdout > john_file
|
||||
|
||||
________________________________________________________
|
||||
Executed in 261,54 millis fish external
|
||||
usr time 96,01 millis 11,00 micros 96,00 millis
|
||||
sys time 38,02 millis 993,00 micros 37,03 millis
|
||||
~~~
|
||||
```
|
||||
|
||||
## Maskprocessor
|
||||
|
||||
- <https://github.com/hashcat/maskprocessor>
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ mp -i 9:10 '05253?d?d?d?d?d' -o mp_file
|
||||
|
||||
________________________________________________________
|
||||
Executed in 6,72 millis fish external
|
||||
usr time 2,19 millis 314,00 micros 1,88 millis
|
||||
sys time 2,86 millis 54,00 micros 2,81 millis
|
||||
~~~
|
||||
```
|
||||
|
||||
Tests were made with [fish ><(((°>](https://fishshell.com/).
|
||||
|
||||
|
|
|
@ -5,24 +5,23 @@ summary: >
|
|||
A quick oneliner to list running processes that prevent a filesystem from
|
||||
being unmounted. Using `lsof` or `fuser` for this.
|
||||
date: 2021-10-26T10:06:47+02:00
|
||||
lastmod: 2021-11-21
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
categories: [computerstuff]
|
||||
tags: [linux]
|
||||
|
||||
---
|
||||
|
||||
Another quick one: I forget this command on a permanent basis, so I write this
|
||||
down here -- maybe this helps.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ lsof +f -- /media/mountpoint
|
||||
~~~
|
||||
```
|
||||
|
||||
#### Update on 2021-11-21
|
||||
|
||||
You could also use `fuser`. I prefer this one because somehow I cannot use
|
||||
autocompletion with lsof and fuser lets me complete the paths.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ fuser -vm /media/mountpoint
|
||||
~~~
|
||||
```
|
||||
|
|
|
@ -8,10 +8,9 @@ summary: >
|
|||
creates the [weather page](https://wx.oe7drt.com/) and also uploads my weather
|
||||
data to the [APRS-IS network](http://www.aprs-is.net/).
|
||||
date: 2022-01-08T14:34:54+01:00
|
||||
lastmod: 2024-01-11T12:45:57+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
categories: [amateur-radio]
|
||||
tags: [ "wx", "weewx", "netatmo", "linux", "server", "selfhost" ]
|
||||
|
||||
tags: ["wx", "weewx", "netatmo", "linux", "server", "selfhost"]
|
||||
---
|
||||
|
||||
## Update on 16<sup>th</sup> July 2023
|
||||
|
@ -23,6 +22,7 @@ has [changed their authentication policy][1] for development apps and do
|
|||
not allow simple password authentications any more.
|
||||
|
||||
[1]: https://dev.netatmo.com/apidocumentation/oauth#authorization-code
|
||||
|
||||
{{< /alert >}}
|
||||
|
||||
That means we have to update the extension to a fork that is recently updated.
|
||||
|
@ -50,37 +50,37 @@ Also note, that most commands (if not all) here have to be run as the root user.
|
|||
|
||||
First of all, install `epel-release` so you can install `python3-cheetah` finally.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
# yum install epel-release
|
||||
# yum install python3-cheetah
|
||||
~~~
|
||||
```
|
||||
|
||||
Continue with adding the repository of WeeWX to your system and install WeeWX.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
# rpm --import https://weewx.com/keys.html
|
||||
# curl -s https://weewx.com/yum/weewx-el8.repo | tee /etc/yum.repos.d/weewx.repo
|
||||
~~~
|
||||
```
|
||||
|
||||
~~~console
|
||||
```console
|
||||
# dnf install weewx
|
||||
~~~
|
||||
```
|
||||
|
||||
Look out for `/var/log/messages` in order to see if WeeWX is already running
|
||||
(Abort with <kbd>Ctrl</kbd>+<kbd>C</kbd>).
|
||||
|
||||
~~~console
|
||||
```console
|
||||
# tail -f /var/log/messages
|
||||
~~~
|
||||
```
|
||||
|
||||
## Configuration of WeeWX
|
||||
|
||||
Stop WeeWX and remove the database for now.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
# /etc/init.d/weewx stop
|
||||
# rm /var/lib/weewx/weewx.sdb
|
||||
~~~
|
||||
```
|
||||
|
||||
## Installation of netatmo driver
|
||||
|
||||
|
@ -91,11 +91,11 @@ So I had to find another one, which I did. It's from
|
|||
[bricebou](https://github.com/bricebou/weewx-netatmo), who made a fork of the
|
||||
original to be compatible with Python 3 (I think that is required now by WeeWX 4.x).
|
||||
|
||||
~~~console
|
||||
```console
|
||||
# wget -O weewx-netatmo.zip https://github.com/bricebou/weewx-netatmo/archive/master.zip
|
||||
# wee_extension --install weewx-netatmo.zip
|
||||
# wee_config --reconfigure
|
||||
~~~
|
||||
```
|
||||
|
||||
Have a look at the file `/etc/weewx/weewx.conf` because it sometimes happens,
|
||||
that the configuration is not properly written.
|
||||
|
@ -104,16 +104,16 @@ that the configuration is not properly written.
|
|||
|
||||
You can also use `systemctl start weewx` instead.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
# /etc/init.d/weewx start
|
||||
~~~
|
||||
```
|
||||
|
||||
## Localisation
|
||||
|
||||
The setup is done, although if you like your pages with another locale you may
|
||||
want to alter the file `/usr/share/weewx/user/extensions.py`.
|
||||
|
||||
~~~python
|
||||
```python
|
||||
# file: "/usr/share/weewx/user/extensions.py"
|
||||
#
|
||||
# Copyright (c) 2009-2015 Tom Keffer <tkeffer@gmail.com>
|
||||
|
@ -133,13 +133,13 @@ import locale
|
|||
# Other options are possible. See:
|
||||
# http://docs.python.org/2/library/locale.html#locale.setlocale
|
||||
locale.setlocale(locale.LC_ALL, 'de_AT.UTF-8')
|
||||
~~~
|
||||
```
|
||||
|
||||
## Pushing weather data to APRS-IS
|
||||
|
||||
Make sure you get a similar entry in your `/etc/weewx/weewx.conf` file:
|
||||
|
||||
~~~toml
|
||||
```toml
|
||||
# file: "/etc/weewx/weewx.conf"
|
||||
...
|
||||
|
||||
|
@ -152,7 +152,7 @@ Make sure you get a similar entry in your `/etc/weewx/weewx.conf` file:
|
|||
|
||||
...
|
||||
|
||||
~~~
|
||||
```
|
||||
|
||||
Now, you could also join CWOP over here: <http://www.findu.com/citizenweather/signup.html>.
|
||||
I don't remember correctly, but I don't think you'll need that to just transport
|
||||
|
@ -202,7 +202,7 @@ few moments to find the right place again. Now, for the future: the file I
|
|||
talk about is `/usr/share/weewx/weewx/restx.py` and you may look somewhere near
|
||||
the line 1285. I show you an excerpt of my current (already modified) file:
|
||||
|
||||
~~~py {linenos=table,hl_lines="5-6",linenostart=1281}
|
||||
```py {linenos=table,hl_lines="5-6",linenostart=1281}
|
||||
else:
|
||||
_radiation_str = ""
|
||||
|
||||
|
@ -219,7 +219,7 @@ the line 1285. I show you an excerpt of my current (already modified) file:
|
|||
log.debug("CWOP: packet: '%s'", _tnc_packet.rstrip('\r\n'))
|
||||
|
||||
return _tnc_packet
|
||||
~~~
|
||||
```
|
||||
|
||||
Line 5 and 6 (highlighted) shows the old and new line. Should work fine.
|
||||
|
||||
|
@ -242,14 +242,15 @@ The installation is very easy:
|
|||
<https://neoground.com/projects/neowx-material#section-download>
|
||||
|
||||
- install
|
||||
~~~console
|
||||
|
||||
```console
|
||||
# wee_extension --install=neowx-material.zip
|
||||
~~~
|
||||
```
|
||||
|
||||
- restart
|
||||
~~~console
|
||||
```console
|
||||
# systemctl restart weewx
|
||||
~~~
|
||||
```
|
||||
|
||||
I usually don't give this hint: note the `#` at the beginning of these command
|
||||
lines. That means to run those commands as **root**.
|
||||
|
@ -260,9 +261,9 @@ you should be good to go.
|
|||
I did already had the `python3-ephem` package installed, I used the Almanac pages
|
||||
already in the older (default) Seasons skin.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
# dnf install python3-ephem
|
||||
~~~
|
||||
```
|
||||
|
||||
The new theme looks like this:
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: 'Systemd: slow reboot and shutdown fixed'
|
||||
title: "Systemd: slow reboot and shutdown fixed"
|
||||
aliases: /posts/2022-06-27-systemd-slow-reboot-and-shutdown-fixed
|
||||
summary: >
|
||||
I'm not so into systemd systems and ever avoided systemd whenever possible,
|
||||
|
@ -7,10 +7,9 @@ summary: >
|
|||
slowly and with some memory protection (e.g. this article). Sorry, this
|
||||
article is not very well formatted...
|
||||
date: 2022-06-26T22:41:49+02:00
|
||||
lastmod: 2022-10-26T07:09:35+02:00
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
categories: [computerstuff]
|
||||
tags: [linux,systemd,manjaro]
|
||||
|
||||
tags: [linux, systemd, manjaro]
|
||||
---
|
||||
|
||||
I noticed long delays (more than 2 minutes) on reboots and poweroffs recently
|
||||
|
@ -20,9 +19,9 @@ on my Manjaro laptop.
|
|||
|
||||
View the last boot session log in reverse order
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ journalctl -rb -1
|
||||
~~~
|
||||
```
|
||||
|
||||
and inspect that for abnormalities. Also look at your console when rebooting or
|
||||
shutting down the system, as that may also present some good starting points.
|
||||
|
@ -31,7 +30,7 @@ shutting down the system, as that may also present some good starting points.
|
|||
|
||||
I edited `/etc/systemd/system.conf` and changed the following values:
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
# file: "/etc/systemd/system.conf"
|
||||
[Manager]
|
||||
[...]
|
||||
|
@ -40,32 +39,32 @@ ShutdownWatchdogSec=1min
|
|||
[...]
|
||||
DefaultTimeoutStopSec=5s
|
||||
[...]
|
||||
~~~
|
||||
```
|
||||
|
||||
## Have a quick look at the boot time
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ systemd-analyze
|
||||
~~~
|
||||
```
|
||||
|
||||
and if you are more interested into which module slows down your boot, list them
|
||||
with:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ systemd-analyze blame
|
||||
~~~
|
||||
```
|
||||
|
||||
Just out of curiosity I also used:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo systemctl disable NetworkManager-wait-online.service
|
||||
~~~
|
||||
```
|
||||
|
||||
→ revert that with:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo systemctl enable NetworkManager-wait-online.service
|
||||
~~~
|
||||
```
|
||||
|
||||
## Sources
|
||||
|
||||
|
@ -81,20 +80,20 @@ Since I made the switch to Fedora 36 I had to re-do those steps.
|
|||
|
||||
With default values I got this result for `systemd-analyze`
|
||||
|
||||
~~~console
|
||||
$ systemd-analyze
|
||||
Startup finished in 7.754s (firmware) + 5.988s (loader) + 1.140s (kernel) + 13.027s (initrd) + 1min 21.493s (userspace) = 1min 49.403s
|
||||
```console
|
||||
$ systemd-analyze
|
||||
Startup finished in 7.754s (firmware) + 5.988s (loader) + 1.140s (kernel) + 13.027s (initrd) + 1min 21.493s (userspace) = 1min 49.403s
|
||||
graphical.target reached after 1min 21.462s in userspace
|
||||
~~~
|
||||
```
|
||||
|
||||
Without userspace: <span style="border-bottom: 3px double;">27.9090s</span>
|
||||
|
||||
And with the changes above I get this
|
||||
|
||||
~~~console
|
||||
$ systemd-analyze
|
||||
Startup finished in 10.151s (firmware) + 2.368s (loader) + 1.128s (kernel) + 10.509s (initrd) + 8.480s (userspace) = 32.639s
|
||||
```console
|
||||
$ systemd-analyze
|
||||
Startup finished in 10.151s (firmware) + 2.368s (loader) + 1.128s (kernel) + 10.509s (initrd) + 8.480s (userspace) = 32.639s
|
||||
graphical.target reached after 8.450s in userspace
|
||||
~~~
|
||||
```
|
||||
|
||||
Without userspace: <span style="border-bottom: 3px double;">24.1560s</span>
|
||||
|
|
|
@ -1,15 +1,14 @@
|
|||
---
|
||||
title: 'pfSense: restore broken config'
|
||||
title: "pfSense: restore broken config"
|
||||
aliases:
|
||||
- /posts/2022-07-04-pfsense-restore-broken-config
|
||||
- /posts/2022-07-04-pfsense-restore-broken-config-file
|
||||
- /posts/2022-07-04-pfsense-restore-broken-config
|
||||
- /posts/2022-07-04-pfsense-restore-broken-config-file
|
||||
summary: >
|
||||
Restoring a configuration file for pfSense when it actually stays in a
|
||||
boot-loop
|
||||
date: 2022-07-04T18:14:13+02:00
|
||||
categories: [computerstuff]
|
||||
tags: [pfsense,networking]
|
||||
|
||||
tags: [pfsense, networking]
|
||||
---
|
||||
|
||||
My pfSense firewall at home got a pretty heavy misconfiguration by myself and
|
||||
|
@ -19,72 +18,72 @@ configuration so this recovery process works quite well.
|
|||
|
||||
## Follow these steps
|
||||
|
||||
1. Boot into **single user mode**
|
||||
1. Boot into **single user mode**
|
||||
|
||||
Connect to your firewall (with a serial console) and choose option
|
||||
`5) Reboot system` and confirm with the letter `S` (capital s).
|
||||
Connect to your firewall (with a serial console) and choose option
|
||||
`5) Reboot system` and confirm with the letter `S` (capital s).
|
||||
|
||||
2. **ZFS version only**
|
||||
|
||||
1. Remount root slice as read-write:
|
||||
1. Remount root slice as read-write:
|
||||
|
||||
~~~console
|
||||
$ /sbin/mount -u /
|
||||
~~~
|
||||
```console
|
||||
$ /sbin/mount -u /
|
||||
```
|
||||
|
||||
2. Mount all ZFS filesystems, datasets etc.
|
||||
2. Mount all ZFS filesystems, datasets etc.
|
||||
|
||||
~~~console
|
||||
$ /sbin/zfs mount -a
|
||||
~~~
|
||||
```console
|
||||
$ /sbin/zfs mount -a
|
||||
```
|
||||
|
||||
3. Working within the mounted filesystems
|
||||
3. Working within the mounted filesystems
|
||||
|
||||
1. Enter **/cf/conf**
|
||||
1. Enter **/cf/conf**
|
||||
|
||||
~~~console
|
||||
$ cd /cf/conf
|
||||
~~~
|
||||
```console
|
||||
$ cd /cf/conf
|
||||
```
|
||||
|
||||
2. Copy the newest backup file back
|
||||
2. Copy the newest backup file back
|
||||
|
||||
~~~console
|
||||
$ cp backup/config-1648889613.xml config.xml
|
||||
~~~
|
||||
```console
|
||||
$ cp backup/config-1648889613.xml config.xml
|
||||
```
|
||||
|
||||
3. Clear the config cache
|
||||
3. Clear the config cache
|
||||
|
||||
~~~console
|
||||
$ rm /tmp/config.cache
|
||||
~~~
|
||||
```console
|
||||
$ rm /tmp/config.cache
|
||||
```
|
||||
|
||||
4. Reload system and it's services
|
||||
4. Reload system and it's services
|
||||
|
||||
~~~console
|
||||
$ /etc/rc.reload_all start
|
||||
~~~
|
||||
```console
|
||||
$ /etc/rc.reload_all start
|
||||
```
|
||||
|
||||
This may take a while. At this point we are done, we can now remove
|
||||
the single user mode boot configuration and reboot the firewall.
|
||||
This may take a while. At this point we are done, we can now remove
|
||||
the single user mode boot configuration and reboot the firewall.
|
||||
|
||||
4. Clear the single user mode boot configuration
|
||||
4. Clear the single user mode boot configuration
|
||||
|
||||
~~~console
|
||||
$ /sbin/nextboot -D
|
||||
~~~
|
||||
```console
|
||||
$ /sbin/nextboot -D
|
||||
```
|
||||
|
||||
ZFS does not clear the single user mode boot configuration by itself,
|
||||
that's why we have to delete it after we are done with our work.
|
||||
ZFS does not clear the single user mode boot configuration by itself,
|
||||
that's why we have to delete it after we are done with our work.
|
||||
|
||||
5. Reboot the system
|
||||
5. Reboot the system
|
||||
|
||||
~~~console
|
||||
$ /sbin/reboot
|
||||
~~~
|
||||
```console
|
||||
$ /sbin/reboot
|
||||
```
|
||||
|
||||
You could also use exit, but that would only continue booting into
|
||||
multi user mode without rebooting the system first. I personally think
|
||||
that we would benefit from a full reboot.
|
||||
You could also use exit, but that would only continue booting into
|
||||
multi user mode without rebooting the system first. I personally think
|
||||
that we would benefit from a full reboot.
|
||||
|
||||
Okay, that's it all for now. Please note that I do not use the UFS filesystem
|
||||
any more, so I won't add this to my little instruction set.
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
---
|
||||
title: 'Systemd: flushing the DNS cache'
|
||||
title: "Systemd: flushing the DNS cache"
|
||||
aliases: /posts/2022-07-04-systemd-flushing-the-dns-cache
|
||||
date: 2022-07-04T17:22:48+02:00
|
||||
lastmod: 2022-12-14T16:05:48+01:00
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
categories: [computerstuff]
|
||||
tags: [linux,systemd,networking,manjaro,dns]
|
||||
|
||||
tags: [linux, systemd, networking, manjaro, dns]
|
||||
---
|
||||
|
||||
First off I want to say, that Systemd is quite new to me and I always used the
|
||||
|
@ -19,17 +18,17 @@ is not that complicated, but the correct commands should be known.
|
|||
|
||||
And this post is all about that:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo systemd-resolve --flush-caches
|
||||
~~~
|
||||
```
|
||||
|
||||
You could also use `sudo resolvectl flush-caches` if you like or prefer.
|
||||
|
||||
Now verify the empty cache:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ systemd-resolve --statistics
|
||||
~~~
|
||||
```
|
||||
|
||||
I usually do not need to flush my computers DNS caches, but fiddling with my
|
||||
firewall at home made me use this very often over the last few weeks.
|
||||
|
|
|
@ -1,19 +1,18 @@
|
|||
---
|
||||
title: Raspberry Pi 4 (64 bit) DUAL_HAT Hotspot
|
||||
aliases:
|
||||
- /posts/2022-07-10-raspberry-pi-4-64bit-dual-hat-hotspot-without-pi-star
|
||||
- /posts/2022-07-10-raspberry-pi-4-64-bit-dual_hat-hotspot
|
||||
- /posts/2022-07-10-raspberry-pi-4-64-bit-dual-hat-hotspot
|
||||
- /amateur-radio/2022-07-10-raspberry-pi-4-64bit-dual-hat-hotspot-without-pi-star
|
||||
- /posts/2022-07-10-raspberry-pi-4-64bit-dual-hat-hotspot-without-pi-star
|
||||
- /posts/2022-07-10-raspberry-pi-4-64-bit-dual_hat-hotspot
|
||||
- /posts/2022-07-10-raspberry-pi-4-64-bit-dual-hat-hotspot
|
||||
- /amateur-radio/2022-07-10-raspberry-pi-4-64bit-dual-hat-hotspot-without-pi-star
|
||||
summary: >
|
||||
Working **without Pi-Star** on a fresh and lightweight Raspberry Pi OS (64 bit)
|
||||
installation. One of the longer articles over here...
|
||||
date: 2022-07-10T14:27:28+02:00
|
||||
lastmod: 2024-04-14T17:42:37+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
categories: [amateur-radio]
|
||||
tags: [pistar,dmr,ysf,dstar,hotspot,mmdvm]
|
||||
tags: [pistar, dmr, ysf, dstar, hotspot, mmdvm]
|
||||
#weight: 1
|
||||
|
||||
---
|
||||
|
||||
This is my attempt to create a lightweight hotspot for DMR, D-STAR and C4FM on
|
||||
|
@ -38,88 +37,89 @@ read-only like on Pi-Star.
|
|||
|
||||
1. Download the operating software image from [raspberrypi.com](https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit).
|
||||
2. Boot the Raspberry Pi and set it up to your needs.
|
||||
- Localisation
|
||||
- Keyboard layout
|
||||
- Install needed packages
|
||||
- Install your favourite shell (bash, zsh, fish, csh ...)
|
||||
- Localisation
|
||||
- Keyboard layout
|
||||
- Install needed packages
|
||||
- Install your favourite shell (bash, zsh, fish, csh ...)
|
||||
3. Disable the serial console (and we will also disable Bluetooth)
|
||||
- Open `/boot/cmdline.txt` and remove the text `console=serial0,115200`
|
||||
- Open `/boot/config.txt` and add to the end
|
||||
|
||||
~~~ini
|
||||
dtoverlay=disable-bt
|
||||
enable_uart=1
|
||||
~~~
|
||||
- Open `/boot/cmdline.txt` and remove the text `console=serial0,115200`
|
||||
- Open `/boot/config.txt` and add to the end
|
||||
|
||||
You may also run `raspi-config` and disable the console from there.
|
||||
Choose _3 Interface Options_ » _I6 Serial Port_ » _No (login shell)_ »
|
||||
_Yes (serial hardware)_ » _OK_
|
||||
```ini
|
||||
dtoverlay=disable-bt
|
||||
enable_uart=1
|
||||
```
|
||||
|
||||
Disable the services
|
||||
You may also run `raspi-config` and disable the console from there.
|
||||
Choose _3 Interface Options_ » _I6 Serial Port_ » _No (login shell)_ »
|
||||
_Yes (serial hardware)_ » _OK_
|
||||
|
||||
~~~console
|
||||
$ sudo systemctl disable serial-getty@ttyAMA0.service
|
||||
$ sudo systemctl disable bluetooth.service
|
||||
~~~
|
||||
Disable the services
|
||||
|
||||
Reboot the Raspberry Pi after those changes!
|
||||
```console
|
||||
$ sudo systemctl disable serial-getty@ttyAMA0.service
|
||||
$ sudo systemctl disable bluetooth.service
|
||||
```
|
||||
|
||||
~~~console
|
||||
$ sudo reboot
|
||||
~~~
|
||||
Reboot the Raspberry Pi after those changes!
|
||||
|
||||
```console
|
||||
$ sudo reboot
|
||||
```
|
||||
|
||||
4. Install the needed packages to compile the software later
|
||||
|
||||
~~~console
|
||||
$ sudo apt update -y
|
||||
$ sudo apt full-upgrade
|
||||
$ sudo apt install git build-essential zsh nmap lsof vim cmake gcc-arm-none-eabi stm32flash libusb-1.0-0-dev libasound2-dev libwxgtk3.0-gtk3-dev
|
||||
~~~
|
||||
```console
|
||||
$ sudo apt update -y
|
||||
$ sudo apt full-upgrade
|
||||
$ sudo apt install git build-essential zsh nmap lsof vim cmake gcc-arm-none-eabi stm32flash libusb-1.0-0-dev libasound2-dev libwxgtk3.0-gtk3-dev
|
||||
```
|
||||
|
||||
Because **wiringPi** is currently not available from official sources, we
|
||||
have to install it manually.
|
||||
Because **wiringPi** is currently not available from official sources, we
|
||||
have to install it manually.
|
||||
|
||||
~~~console
|
||||
$ git clone git@github.com:WiringPi/WiringPi.git
|
||||
$ cd wiringPi
|
||||
$ ./build
|
||||
~~~
|
||||
```console
|
||||
$ git clone git@github.com:WiringPi/WiringPi.git
|
||||
$ cd wiringPi
|
||||
$ ./build
|
||||
```
|
||||
|
||||
This should suffice, make sure to read [INSTALL] and follow its instructions.
|
||||
This should suffice, make sure to read [INSTALL] and follow its instructions.
|
||||
|
||||
[INSTALL]: https://github.com/WiringPi/WiringPi/blob/master/INSTALL
|
||||
[INSTALL]: https://github.com/WiringPi/WiringPi/blob/master/INSTALL
|
||||
|
||||
Check _wiringPi_ with `gpio -v` or `gpio readall`:
|
||||
Check _wiringPi_ with `gpio -v` or `gpio readall`:
|
||||
|
||||
~~~console
|
||||
$ gpio -v
|
||||
gpio version: 2.70
|
||||
Copyright (c) 2012-2018 Gordon Henderson
|
||||
This is free software with ABSOLUTELY NO WARRANTY.
|
||||
For details type: gpio -warranty
|
||||
```console
|
||||
$ gpio -v
|
||||
gpio version: 2.70
|
||||
Copyright (c) 2012-2018 Gordon Henderson
|
||||
This is free software with ABSOLUTELY NO WARRANTY.
|
||||
For details type: gpio -warranty
|
||||
|
||||
Raspberry Pi Details:
|
||||
Type: Pi 4B, Revision: 01, Memory: 4096MB, Maker: Sony
|
||||
* Device tree is enabled.
|
||||
*--> Raspberry Pi 4 Model B Rev 1.1
|
||||
* This Raspberry Pi supports user-level GPIO access.
|
||||
~~~
|
||||
Raspberry Pi Details:
|
||||
Type: Pi 4B, Revision: 01, Memory: 4096MB, Maker: Sony
|
||||
* Device tree is enabled.
|
||||
*--> Raspberry Pi 4 Model B Rev 1.1
|
||||
* This Raspberry Pi supports user-level GPIO access.
|
||||
```
|
||||
|
||||
5. Create a non-privileged user called _mmdvm_ and add the user to the
|
||||
group _dialout_
|
||||
|
||||
~~~console
|
||||
$ sudo useradd mmdvm -g mmdvm -s /sbin/nologin
|
||||
$ sudo usermod mmdvm -G dialout
|
||||
~~~
|
||||
```console
|
||||
$ sudo useradd mmdvm -g mmdvm -s /sbin/nologin
|
||||
$ sudo usermod mmdvm -G dialout
|
||||
```
|
||||
|
||||
I had some problems with wiringPi, so I finally added the user _mmdvm_ to
|
||||
the groups _gpio_ and _kmem_. (To let the user _mmdvm_ access `/dev/mem` and
|
||||
`/dev/gpiomem`.)
|
||||
I had some problems with wiringPi, so I finally added the user _mmdvm_ to
|
||||
the groups _gpio_ and _kmem_. (To let the user _mmdvm_ access `/dev/mem` and
|
||||
`/dev/gpiomem`.)
|
||||
|
||||
~~~console
|
||||
$ sudo usermod -G gpio,kmem -a mmdvm
|
||||
~~~
|
||||
```console
|
||||
$ sudo usermod -G gpio,kmem -a mmdvm
|
||||
```
|
||||
|
||||
## Firmware
|
||||
|
||||
|
@ -135,22 +135,22 @@ But let us move to the fun (work) part.
|
|||
|
||||
Clone the git repository. I prefer this in a separate folder like `~/git`.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ git clone --recursive git@github.com:juribeparada/MMDVM_HS.git
|
||||
~~~
|
||||
```
|
||||
|
||||
### Configuration
|
||||
|
||||
Enter the directory and copy an appropriate default configuration for your board.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ cp configs/MMDVM_HS_Dual_Hat-12mhz.h Config.h
|
||||
~~~
|
||||
```
|
||||
|
||||
Edit the file to your needs. The example below is what I use, be aware of the
|
||||
version of the installed TCXO of **12**.2880 MHz!
|
||||
|
||||
~~~cpp
|
||||
```cpp
|
||||
// file: "Config.h"
|
||||
#if !defined(CONFIG_H)
|
||||
#define CONFIG_H
|
||||
|
@ -171,11 +171,11 @@ version of the installed TCXO of **12**.2880 MHz!
|
|||
#define ENABLE_UDID
|
||||
|
||||
#endif
|
||||
~~~
|
||||
```
|
||||
|
||||
Those settings are also interesting to play with in the file `ADF7021.h`:
|
||||
|
||||
~~~cpp
|
||||
```cpp
|
||||
// file: "ADF7021.h"
|
||||
// Disable TX Raised Cosine filter for 4FSK modulation in ADF7021:
|
||||
#define ADF7021_DISABLE_RC_4FSK
|
||||
|
@ -186,7 +186,7 @@ Those settings are also interesting to play with in the file `ADF7021.h`:
|
|||
|
||||
// Configure AFC with positive initial frequency offset:
|
||||
// #define ADF7021_AFC_POS
|
||||
~~~
|
||||
```
|
||||
|
||||
I only disabled the Raised Cosine filter for 4FSK modulation because this works
|
||||
best for me. Enabling AFC did only cause lots of synchronisation errors on DMR.
|
||||
|
@ -202,26 +202,26 @@ want better response times on DMR keep on reading.
|
|||
|
||||
You may want to consider making the following changes on those two files.
|
||||
|
||||
~~~cpp
|
||||
```cpp
|
||||
// file: "DMRDMOTX.cpp"
|
||||
//m_txDelay(240U), // 200ms
|
||||
m_txDelay(120U), // 200ms
|
||||
~~~
|
||||
```
|
||||
|
||||
~~~cpp
|
||||
```cpp
|
||||
// file: "DMRDMOTX.cpp"
|
||||
void CDMRDMOTX::setTXDelay(uint8_t delay)
|
||||
{
|
||||
//m_txDelay = 600U + uint16_t(delay) * 12U; // 500ms + tx delay
|
||||
m_txDelay = 60U + uint16_t(delay) * 12U;
|
||||
}
|
||||
~~~
|
||||
```
|
||||
|
||||
~~~cpp
|
||||
```cpp
|
||||
// file: "DMRTX.cpp"
|
||||
// const uint32_t STARTUP_COUNT = 20U;
|
||||
const uint32_t STARTUP_COUNT = 2U;
|
||||
~~~
|
||||
```
|
||||
|
||||
I'll leave you with this, if you have no idea what you are doing here: you should
|
||||
probably leave those files just as they are...
|
||||
|
@ -236,17 +236,17 @@ as a starting point and try the best values for you and your board._
|
|||
|
||||
If no errors were made in `Config.h` this should be as easy as the steps above.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ make clean
|
||||
$ make -j4
|
||||
$ sudo make mmdvm_hs_dual_hat
|
||||
~~~
|
||||
```
|
||||
|
||||
Finish this with a reboot of the Raspberry Pi.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo reboot
|
||||
~~~
|
||||
```
|
||||
|
||||
{{< alert circle-info >}}
|
||||
Note, that we used `-j4` as an argument of `make` because the Raspberry Pi 4 has
|
||||
|
@ -273,36 +273,36 @@ could be referred as the modem probably.
|
|||
We run this command also in our separated `git` folder. Just to keep all those
|
||||
git repositories in one place.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ git clone git@github.com:g4klx/MMDVMHost.git
|
||||
~~~
|
||||
```
|
||||
|
||||
### Compile the code
|
||||
|
||||
Enter the newly created directory and compile it.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ make -j4 -f Makefile.Pi
|
||||
~~~
|
||||
```
|
||||
|
||||
Install the executables into `/usr/local/bin` by executing
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo make install
|
||||
~~~
|
||||
```
|
||||
|
||||
### Configuration
|
||||
|
||||
Copy the default configuration file to `/etc`:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo cp MMDVM.ini /etc/
|
||||
~~~
|
||||
```
|
||||
|
||||
and edit it to your needs. Most of the options are self-explanatory and I will
|
||||
only publish some excerpts of my `/etc/MMDVM.ini` file.
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
# file: "/etc/MMDVM.ini"
|
||||
[Log]
|
||||
# Logging levels, 0=No logging
|
||||
|
@ -437,7 +437,7 @@ GatewayAddress=127.0.0.1
|
|||
GatewayPort=4200
|
||||
# ModeHang=3
|
||||
Debug=0
|
||||
~~~
|
||||
```
|
||||
|
||||
These are the most important parts of the configuration -- make sure that you
|
||||
double check your file and insert your callsign and DMRID number correctly.
|
||||
|
@ -449,10 +449,10 @@ but still valid as they all start with your legit DMRID).
|
|||
|
||||
### Create log file directory
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo mkdir /var/log/mmdvm
|
||||
$ sudo chown mmdvm:mmdvm /var/log/mmdvm
|
||||
~~~
|
||||
```
|
||||
|
||||
### Check for errors
|
||||
|
||||
|
@ -460,9 +460,9 @@ To check for errors, run `MMDVMHost` directly before setting up a system service
|
|||
Make sure, that you have set `Daemon=0` in your `MMDVM.ini` file for this test.
|
||||
Start `MMDVMHost` as user _mmdvm_
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo -u mmdvm MMDVMHost /etc/MMDVM.ini
|
||||
~~~
|
||||
```
|
||||
|
||||
Set `Daemon=1` back in your `MMDVM.ini` if you haven't already.
|
||||
|
||||
|
@ -470,14 +470,14 @@ Set `Daemon=1` back in your `MMDVM.ini` if you haven't already.
|
|||
|
||||
Copy the unit file for Systemd to the system.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo cp linux/systemd/mmdvmhost.service /etc/systemd/system/
|
||||
~~~
|
||||
```
|
||||
|
||||
No modification should be needed, but for reference this is the content
|
||||
of the file:
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
# file: "/etc/systemd/system/mmdvmhost.service"
|
||||
[Unit]
|
||||
Description=MMDVMHost Radio Service
|
||||
|
@ -491,14 +491,14 @@ Restart=on-abnormal
|
|||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
~~~
|
||||
```
|
||||
|
||||
Start and enable this service in one go with
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo systemctl daemon-reload
|
||||
$ sudo systemctl enable --now mmdvmhost.service
|
||||
~~~
|
||||
```
|
||||
|
||||
## DMRGateway
|
||||
|
||||
|
@ -507,13 +507,13 @@ austrian brandmeister master server (BM2321).
|
|||
|
||||
### Get the code
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ git clone git@github.com:g4klx/DMRGateway.git
|
||||
~~~
|
||||
```
|
||||
|
||||
### Configuration
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
# file: "/etc/DMRGateway.ini"
|
||||
[General]
|
||||
Timeout=10
|
||||
|
@ -636,16 +636,16 @@ Port=3769
|
|||
Enable=0
|
||||
Address=127.0.0.1
|
||||
Port=7643
|
||||
~~~
|
||||
```
|
||||
|
||||
### Test your setup
|
||||
|
||||
Change the configuration from above to `Daemon=0` and start DMRGateway in a
|
||||
terminal with
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo -u mmdvm DMRGateway /etc/DMRGateway.ini
|
||||
~~~
|
||||
```
|
||||
|
||||
Check for errors and move on when everything is fine. You should hear the
|
||||
announcement coming from the ISPC2 server. In our case (Ref 4000) we should
|
||||
|
@ -656,7 +656,7 @@ hear something like "Not connected" or "Repeater not connected".
|
|||
I copied the unit file from mmdvmhost.service and made my changes. If you don't
|
||||
want to do that by yourself, use this one to start with.
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
# file: "/etc/systemd/system/dmrgateway.service"
|
||||
[Unit]
|
||||
Description=DMRGateway Radio Service
|
||||
|
@ -670,13 +670,13 @@ Restart=on-abnormal
|
|||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
~~~
|
||||
```
|
||||
|
||||
Change the configuration back `Daemon=1` and enable the service/unit.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo systemctl enable --now dmrgateway.service
|
||||
~~~
|
||||
```
|
||||
|
||||
## YSFGateway (C4FM, YSF, YCS)
|
||||
|
||||
|
@ -697,48 +697,48 @@ ready-to-use with the _[changes made by Kurt, OE1KBC](http://ycs-wiki.xreflector
|
|||
|
||||
I've included his changes in my fork and created a branch called _YCS232_.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ git clone git@github.com:oe7drt/YSFClients.git
|
||||
$ cd YSFClients
|
||||
$ git fetch --all
|
||||
$ git checkout YCS232
|
||||
~~~
|
||||
```
|
||||
|
||||
You can also add the original sources as an additional remote:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ git remote add upstream git@github.com:g4klx/YSFClients.git
|
||||
$ git fetch --all
|
||||
~~~
|
||||
```
|
||||
|
||||
#### Original, most actual codebase
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ git clone git@github.com:g4klx/YSFClients.git
|
||||
~~~
|
||||
```
|
||||
|
||||
### Either choice of source, compile it
|
||||
|
||||
Enter the created directory _YSFClients_ and compile the code. Install them
|
||||
into `/usr/local/bin`
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ cd YSFClients
|
||||
$ make -j4
|
||||
$ sudo make install
|
||||
~~~
|
||||
```
|
||||
|
||||
### Configuration
|
||||
|
||||
Copy the default configuration file into `/etc`
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo cp YSFGateway/YSFGateway.ini /etc/
|
||||
~~~
|
||||
```
|
||||
|
||||
and edit the file. Here are some excerpts of mine:
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
# file: "/etc/YSFGateway.ini"
|
||||
[General]
|
||||
Callsign=OE7DRT
|
||||
|
@ -806,7 +806,7 @@ YSF2P25Port=42015
|
|||
Enable=0
|
||||
Rooms=./FCSRooms.txt
|
||||
Port=42001
|
||||
~~~
|
||||
```
|
||||
|
||||
This is **not the full** file, but pretty much of it. Adopt to your needs but
|
||||
check and double-check that file like the other configuration files.
|
||||
|
@ -815,9 +815,9 @@ check and double-check that file like the other configuration files.
|
|||
|
||||
Change `Daemon=0` in the configuration file for the test and run
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo -u mmdvm YSFGateway /etc/YSFGateway.ini
|
||||
~~~
|
||||
```
|
||||
|
||||
You should see yourself in the dashboard and also the screen should print
|
||||
something like `Linked to AT-C4FM-AUSTRIA` and `Link successful to MMDVM`.
|
||||
|
@ -831,7 +831,7 @@ Change `Daemon=1` back in your config if not already done.
|
|||
|
||||
Create the unit file `/etc/systemd/system/ysfgateway.service`
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
# file: "/etc/systemd/system/ysfgateway.service"
|
||||
[Unit]
|
||||
Description=YSFGateway Service
|
||||
|
@ -845,14 +845,14 @@ Restart=on-abnormal
|
|||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
~~~
|
||||
```
|
||||
|
||||
Start and enable the service.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo systemctl daemon-reload
|
||||
$ sudo systemctl enable --now ysfgateway.service
|
||||
~~~
|
||||
```
|
||||
|
||||
## ircDDBGateway (D-STAR)
|
||||
|
||||
|
@ -871,9 +871,9 @@ work is now done from MMDVMHost. Again, correct me if I'm wrong.
|
|||
|
||||
In our `~/git` directory (where else?)
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ git clone git@github.com:g4klx/ircDDBGateway.git
|
||||
~~~
|
||||
```
|
||||
|
||||
### Compile the code and install the programs
|
||||
|
||||
|
@ -881,11 +881,11 @@ Open `Makefile` and change the parameters on top of the file to your needs.
|
|||
I like to use `/var/log/mmdvm`, `/usr/local/bin` and `/usr/local/etc` for
|
||||
example...
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ cd ircDDBGateway
|
||||
$ make -j4
|
||||
$ sudo make install
|
||||
~~~
|
||||
```
|
||||
|
||||
### Configuration
|
||||
|
||||
|
@ -896,7 +896,7 @@ These are the files that I use at the moment, changes may be done if needed.
|
|||
|
||||
### /etc/ircddbgateway
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
# file: "/etc/ircddbgateway"
|
||||
gatewayType=1
|
||||
# gatewayType=0 is the default, but Pi-Star uses 1 here
|
||||
|
@ -934,7 +934,7 @@ band1_1=0
|
|||
band1_2=0
|
||||
band1_3=0
|
||||
repeaterCall2=
|
||||
repeaterBand2=
|
||||
repeaterBand2=
|
||||
repeaterType2=0
|
||||
repeaterAddress2=127.0.0.1
|
||||
repeaterPort2=20012
|
||||
|
@ -954,7 +954,7 @@ band2_1=0
|
|||
band2_2=0
|
||||
band2_3=0
|
||||
repeaterCall3=
|
||||
repeaterBand3=
|
||||
repeaterBand3=
|
||||
repeaterType3=0
|
||||
repeaterAddress3=127.0.0.1
|
||||
repeaterPort3=20013
|
||||
|
@ -974,7 +974,7 @@ band3_1=0
|
|||
band3_2=0
|
||||
band3_3=0
|
||||
repeaterCall4=
|
||||
repeaterBand4=
|
||||
repeaterBand4=
|
||||
repeaterType4=0
|
||||
repeaterAddress4=127.0.0.1
|
||||
repeaterPort4=20014
|
||||
|
@ -1017,58 +1017,58 @@ dextraEnabled=1
|
|||
dextraMaxDongles=5
|
||||
dplusEnabled=1
|
||||
dplusMaxDongles=5
|
||||
dplusLogin=N0SIGN
|
||||
dplusLogin=N0SIGN
|
||||
dcsEnabled=1
|
||||
ccsEnabled=1
|
||||
ccsHost=CCS704
|
||||
ccsHost=CCS704
|
||||
xlxEnabled=0
|
||||
xlxOverrideLocal=0
|
||||
xlxHostsFileUrl=http://xlxapi.rlx.lu/api.php?do=GetXLXDMRMaster
|
||||
starNetBand1=A
|
||||
starNetCallsign1=
|
||||
starNetLogoff1=
|
||||
starNetCallsign1=
|
||||
starNetLogoff1=
|
||||
starNetInfo1=
|
||||
starNetPermanent1=
|
||||
starNetPermanent1=
|
||||
starNetUserTimeout1=300
|
||||
starNetGroupTimeout1=300
|
||||
starNetCallsignSwitch1=0
|
||||
starNetTXMsgSwitch1=1
|
||||
starNetReflector1=
|
||||
starNetBand2=A
|
||||
starNetCallsign2=
|
||||
starNetLogoff2=
|
||||
starNetCallsign2=
|
||||
starNetLogoff2=
|
||||
starNetInfo2=
|
||||
starNetPermanent2=
|
||||
starNetPermanent2=
|
||||
starNetUserTimeout2=300
|
||||
starNetGroupTimeout2=300
|
||||
starNetCallsignSwitch2=0
|
||||
starNetTXMsgSwitch2=1
|
||||
starNetReflector2=
|
||||
starNetBand3=A
|
||||
starNetCallsign3=
|
||||
starNetLogoff3=
|
||||
starNetCallsign3=
|
||||
starNetLogoff3=
|
||||
starNetInfo3=
|
||||
starNetPermanent3=
|
||||
starNetPermanent3=
|
||||
starNetUserTimeout3=300
|
||||
starNetGroupTimeout3=300
|
||||
starNetCallsignSwitch3=0
|
||||
starNetTXMsgSwitch3=1
|
||||
starNetReflector3=
|
||||
starNetBand4=A
|
||||
starNetCallsign4=
|
||||
starNetLogoff4=
|
||||
starNetCallsign4=
|
||||
starNetLogoff4=
|
||||
starNetInfo4=
|
||||
starNetPermanent4=
|
||||
starNetPermanent4=
|
||||
starNetUserTimeout4=300
|
||||
starNetGroupTimeout4=300
|
||||
starNetCallsignSwitch4=0
|
||||
starNetTXMsgSwitch4=1
|
||||
starNetReflector4=
|
||||
starNetBand5=A
|
||||
starNetCallsign5=
|
||||
starNetLogoff5=
|
||||
starNetCallsign5=
|
||||
starNetLogoff5=
|
||||
starNetInfo5=
|
||||
starNetPermanent5=
|
||||
starNetPermanent5=
|
||||
starNetUserTimeout5=300
|
||||
starNetGroupTimeout5=300
|
||||
starNetCallsignSwitch5=0
|
||||
|
@ -1089,7 +1089,7 @@ mobileGPSAddress=127.0.0.1
|
|||
mobileGPSPort=7834
|
||||
windowX=-1
|
||||
windowY=-1
|
||||
~~~
|
||||
```
|
||||
|
||||
I wasn't aware what numbers need to be set on _gatewayType_ or _repeaterType_,
|
||||
but a look into the source code made my decision easier. I'm not sure if that is
|
||||
|
@ -1100,18 +1100,18 @@ And so I found some information in `Common/Defs.h`:
|
|||
|
||||
{{< highlight cpp "linenos=table,hl_lines=2,linenostart=64">}}
|
||||
enum HW_TYPE {
|
||||
HW_HOMEBREW,
|
||||
HW_ICOM,
|
||||
HW_DUMMY
|
||||
HW_HOMEBREW,
|
||||
HW_ICOM,
|
||||
HW_DUMMY
|
||||
};
|
||||
{{< /highlight >}}
|
||||
|
||||
{{< highlight cpp "linenos=table,hl_lines=3,linenostart=130">}}
|
||||
enum GATEWAY_TYPE {
|
||||
GT_REPEATER,
|
||||
GT_HOTSPOT,
|
||||
GT_DONGLE,
|
||||
GT_STARNET
|
||||
GT_REPEATER,
|
||||
GT_HOTSPOT,
|
||||
GT_DONGLE,
|
||||
GT_STARNET
|
||||
};
|
||||
{{< /highlight >}}
|
||||
|
||||
|
@ -1134,7 +1134,7 @@ be set to
|
|||
|
||||
Adopt those changes in `/etc/timeserver`.
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
# file: "/etc/timeserver"
|
||||
callsign=N0SIGN
|
||||
sendA=0
|
||||
|
@ -1148,13 +1148,13 @@ format=1
|
|||
interval=2
|
||||
windowX=0
|
||||
windowY=0
|
||||
~~~
|
||||
```
|
||||
|
||||
## First run
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo -u mmdvm ircddbgatewayd
|
||||
~~~
|
||||
```
|
||||
|
||||
Abort with `CTRL + C` when done.
|
||||
|
||||
|
@ -1163,7 +1163,7 @@ Abort with `CTRL + C` when done.
|
|||
You could copy over the unit files from `./debian`, but the paths in those files
|
||||
need adjustement, so we create them directly with `sudo vim /etc/systemd/system/...`
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
# file: "/etc/systemd/system/ircddbgateway.service"
|
||||
[Unit]
|
||||
Description=D-STAR Gateway Daemon
|
||||
|
@ -1176,9 +1176,9 @@ Restart=on-abort
|
|||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
~~~
|
||||
```
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
# file: "/etc/systemd/system/timeserver.service"
|
||||
[Unit]
|
||||
Description=Timeserver (ircDDBGateway) Daemon
|
||||
|
@ -1194,15 +1194,15 @@ Restart=on-abort
|
|||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
~~~
|
||||
```
|
||||
|
||||
Enable the services
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo systemctl daemon-reload
|
||||
$ sudo systemctl enable --now ircddbgateway.service
|
||||
$ sudo systemctl enable --now timeserver.service
|
||||
~~~
|
||||
```
|
||||
|
||||
## The hotspot works
|
||||
|
||||
|
@ -1220,11 +1220,11 @@ electro-magnetic stream in the air.
|
|||
|
||||
Install some needed packages
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo apt install python3-websockets python3-pip
|
||||
$ sudo pip3 install ansi2html
|
||||
$ sudo apt install python3-gpiozero python3-psutil python3-serial
|
||||
~~~
|
||||
```
|
||||
|
||||
Refer to the [installation instructions](https://github.com/dg9vh/MMDVMHost-Websocketboard#installation)
|
||||
on the repository for more information and the full instructions.
|
||||
|
@ -1232,9 +1232,9 @@ on the repository for more information and the full instructions.
|
|||
Allow the _logtailer_ program access to _MMDVMHost_ with `sudo visudo` and add
|
||||
this line to the user section of the sudoers file:
|
||||
|
||||
~~~plain
|
||||
```plain
|
||||
www-data ALL=(ALL) NOPASSWD: /usr/local/bin/MMDVMHost
|
||||
~~~
|
||||
```
|
||||
|
||||
#### Webserver or built-in solution?
|
||||
|
||||
|
@ -1244,9 +1244,9 @@ I'll stick to a real webserver in this article.
|
|||
|
||||
Install nginx with php support with
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo apt install nginx php-fpm
|
||||
~~~
|
||||
```
|
||||
|
||||
##### Configure and limit webserver
|
||||
|
||||
|
@ -1258,7 +1258,7 @@ filenames → we want to disable the dashboard with an empty `index.html` file
|
|||
that we create in the document root of our webserver
|
||||
(`sudo touch /var/www/html/index.html`).
|
||||
|
||||
~~~nginx
|
||||
```nginx
|
||||
# file: "/etc/nginx/sites-enabled/default"
|
||||
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s;
|
||||
|
||||
|
@ -1296,7 +1296,7 @@ server {
|
|||
#
|
||||
location ~ \.php$ {
|
||||
include snippets/fastcgi-php.conf;
|
||||
|
||||
|
||||
# With php-fpm (or other unix sockets):
|
||||
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
|
||||
# With php-cgi (or other tcp sockets):
|
||||
|
@ -1315,15 +1315,15 @@ server {
|
|||
# Virtual Host configuration for example.com
|
||||
#
|
||||
# [...]
|
||||
~~~
|
||||
```
|
||||
|
||||
### Get the code
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo mkdir /opt/MMDVMDash
|
||||
$ sudo chown pi /opt/MMDVMDash
|
||||
$ git clone --recursive git@github.com:dg9vh/MMDVMHost-Websocketboard.git /opt/MMDVMDash
|
||||
~~~
|
||||
```
|
||||
|
||||
We saved the dashboard repository now in `/opt/MMDVMDash`.
|
||||
|
||||
|
@ -1331,7 +1331,7 @@ We saved the dashboard repository now in `/opt/MMDVMDash`.
|
|||
|
||||
Open `logtailer.ini`, this should look something like this (shrinked together)
|
||||
|
||||
~~~ini
|
||||
```ini
|
||||
# file: "/opt/MMDVMDash/logtailer.ini"
|
||||
[DEFAULT]
|
||||
Host=0.0.0.0
|
||||
|
@ -1357,11 +1357,11 @@ BinaryName1=MMDVMHost
|
|||
BinaryName2=ircddbgatewayd
|
||||
BinaryName3=YSFGateway
|
||||
BinaryName4=timeserverd
|
||||
~~~
|
||||
```
|
||||
|
||||
Next, open `/opt/MMDVMDash/html/js/config.js` and modify it to your needs
|
||||
|
||||
~~~js
|
||||
```js
|
||||
// file: "/opt/MMDVMDash/html/js/config.js"
|
||||
var config_struc_ver = 20210501.1;
|
||||
var qrz = 1;
|
||||
|
@ -1379,24 +1379,20 @@ var services = 1;
|
|||
var about = 0;
|
||||
var useClientTimezone = 1;
|
||||
var showBMTGLink = 0;
|
||||
var qrz_blacklist = [
|
||||
"N0CALL",
|
||||
]
|
||||
var dashboard_blacklist = [
|
||||
"MY0CALL",
|
||||
]
|
||||
var qrz_blacklist = ["N0CALL"];
|
||||
var dashboard_blacklist = ["MY0CALL"];
|
||||
var useDarkTheme = 0;
|
||||
var customHeadlineText = ``;
|
||||
var customText = ``;
|
||||
~~~
|
||||
```
|
||||
|
||||
### Create and enable a system service
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo cp systemd/logtailer.service /etc/systemd/system/
|
||||
$ sudo systemctl daemon-reload
|
||||
$ sudo systemctl enable --now logtailer.service
|
||||
~~~
|
||||
```
|
||||
|
||||
## Enjoy the multi-mode hotspot
|
||||
|
||||
|
|
|
@ -2,20 +2,19 @@
|
|||
title: Mounting disk images on linux
|
||||
aliases: /posts/2022-08-06-mounting-disk-images-on-linux
|
||||
summary: >
|
||||
I sometimes create full-disk-images of USB drives or hard drives and in
|
||||
rare cases I have to look into them. This is how I usually do that.
|
||||
I sometimes create full-disk-images of USB drives or hard drives and in
|
||||
rare cases I have to look into them. This is how I usually do that.
|
||||
date: 2022-08-06T21:02:21+02:00
|
||||
lastmod: 2023-12-26T13:25:16+0000
|
||||
lastmod: 2024-09-28T23:48:06+0000
|
||||
categories: [computerstuff]
|
||||
tags: [linux,raspberry-pi]
|
||||
|
||||
tags: [linux, raspberry-pi]
|
||||
---
|
||||
|
||||
Let's assume you created a disk image with `dd` on a linux computer like
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo dd if=/dev/sda of=disk.img bs=4M status=progress conv=fsync
|
||||
~~~
|
||||
```
|
||||
|
||||
There are several partitions in that image and we want to access the linux
|
||||
filesystem on it. For reference, I'll bring in some old backup I made from a
|
||||
|
@ -24,7 +23,7 @@ with `xz`.
|
|||
|
||||
When uncompressed, look at the partition table with _fdisk_:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ fdisk -l disk.img
|
||||
Festplatte disk.img: 7,4 GiB, 7948206080 Bytes, 15523840 Sektoren
|
||||
Einheiten: Sektoren von 1 * 512 = 512 Bytes
|
||||
|
@ -36,7 +35,7 @@ Festplattenbezeichner: 0x1b7f4bbb
|
|||
Gerät Boot Anfang Ende Sektoren Größe Kn Typ
|
||||
disk.img1 8192 532479 524288 256M c W95 FAT32 (LBA)
|
||||
disk.img2 532480 15523839 14991360 7,1G 83 Linux
|
||||
~~~
|
||||
```
|
||||
|
||||
We will refer to this output later again.
|
||||
|
||||
|
@ -48,10 +47,10 @@ first is the FAT32 partition used for UEFI and the second is the root file syste
|
|||
|
||||
### Creating and mounting the loop device
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo losetup --partscan --find --show disk.img
|
||||
/dev/loop1
|
||||
~~~
|
||||
```
|
||||
|
||||
The second line is the output of the program. I used losetup already today, so
|
||||
this is not _loop0_ but _loop1_. You may get `/dev/loop0` usually.
|
||||
|
@ -59,16 +58,16 @@ this is not _loop0_ but _loop1_. You may get `/dev/loop0` usually.
|
|||
Mount the new virtual loop device to the directory that you like. This is
|
||||
`~/tmp` in my case.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo mount /dev/loop1p2 tmp
|
||||
~~~
|
||||
```
|
||||
|
||||
### Removing the loop device
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo umount tmp
|
||||
$ sudo losetup -d /dev/loop1
|
||||
~~~
|
||||
```
|
||||
|
||||
## Using `fdisk` and `mount`
|
||||
|
||||
|
@ -83,15 +82,15 @@ We calculate the needed offset like: `532480 * 512 = 272629760`
|
|||
|
||||
And the resulting command is
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo mount -o loop,offset=272629760 disk.img tmp/
|
||||
~~~
|
||||
```
|
||||
|
||||
A remount is simple as
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo umount tmp
|
||||
~~~
|
||||
```
|
||||
|
||||
## When do you need this stuff
|
||||
|
||||
|
|
|
@ -1,15 +1,14 @@
|
|||
---
|
||||
title: Using NFS shares on a Raspberry Pi
|
||||
aliases:
|
||||
- /posts/2022-08-07-using-nfs-on-a-raspberry-pi
|
||||
- /posts/2022-08-07-using-nfs-shares-on-a-raspberry-pi
|
||||
- /posts/2022-08-07-using-nfs-on-a-raspberry-pi
|
||||
- /posts/2022-08-07-using-nfs-shares-on-a-raspberry-pi
|
||||
summary: >
|
||||
A quick and short guide on how to setup an NFS share on a
|
||||
Raspberry Pi.
|
||||
date: 2022-08-07T07:19:54+02:00
|
||||
categories: [computerstuff]
|
||||
tags: [linux,networking,raspberry-pi]
|
||||
|
||||
tags: [linux, networking, raspberry-pi]
|
||||
---
|
||||
|
||||
I use this mainly on my amateur radio hotspot when I work on my sleek dashboard.
|
||||
|
@ -21,22 +20,22 @@ the data gets pulled live from the logs -- like it would be on the final system.
|
|||
|
||||
## Installation and configuration
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo apt update
|
||||
$ sudo apt install nfs-kernel-server
|
||||
~~~
|
||||
```
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo vim /etc/exports
|
||||
~~~
|
||||
```
|
||||
|
||||
We have to export our directories in the file `/etc/exports` on our Raspberry Pi.
|
||||
|
||||
~~~plain
|
||||
```plain
|
||||
# file: "/etc/exports"
|
||||
/var/www/html 192.168.1.123(rw,async,all_squash,insecure,no_subtree_check,anonuid=1000,anongid=1000)
|
||||
/opt/MMDVMDash 192.168.1.123(rw,async,all_squash,insecure,no_subtree_check,anonuid=1000,anongid=1000)
|
||||
~~~
|
||||
```
|
||||
|
||||
So we allow `192.168.1.123` read- and write-access to the directories above.
|
||||
|
||||
|
@ -47,18 +46,18 @@ as my user on the Raspberry Pi (192.168.1.124).
|
|||
|
||||
Also edit `/etc/hosts.allow` to grant access for your network or host.
|
||||
|
||||
~~~plain
|
||||
```plain
|
||||
# file: "/etc/hosts.allow"
|
||||
ALL: 192.168.1.123
|
||||
~~~
|
||||
```
|
||||
|
||||
After we changed the contents of `/etc/exports` we have to run the `exportfs`
|
||||
command and restart the nfs-server.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo exportfs -ra
|
||||
$ sudo systemctl restart nfs-server.service
|
||||
~~~
|
||||
```
|
||||
|
||||
## Accessing the directories
|
||||
|
||||
|
@ -71,16 +70,16 @@ only **root** is allowed to use mount without an entry in `/etc/fstab`.
|
|||
|
||||
So we run
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo mount 192.168.1.124:/var/www/html tmp/
|
||||
~~~
|
||||
```
|
||||
|
||||
and if it does not print anything, all is good. On the Raspberry Pi you should
|
||||
see a new line looking like:
|
||||
|
||||
~~~plain
|
||||
```plain
|
||||
raspi4 rpc.mountd[30223]: authenticated mount request from 192.168.1.123:894 for /opt/MMDVMDash/html (/opt/MMDVMDash/html)
|
||||
~~~
|
||||
```
|
||||
|
||||
{{< alert circle-info >}}
|
||||
**To eliminate the confusion:** I've mounted `/var/www/html` but the log shows
|
||||
|
@ -94,22 +93,22 @@ in our `/etc/fstab` file to let the system mount this share when starting.
|
|||
|
||||
When unmounting, you should see another line on your Raspberry Pi.
|
||||
|
||||
~~~plain
|
||||
```plain
|
||||
raspi4 rpc.mountd[30223]: authenticated unmount request from 192.168.1.123:696 for /opt/MMDVMDash/html (/opt/MMDVMDash/html)
|
||||
~~~
|
||||
```
|
||||
|
||||
## Creating entries in our `/etc/fstab` file
|
||||
|
||||
First, let us create a directory on our laptop.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ mkdir -p ~/raspi4/html
|
||||
~~~
|
||||
```
|
||||
|
||||
~~~plain
|
||||
```plain
|
||||
# file: "/etc/fstab"
|
||||
192.168.1.124:/var/www/html /home/dominic/raspi4/html nfs noauto,users,nodev,async,soft,_netdev,x-systemd.automount,x-systemd.device-timeout=1,x-systemd-idle-timeout=1min,x-systemd.mount-timeout=10,timeo=10,retry=3 0 0
|
||||
~~~
|
||||
```
|
||||
|
||||
After changing that file, make sure to reload Systemd with
|
||||
`sudo systemctl daemon-reload`.
|
||||
|
|
|
@ -22,9 +22,9 @@ used that as my starting point.
|
|||
|
||||
First of all, install NetworkManager-l2tp-gnome:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo dnf install NetworkManager-l2tp-gnome
|
||||
~~~
|
||||
```
|
||||
|
||||
After that, create the new VPN tunnel in `Settings` → `Network` → `VPN`.
|
||||
|
||||
|
@ -59,6 +59,6 @@ describes the setup of an OpenVPN client, but it is limited to users with a
|
|||
static HAMNET IP address.
|
||||
|
||||
- Original article found on HAMNET
|
||||
<http://web.db0sda.ampr.org/projekte/hamnet/anwendungen/vpn-zugang/openvpn-hamnet-dial-in>
|
||||
<http://web.db0sda.ampr.org/projekte/hamnet/anwendungen/vpn-zugang/openvpn-hamnet-dial-in>
|
||||
- Also available on normal internet
|
||||
<https://www.afu.rwth-aachen.de/projekte/hamnet/anwendungen/vpn-zugang/openvpn-hamnet-dial-in>
|
||||
<https://www.afu.rwth-aachen.de/projekte/hamnet/anwendungen/vpn-zugang/openvpn-hamnet-dial-in>
|
||||
|
|
|
@ -46,19 +46,19 @@ As second solution, we create a new entry for `.log` files and declare them as
|
|||
|
||||
Create a textfile with the ending `.reg` like `openlogs.reg`.
|
||||
|
||||
~~~reg
|
||||
```reg
|
||||
Windows Registry Editor Version 5.00
|
||||
|
||||
[HKEY_CLASSES_ROOT\.log]
|
||||
@="txtfile"
|
||||
"Content Type"="text/plain"
|
||||
~~~
|
||||
```
|
||||
|
||||
After saving the file, import it into the windows registry like this:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ wine regedit openlogs.reg
|
||||
~~~
|
||||
```
|
||||
|
||||
This should work instantly.
|
||||
|
||||
|
@ -68,7 +68,7 @@ This should work instantly.
|
|||
|
||||
Also create a textfile with the ending `.reg`, but fill it with these contents:
|
||||
|
||||
~~~reg
|
||||
```reg
|
||||
Windows Registry Editor Version 5.00
|
||||
|
||||
[HKEY_CLASSES_ROOT\.log]
|
||||
|
@ -84,13 +84,13 @@ Windows Registry Editor Version 5.00
|
|||
|
||||
[HKEY_CLASSES_ROOT\logfile\shell\open\command]
|
||||
@="\"winebrowser\" \"%1\""
|
||||
~~~
|
||||
```
|
||||
|
||||
Load this into the registry:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ wine regedit openlogs_native.reg
|
||||
~~~
|
||||
```
|
||||
|
||||
Also this should work instantly. Opening the logs should open your application
|
||||
on your linux computer that usually opens `.log` files. That is
|
||||
|
|
|
@ -36,14 +36,14 @@ Select <kbd>Interfaces</kbd> → <kbd>Assignments</kbd> → <kbd>PPPs</kbd>
|
|||
Click on the green <kbd>+ Add</kbd> button on the bottom right and create the
|
||||
new PPP interface with the following specs:
|
||||
|
||||
| Settings name | value |
|
||||
| :--- | :--- |
|
||||
| Link Type | **L2TP** |
|
||||
| Link interface(s) | **WAN** |
|
||||
| Username | **N0CALL** (your callsign usually) |
|
||||
| Password | (your password) |
|
||||
| Local IP | (leave empty) |
|
||||
| Gateway IP or hostname | **vpn.afu.rwth-aachen.de** |
|
||||
| Settings name | value |
|
||||
| :--------------------- | :--------------------------------- |
|
||||
| Link Type | **L2TP** |
|
||||
| Link interface(s) | **WAN** |
|
||||
| Username | **N0CALL** (your callsign usually) |
|
||||
| Password | (your password) |
|
||||
| Local IP | (leave empty) |
|
||||
| Gateway IP or hostname | **vpn.afu.rwth-aachen.de** |
|
||||
|
||||
<!-- You can change `vpn.afu.rwth-aachen.de` with the IP address of the server if you
|
||||
like. That may help if you don't have a working DNS setup in your network. At the
|
||||
|
@ -64,14 +64,14 @@ green button.
|
|||
|
||||
Then click on the new interface and set it up.
|
||||
|
||||
| Settings name | value |
|
||||
| :--- | :--- |
|
||||
| Description | **VPN_HAMNET** (a meaningful description) |
|
||||
| IPv4 Configuration Type | **L2TP** |
|
||||
| IPv6 Configuration Type | **None** (or SLAAC if you use IPv6) |
|
||||
| Username | **N0CALL** (your callsign usually) |
|
||||
| Password | (your password) |
|
||||
| Remote IP address | **vpn.afu.rwth-aachen.de** |
|
||||
| Settings name | value |
|
||||
| :---------------------- | :---------------------------------------- |
|
||||
| Description | **VPN_HAMNET** (a meaningful description) |
|
||||
| IPv4 Configuration Type | **L2TP** |
|
||||
| IPv6 Configuration Type | **None** (or SLAAC if you use IPv6) |
|
||||
| Username | **N0CALL** (your callsign usually) |
|
||||
| Password | (your password) |
|
||||
| Remote IP address | **vpn.afu.rwth-aachen.de** |
|
||||
|
||||
![screenshot showing interface configuration](04_interface-configuration.png)
|
||||
|
||||
|
@ -102,9 +102,9 @@ configuration.
|
|||
|
||||
You see three fields, <kbd>Number</kbd>, <kbd>Type</kbd> and <kbd>Value</kbd>.
|
||||
|
||||
| Number | Type | Value |
|
||||
| :--- | :--- | :--- |
|
||||
| `121` | `String` | `09:2c:00:c0:a8:0a:01:0a:2c:80:c0:a8:0a:01` |
|
||||
| Number | Type | Value |
|
||||
| :----- | :------- | :------------------------------------------ |
|
||||
| `121` | `String` | `09:2c:00:c0:a8:0a:01:0a:2c:80:c0:a8:0a:01` |
|
||||
|
||||
{{< alert >}}
|
||||
Do not copy this configuration into your pfSense. This setting is somewhat
|
||||
|
@ -114,14 +114,14 @@ your own configuration!
|
|||
|
||||
Create your own configuration with help of this script:
|
||||
|
||||
~~~bash
|
||||
```bash
|
||||
#!/bin/bash
|
||||
check_ip(){
|
||||
check_ip(){
|
||||
local n=0 val=1
|
||||
for i in ${1//./ }; do
|
||||
for i in ${1//./ }; do
|
||||
[ $i -lt 0 -o $i -gt 255 ] && val=0
|
||||
n=$[n+1]
|
||||
done
|
||||
done
|
||||
[ $n -ne 4 ] && val=0
|
||||
if [ $val -ne 1 ] ; then
|
||||
echo "Invalid IP: $1" >&2
|
||||
|
@ -161,8 +161,8 @@ while [ $# -gt 0 ] ; do
|
|||
shift 2
|
||||
[ $# -gt 0 ] && echo -n ":"
|
||||
done
|
||||
echo
|
||||
~~~
|
||||
echo
|
||||
```
|
||||
|
||||
Source: [mgergi.hu](https://mgergi.hu/en/it-blog/static-route-dhcp-pfsense)
|
||||
|
||||
|
@ -172,12 +172,12 @@ you should read.
|
|||
|
||||
Replace `192.168.10.1` with your routers IP address!
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ hexroute.sh 44.0.0.0/9 192.168.10.1
|
||||
09:2c:00:c0:a8:0a:01
|
||||
$ hexroute.sh 44.128.0.0/10 192.168.10.1
|
||||
0a:2c:80:c0:a8:0a:01
|
||||
~~~
|
||||
```
|
||||
|
||||
You see, you get two values. All you have to do is concatenate those two values
|
||||
and separate them with colons. Insert the new string into the <kbd>Value</kbd>
|
||||
|
@ -201,26 +201,25 @@ add the static routes manually.
|
|||
|
||||
In `/etc/dhcpcd.conf`, uncomment `classless_static_routes`:
|
||||
|
||||
~~~aconf {linenos=inline,linenostart=26,hl_lines=3}
|
||||
```aconf {linenos=inline,linenostart=26,hl_lines=3}
|
||||
# A list of options to request from the DHCP server.
|
||||
#option domain_name_servers, domain_name, domain_search, host_name
|
||||
#option classless_static_routes
|
||||
# Respect the network MTU. This is applied to DHCP routes.
|
||||
option interface_mtu
|
||||
~~~
|
||||
```
|
||||
|
||||
and let **dhcpcd** add the static routes automatically. Create the file
|
||||
`/etc/dhcpcd.exit-hook` and add the routes manually with this script:
|
||||
|
||||
~~~bash
|
||||
```bash
|
||||
/sbin/route add -net 44.0.0.0/9 gw 192.168.10.1
|
||||
/sbin/route add -net 44.128.0.0/10 gw 192.168.10.1
|
||||
~~~
|
||||
```
|
||||
|
||||
## More resources
|
||||
|
||||
* https://support.aa.net.uk/L2TP_Client:_pfSense
|
||||
* https://id3145.com/2017/blog/5-pfSense-Add-Static-Routes-to-pfSense-DHCP-Clients.html
|
||||
* https://www.iana.org/assignments/bootp-dhcp-parameters/
|
||||
* https://www.rfc-editor.org/rfc/rfc3442.html
|
||||
|
||||
- https://support.aa.net.uk/L2TP_Client:_pfSense
|
||||
- https://id3145.com/2017/blog/5-pfSense-Add-Static-Routes-to-pfSense-DHCP-Clients.html
|
||||
- https://www.iana.org/assignments/bootp-dhcp-parameters/
|
||||
- https://www.rfc-editor.org/rfc/rfc3442.html
|
||||
|
|
|
@ -7,7 +7,7 @@ aliases = [
|
|||
summary = """Because I use two network interfaces with more subnets/routes on one of them.
|
||||
But I use the other interface for internet because of speed..."""
|
||||
date = "2022-11-24T20:15:44+02:00"
|
||||
lastmod = '2024-04-06T05:40:08+0000'
|
||||
lastmod = '2024-09-28T23:48:06+0000'
|
||||
categories = ["computerstuff"]
|
||||
tags = ["linux","networking", "networkmanager"]
|
||||
|
||||
|
@ -15,13 +15,13 @@ tags = ["linux","networking", "networkmanager"]
|
|||
|
||||
Check for connection names.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ nmcli connection
|
||||
NAME UUID TYPE DEVICE >
|
||||
MagentaNET 923ab10b-be81-4668-9aab-************ wifi wlx00259ce03>
|
||||
DreiNET b2bcc61c-19df-41f0-9790-************ wifi wlo1 >
|
||||
Kabelgebundene Verbindung 1 c75abc26-19eb-3fec-81b1-************ ethernet --
|
||||
~~~
|
||||
Kabelgebundene Verbindung 1 c75abc26-19eb-3fec-81b1-************ ethernet --
|
||||
```
|
||||
|
||||
Start editing the affected connection:
|
||||
|
||||
|
@ -42,14 +42,14 @@ nmcli> save
|
|||
nmcli> quit
|
||||
{{< /highlight >}}
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ sudo systemctl restart NetworkManager
|
||||
~~~
|
||||
```
|
||||
|
||||
Check routing table with
|
||||
Check routing table with
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ ip route
|
||||
~~~
|
||||
```
|
||||
|
||||
Source: <https://dev.to/emamirazavi/how-to-set-metric-in-networkmanager-system-4525>
|
||||
|
|
|
@ -4,7 +4,7 @@ aliases = '/posts/2022-11-26-change-git-submodule-url'
|
|||
summary = """Another thing I forget constantly when using git:
|
||||
Changing the remote URL of a submodule"""
|
||||
date = "2022-12-01T20:08:17+01:00"
|
||||
lastmod = '2023-11-18T22:01:29+0000'
|
||||
lastmod = '2024-09-28T23:48:06+0000'
|
||||
categories = ["computerstuff"]
|
||||
tags = ["git"]
|
||||
|
||||
|
@ -15,27 +15,27 @@ If the location (URL) of the submodule has changed, then you can simply:
|
|||
1. Modify the <kbd>.gitmodules</kbd> file in the repo root to use the new URL.
|
||||
2. Delete the submodule folder in the repo
|
||||
|
||||
~~~console
|
||||
$ rm -rf .git/modules/<submodule>
|
||||
~~~
|
||||
```console
|
||||
$ rm -rf .git/modules/<submodule>
|
||||
```
|
||||
|
||||
3. Delete the submodule folder in the working directory
|
||||
|
||||
~~~console
|
||||
$ rm -rf <submodule>
|
||||
~~~
|
||||
```console
|
||||
$ rm -rf <submodule>
|
||||
```
|
||||
|
||||
4. Run
|
||||
|
||||
~~~console
|
||||
$ git submodule sync
|
||||
~~~
|
||||
```console
|
||||
$ git submodule sync
|
||||
```
|
||||
|
||||
5. And run
|
||||
|
||||
~~~console
|
||||
$ git submodule update
|
||||
~~~
|
||||
```console
|
||||
$ git submodule update
|
||||
```
|
||||
|
||||
More complete info can be found elsewhere:
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ aliases = '/posts/2023-01-24-my-current-website-setup'
|
|||
summary = """This is how I install hugo nowadays. Although that routine might
|
||||
change anytime."""
|
||||
date = "2023-01-24T22:36:25+0100"
|
||||
lastmod = '2024-03-31T11:26:26+0000'
|
||||
lastmod = '2024-09-28T23:48:06+0000'
|
||||
categories = ["computerstuff"]
|
||||
tags = ["linux", "server", "gohugo", "selfhost", "website-news"]
|
||||
|
||||
|
@ -28,45 +28,45 @@ This is done on your computer.
|
|||
|
||||
- Install Git
|
||||
|
||||
Depending on your <abbr title="Operating System">OS</abbr>, this might look
|
||||
like one of those:
|
||||
|
||||
~~~console
|
||||
$ sudo apt install git
|
||||
~~~
|
||||
|
||||
~~~console
|
||||
$ sudo pacman -S git
|
||||
~~~
|
||||
Depending on your <abbr title="Operating System">OS</abbr>, this might look
|
||||
like one of those:
|
||||
|
||||
```console
|
||||
$ sudo apt install git
|
||||
```
|
||||
|
||||
```console
|
||||
$ sudo pacman -S git
|
||||
```
|
||||
|
||||
- Install Go version 1.18 or later
|
||||
|
||||
See above for the syntax, this package may be called `golang` on some
|
||||
distributions (I think Ubuntu/Debian for example).
|
||||
See above for the syntax, this package may be called `golang` on some
|
||||
distributions (I think Ubuntu/Debian for example).
|
||||
|
||||
- Update your PATH environment variable as described in the Go documentation
|
||||
|
||||
Now, that looks like this:
|
||||
Now, that looks like this:
|
||||
|
||||
~~~zsh
|
||||
if [[ -d $HOME/go ]]; then
|
||||
export GOPATH="$HOME/go"
|
||||
path=(
|
||||
$GOPATH/bin
|
||||
$path
|
||||
)
|
||||
fi
|
||||
~~~
|
||||
```zsh
|
||||
if [[ -d $HOME/go ]]; then
|
||||
export GOPATH="$HOME/go"
|
||||
path=(
|
||||
$GOPATH/bin
|
||||
$path
|
||||
)
|
||||
fi
|
||||
```
|
||||
|
||||
_That is an example taken from my `.zprofile` file._
|
||||
_That is an example taken from my `.zprofile` file._
|
||||
|
||||
### Install hugo
|
||||
|
||||
We are still on our computer.
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ go install -tags extended github.com/gohugoio/hugo@latest
|
||||
~~~
|
||||
```
|
||||
|
||||
That installs the latest version of hugo into `$HOME/go/bin`. If your terminal
|
||||
does not recognize the new binaries: `hash -r` or `rehash` might help...
|
||||
|
@ -84,16 +84,16 @@ hugo project before proceeding.
|
|||
|
||||
From your project directory, initialise hugo modules:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ hugo mod init github.com/<username>/<repo-name>
|
||||
~~~
|
||||
```
|
||||
|
||||
Create `config/_default/module.toml` and add the following:
|
||||
|
||||
~~~toml
|
||||
```toml
|
||||
[[imports]]
|
||||
path = "github.com/jpanther/congo/v2"
|
||||
~~~
|
||||
```
|
||||
|
||||
Start your server using `hugo server` and the theme will be downloaded
|
||||
automatically.
|
||||
|
@ -179,10 +179,10 @@ our computer.
|
|||
Create a file `.cloudflarerc` in your `$HOME` directory that contains those two
|
||||
variables:
|
||||
|
||||
~~~bash
|
||||
```bash
|
||||
apikey=*********************************-******
|
||||
id=********************************
|
||||
~~~
|
||||
```
|
||||
|
||||
You find them in your [Cloudflare dashboard](https://dash.cloudflare.com/).
|
||||
Click on <kbd>Websites</kbd> and continue with clicking your domain name.
|
||||
|
@ -201,7 +201,7 @@ Click <kbd>Create token</kbd> and copy the resulting token into your
|
|||
Now we need one last file in our git repository. Create `.git/hooks/pre-push` and
|
||||
fill it with this:
|
||||
|
||||
~~~bash
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
if ! [ -f ~/.cloudflarerc ] ; then
|
||||
|
@ -226,17 +226,17 @@ else
|
|||
# exit with 1, so the update does not proceed, so we will know
|
||||
exit 1
|
||||
fi
|
||||
~~~
|
||||
```
|
||||
|
||||
I found the script on
|
||||
<https://www.supertechcrew.com/clear-cloudflare-cache-when-pushing-from-git-github-pages/>
|
||||
-- which is also a good read if my explanation won't work for you.
|
||||
-- which is also a good read if my explanation won't work for you.
|
||||
|
||||
Don't forget to make this script executable:
|
||||
|
||||
~~~console
|
||||
```console
|
||||
$ chmod +x .git/hooks/pre-push
|
||||
~~~
|
||||
```
|
||||
|
||||
## Publish the website
|
||||
|
||||
|
@ -253,7 +253,7 @@ post-receive hook on the git servers repository.
|
|||
|
||||
It's actually the file `website.git/hook/post-receive.d/publish`:
|
||||
|
||||
~~~bash
|
||||
```bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# change these to your needs...
|
||||
|
@ -274,10 +274,9 @@ rm -rf ${PUBLIC_WWW}/*
|
|||
/home/git/go/bin/hugo --gc --minify --cleanDestinationDir -s ${WORKING_DIR} -d ${PUBLIC_WWW}
|
||||
rm -rf ${WORKING_DIR}
|
||||
trap - exit
|
||||
~~~
|
||||
```
|
||||
|
||||
If you use Gitea, those repositories are per default in
|
||||
`/var/lib/gitea/data/gitea-repositories/`...
|
||||
|
||||
That is it, basically.
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue