first commit; still need to update content/posts

main
Dominic Reich 2 years ago
commit 4c06e374ed
Signed by: dominic
GPG Key ID: BC9D6AE1A3BE169A

@ -0,0 +1,15 @@
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false

3
.gitignore vendored

@ -0,0 +1,3 @@
.hugo_build.lock
resources
public

@ -0,0 +1,6 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@ -0,0 +1,20 @@
# -- Site Configuration --
# Refer to the theme docs for more details about each of these parameters.
# https://jpanther.github.io/congo/docs/getting-started/
# baseURL = "https://your_domain.com/"
defaultContentLanguage = "en"
enableRobotsTXT = true
paginate = 10
summaryLength = 0
# [permalinks]
# #post = '/:sections[last]/:year-:month-:day-:slug/'
# post = '/:sections[last]/:year-:month-:day-:slug/'
# # page = "/:slug/"
# # categories = "/:section/:slug/"
# categories = "/:slug/"
[outputs]
home = ["HTML", "RSS", "JSON"]

@ -0,0 +1,66 @@
languageCode = "en"
languageName = "English"
displayName = "EN"
isoCode = "en"
weight = 1
rtl = false
title = "OE7DRT"
# logo = "img/logo.jpg"
# description = "My awesome website"
# copyright = "Copy, _right?_ :thinking_face:"
copyright = """Content © by Dominic OE7DRT.
Licensed as [CC BY-NC-ND 4.0](https://creativecommons.org/licenses/by-nc-nd/4.0/)"""
dateFormat = "2 January 2006"
[author]
name = "Dominic “OE7DRT”"
image = "img/author.jpg"
headline = "Austrian Amateur Radio Station"
bio = """Quickndirty facts: mid-30s, construction worker since 2016,
electrician before, likes tech stuff and nature. Uses this website as a
digital notebook."""
links = [
{ email = "mailto:dominic@oe7drt.com" },
# { link = "https://link-to-some-website.com/" },
# { amazon = "https://www.amazon.com/hz/wishlist/ls/wishlist-id" },
# { apple = "https://www.apple.com" },
# { blogger = "https://username.blogspot.com/" },
# { codepen = "https://codepen.io/username" },
# { dev = "https://dev.to/username" },
# { discord = "https://discord.gg/invitecode" },
# { dribbble = "https://dribbble.com/username" },
# { facebook = "https://facebook.com/username" },
# { flickr = "https://www.flickr.com/photos/username/" },
# { foursquare = "https://foursquare.com/username" },
{ github = "https://github.com/oe7drt" },
# { gitlab = "https://gitlab.com/username" },
# { google = "https://www.google.com/" },
# { hashnode = "https://username.hashnode.dev" },
# { instagram = "https://instagram.com/username" },
# { keybase = "https://keybase.io/username" },
# { kickstarter = "https://www.kickstarter.com/profile/username" },
# { lastfm = "https://lastfm.com/user/username" },
# { linkedin = "https://linkedin.com/in/username" },
{ mastodon = "https://mastodon.radio/@oe7drt" },
# { medium = "https://medium.com/username" },
# { microsoft = "https://www.microsoft.com/" },
# { orcid = "https://orcid.org/userid" },
# { patreon = "https://www.patreon.com/username" },
# { pinterest = "https://pinterest.com/username" },
# { reddit = "https://reddit.com/user/username" },
# { researchgate = "https://www.researchgate.net/profile/username" },
# { slack = "https://workspace.url/team/userid" },
# { snapchat = "https://snapchat.com/add/username" },
# { soundcloud = "https://soundcloud.com/username" },
# { stack-overflow = "https://stackoverflow.com/users/userid/username" },
# { steam = "https://steamcommunity.com/profiles/userid" },
{ telegram = "https://t.me/oe7drt" },
# { tiktok = "https://tiktok.com/@username" },
# { tumblr = "https://username.tumblr.com" },
# { twitch = "https://twitch.tv/username" },
{ twitter = "https://twitter.com/oe7drt" },
# { whatsapp = "https://wa.me/phone-number" },
{ youtube = "https://youtube.com/@oe7drt" },
]

@ -0,0 +1,13 @@
# -- Markup --
# These settings are required for the theme to function.
[goldmark]
[goldmark.renderer]
unsafe = true
[highlight]
noClasses = false
[tableOfContents]
startLevel = 2
endLevel = 4

@ -0,0 +1,62 @@
# -- Main Menu --
# The main menu is displayed in the header at the top of the page.
# Acceptable parameters are name, pageRef, page, url, title, weight.
#
# The simplest menu configuration is to provide:
# name = The name to be displayed for this menu link
# pageRef = The identifier of the page or section to link to
#
# By default the menu is ordered alphabetically. This can be
# overridden by providing a weight value. The menu will then be
# ordered by weight from lowest to highest.
[[main]]
name = "Blog"
pageRef = "posts"
weight = 10
[[main]]
name = "About"
pageRef = "about"
weight = 20
[[main]]
name = "Equipment"
pageRef = "equipment"
weight = 30
# [[main]]
# name = "Categories"
# pageRef = "categories"
# weight = 40
[[main]]
name = "Tags"
pageRef = "tags"
weight = 50
# -- Footer Menu --
# The footer menu is displayed at the bottom of the page, just before
# the copyright notice. Configure as per the main menu above.
# [[footer]]
# name = "Tags"
# pageRef = "tags"
# weight = 10
# [[footer]]
# name = "Categories"
# pageRef = "categories"
# weight = 10
[[footer]]
name = "Weather station"
url = "https://wx.oe7drt.com"
weight = 10
[[footer]]
name = "Links"
pageRef = "links"
weight = 20

@ -0,0 +1,6 @@
[[imports]]
path = "github.com/jpanther/congo/v2"
[hugoVersion]
extended = false
min = "0.87.0"

@ -0,0 +1,75 @@
# -- Theme Options --
# These options control how the theme functions and allow you to
# customise the display of your website.
#
# Refer to the theme docs for more details about each of these parameters.
# https://jpanther.github.io/congo/docs/configuration/#theme-parameters
colorScheme = "congo"
defaultAppearance = "dark" # valid options: light or dark
autoSwitchAppearance = true
enableSearch = true
enableCodeCopy = true
# mainSections = ["section1", "section2"]
# robots = ""
[header]
layout = "hybrid" # valid options: basic, hamburger, hybrid, custom
# logo = "img/logo.jpg"
showTitle = true
[footer]
showCopyright = true
showThemeAttribution = true
showAppearanceSwitcher = false
showScrollToTop = true
[homepage]
layout = "profile" # valid options: page, profile, custom
showRecent = false
[article]
showDate = true
showDateUpdated = true
showAuthor = true
showBreadcrumbs = false
showDraftLabel = true
showEdit = false
editURL = "https://github.com/oe7drt/oe7drt-website/"
editAppendPath = true
showHeadingAnchors = true
showPagination = true
invertPagination = false
showReadingTime = true
showTableOfContents = true
showTaxonomies = true
showWordCount = true
showComments = false
# sharingLinks = ["facebook", "twitter", "pinterest", "reddit", "linkedin", "email"]
sharingLinks = ["facebook", "twitter", "pinterest", "reddit", "linkedin", "email"]
[list]
showBreadcrumbs = false
showSummary = true
showTableOfContents = false
showTaxonomies = true
groupByYear = true
paginationWidth = 1
[sitemap]
excludedKinds = ["taxonomy", "term"]
[taxonomy]
showTermCount = true
[fathomAnalytics]
# site = "ABC12345"
# domain = "llama.yoursite.com"
[verification]
# google = ""
# bing = ""
# pinterest = ""
# yandex = ""

@ -0,0 +1,12 @@
---
title: "Welcome to my personal website! :tada:"
description: "This is a demo of the Congo theme for Hugo."
---
{{< lead >}}
amateur radio station OE7DRT, dominic
{{< /lead >}}
welcome all!
good to be herea gain...

@ -0,0 +1,132 @@
+++
title = "Dominic Reich “OE7DRT”"
date = 2019-08-21
lastmod = 2022-11-12
comment = false
showReadingTime = false
showWordCount = false
+++
Hello, my name is **Dominic** and I maintain this website.
I am a licensed ham radio operator since 2019 and my callsign is **OE7DRT**.
My QTH is **[Längenfeld]**, [Tyrol], [Austria]. The locator for that is [JN57lb].
There is currently no antenna set up at my home QTH so I operate portable only
since the end of 2021---I've not been very active recently but I'm sure my new
lightweight equipment can help me out on that matter.
[Längenfeld]: https://en.wikipedia.org/wiki/L%C3%A4ngenfeld
[Tyrol]: https://en.wikipedia.org/wiki/Tyrol
[Austria]: https://en.wikipedia.org/wiki/Austria
[JN57lb]: http://www.levinecentral.com/ham/grid_square.php?Grid=JN57lb
## Some status information
I publish new articles whenever time let me do it. As I am working 10h shifts a
day on a building site I am quite worn at the end of the day and I can't gather
myself up enough to go out in the field when I'm just hungry (and tired)
:tired_face:
I do not have an antenna set up at my home QTH so my experience relies on my
portable operations here in this mountainous region. I enjoy some walks every
now and then but I can't carry my 16 to 18 kilograms portable equipment always
with me---specially not after a work shift.
So that is the reason that my website grows very slowly, I haven't even found
the time to write something nice about my used
[equipment]({{< ref "equipment" >}}), but occassionally I take the time
to update this or that...
## Repeaters near my QTH
Those are the repeaters around my home, which is around 1180m
<abbr title="above sea level">ASL</abbr>.
The images below were made with [QTH Locator Map by **HB9EYZ**][qthloc].
[qthloc]: https://www.hb9eyz.ch/g_locator.php
![OE7XGI Home](oe7xgi_home.png "OE7XGI Ötztal (about 22.8km south-east)")
![OE7XWH Home](oe7xwh_home.png "OE7XWH Grünberg (about 22km north)")
![OE7XOI Home](oe7xoi_home.png "OE7XOI Fiss (about 26.7km west)")
![OE7XTR Home](oe7xtr_home.png "OE7XTR Krahberg (about 27.6km west)")
![OE7XBI Home](oe7xbi_home.png "OE7XBI Rangger Köpfl (about 24.7km north-east)")
![OE7XVR Home](oe7xvr_home.png "OE7XVR Valluga (about 58.5km west)")
![OE7XRT Home](oe7xrt_home.png "OE7XRT Hahnenkamm Reutte (about 51.4km north-west)")
![OE7XZR Home](oe7xzr_home.png "OE7XZR Zugspitze (about 40.5km north)")
![OE7XGR Home](oe7xgr_home.png "OE7XGR Gefrorene Wand (about 53.4km east)")
![OE7XOT Home](oe7xot_home.png "OE7XOT Obtarrenz (about 28km north-east)")
For now, I only own some handheld radios for VHF/UHF so I do not reach
those repeaters from my terrace. I can sometimes open the first two repeaters.
I scan those repeaters when I'm hiking and I can sometimes hear them, but they
are mostly around <kbd>S0</kbd> to <kbd>S1</kbd> combined with a lot of noise
and when I try to reply I won't get picked up so easy (still 5W).
## About this website
My website is a personal storage of a set of information about many different
things---mostly about amateur radio and linux'isch computerstuff. The main goal
of my blog is for my personal usage. That is because some articles may not
explain everything---I hope I can reproduce a working setup (for me) with all
the steps provided in these articles.
I could have saved some links in my bookmarks, right? Well, I have. But I do
that now for a long time and it sometimes happens, that one or another link
becomes unavailable and hosting my own set of information does not result in
these situations in any way. As long as I'm willing to host them.
You can use the information on these pages for yourself. Just keep in mind, that
some of them may not be very objective or even accurate. The opposite is true.
I fill them with my opinions and experiences; some with solutions---some not.
_Also, keep in mind that the information on my websites could go offline at
any time (although it is online since 2019)_.
## Contact
Use `dominic@oe7drt.com` to send me emails.
Feel free to encrypt your message with OpenPGP, use the address mentioned above
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).
[key]: https://keys.openpgp.org/search?q=D49A+3CE2+CCF7+2668+4D98+9A31+BC9D+6AE1+A3BE+169A
[web]: /files/A3BE169A.asc
{{< alert >}}
Please do not send me guest articles. This is not a tech magazine but **my
personal website**.
{{< /alert >}}
## Licenses
The content on my website is licensed under the [CC BY-NC-ND 4.0][cc] ---
unless specified otherwise. This includes images (as well as screenshots).
Code (programs, source code, scripts) on my website is **usually** licensed
under the [MIT license][mit].
For attribution a link back to my website (`oe7drt.com`) should be enough.
[cc]: https://creativecommons.org/licenses/by-nc-nd/4.0/
[mit]: https://en.wikipedia.org/wiki/MIT_License
**Photographs** are more elaborately produces images and if you want to republish
any of them you have to **ask for permission before**. This also includes
**panoramas**.

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -0,0 +1,9 @@
+++
title = "Equipment"
groupByYear = false
showDate = false
showDateUpdated = false
showReadingTime = false
showWordCount = false
+++

@ -0,0 +1,18 @@
+++
title = "Accessories"
summary = """like tuners, bags, masts, coax cables etc..."""
date = 2019-11-01
tags = ["accessory", "portable", "tuner"]
showDate = false
showDateUpdated = false
showReadingTime = false
showBreadcrumbs = true
showPagination = false
showWordCount = false
weight = 40
+++
test

@ -0,0 +1,17 @@
+++
title = "Antennas"
summary = """Antenna"""
date = 2019-11-01
tags = ["antenna", "portable", "chameleon", "sotabeams", "", "",]
showDate = false
showDateUpdated = false
showReadingTime = false
showBreadcrumbs = true
showPagination = false
showWordCount = false
weight = 30
+++
test

@ -0,0 +1,18 @@
+++
title = "Handhelds"
summary = """Handheld radios"""
date = 2019-11-01
tags = ["handheld", "portable", "icom", "yaesu", "radioddity", "wouxon",
"anytone", "hytera"]
showDate = false
showDateUpdated = false
showReadingTime = false
showBreadcrumbs = true
showPagination = false
showWordCount = false
weight = 20
+++
test

@ -0,0 +1,10 @@
---
title: Anytone D878UV+
date: 2022-02-26T10:41:54+01:00
showBreadcrumbs: true
---
The first DMR radio of mine.
http://anytone.net/pro_info93.html

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

@ -0,0 +1,109 @@
---
title: Icom ID-52
summary: >
A really awesome handheld radio---and it does D-STAR as a bonus.
Check it out---it's cool!
date: 2021-12-23T14:20:47+01:00
showBreadcrumbs: true
---
[Product page](https://www.icomjapan.com/lineup/products/ID-52E/)
This is actually my number one handheld radio. I find it very intuitive to use
and also the audio is quite good and the speaker is also one of the louder ones.
I haven't much used this on digital yet but I heard people saying it to be ok
on digital mode (D-STAR).
## Easy to use T-CALL and SQL
### T-CALL
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".
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.
### SQL
In standby screen this button is momentary to open the squelch on the currently
used frequency (simplex). If an offset is set, it will open the squelch on the
transmitting frequency (so you might hear the other OM directly).
Press _SQL_ and move the main dial for one click, the actual squelch setting
appears on the bottom of the screen (default: AUTO).
- Turn the dial further left to open up the squelch permanently---you can
release the _SQL_ button in this case.
- Turn the dial further right and you can choose a squelch level (1 to 9)
## Repeater list
I really like the repeater list, although it is not very accurate when you first
download the list from the internet. But once you filled it with actual repeater
data (including location data) the scan function will definitely profit from
this---it should re-arrange the scan list for you while you're moving.
I'm still working on that one; this takes time (a lot of time) sitting on the
computer and updating a nearly never ending list of false information _HI_.
## Recordings
### Memo recorder
Goto _MENU >> RECORD >> Voice Recorder >> Record_ and hit _PTT_ to start the
recording. Press _PTT_ again to stop. You can fill this with memos or
conversations (just let people know when you record them!). Change the Mic Gain
with the _Quick button_. Find the recorded files on the SD-card in
_ID-52 >> VoiceRec_.
### QSO Recorder
This lets you automatically record QSOs as they come in. Per default settings
the record gets already started when you press _PTT_. In settings you choose to
split files on mic change or not. Splitting files will add metadata to the files
so you can re-view them (like GPS data, frequency, signal strength) on the radio.
You can also download those files to your computer, find them on the SD-card in
_ID-52 >> Voice_.
### QSO Logger
Similar to the one above, this records your QSO into a csv file. You find this
data on the SD-card. Specifically in _ID-52 >> QsoLog_. Open them with your
favourite text editor or any spreadsheet program. I got an example for this one
right here:
![QsoLogger example](QsoLog-example.png)
### Rx Logger
This is quite the same as the Qso Logger, but I think this only logs received
calls from D-STAR. You find those files on the SD-card within the folder
_ID-52 >> RxLog_.
### Voice Tx
Files for this will be in _ID-52 >> VoiceTx_ on the SD-card. Set this up in
_MENU >> VOICE_. That can be used for automated CQ-calls or similar. I haven't
used this yet.
### DV Auto Reply
This should send your recorded clip automatically on incoming calls. Also this
is something that I haven't used yet, but to make the list complete, you know.
I have no idea where this is going to be saved.
## Pictures
The Icom ID-52 lets you receive and transmit pictures either on direct frequencies
or on reflectors (both need to be digital, just to mention that). I also haven't
used this either for now.
{{< alert >}}
Unfinished post
I'd like to add stuff, but time you know... I'd like to add some quotes from
the manual as well.
{{< /alert >}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

@ -0,0 +1,100 @@
---
title: Radioddity GD-77
summary: >
Consider the OpenGD77 firmware and you're all set with a very user friendly
and customizable handheld radio.
date: 2020-10-22T23:19:14+02:00
showBreadcrumbs: true
showReadingTime: false
showWordCount: false
---
[Product page][1] — [OpenGD77 website][2]
[1]: https://www.radioddity.com/products/radioddity-gd-77-dmr-two-way-radio
[2]: https://www.opengd77.com/downloads/
This is probably the first DMR capable radio that is made for amateur radio.
Obviosly not per default, but thanks to OpenGD77 it is now suited for amateur
radio usage.
## udev-Rules for Linux
~~~rb
# USB rules for GD-77
# Place this in /etc/udev/rules.d/ to let all users talk to the radios by USB.
#
SUBSYSTEM=="usb", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="0666"
# HIDAPI/libusb
SUBSYSTEM=="usb", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="0094", MODE="0666"
# HIDAPI/hidraw
KERNEL=="hidraw*", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="0666"
KERNEL=="hidraw*", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="0094", MODE="0666"
# HIDAPI/hiddev
## We need to unbind this device, otherwise LibUsb will fail to SetConfiguration() and ClaimInterface()
# For Bootloader (usbhid)
KERNEL=="hiddev*", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="0666", RUN+="/bin/bash -c 'ID=$(IFS=/; read -a array <<< %p; echo ${array[-3]}); echo $ID > /sys/bus/usb/drivers/usbhid/unbind'"
# 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
$ 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
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 |
| :--- | :--- |
| ![OE7DRT Boot-up picture white](rendeer512_white.png) | ![OE7DRT Boot-up picture black (inverted)](rendeer512_black.png) |
## Importing DMR-IDs
Open _Extras >> Download callsign database_ and fetch the data that you want.
![Import menu](import-dmr-ids-menu.jpg)
Set the region to the desired <abbr title="Mobile Country Code">MCC</abbr> that
you want to import. You can also use the inactivity filter that fetches only
recently active DMR-IDs. Or you can import DMR-IDs from a file.
![Import dialog](import-dmr-ids.jpg)
I usually import them from a CSV-file. The file that I use contains all the
austrian callsigns plus a few other callsigns, that I regularly see. So I need
to import about 2000 callsigns.
If you don't have a proper file to start with use this one here. It contains
these regions: `232, 262, 263, 264, 222, 228`.
[Download](/files/dmrids_2021-12-12.csv.xz "26477 callsigns") (\~170KB)
Or: download your own set of DMR-IDs with the regions you want. You can also
download only some federal states (like `2327,2328`) if you don't want all
entries from `232`. [Read along here][3] for some instructions about this.
[3]: {{< ref 2020-11-16-create-your-own-dmrid-database-file >}}
## Band scope (Spectrum sweep scan)
I'm not sure when this feature was implemented, but OpenGD77 now supports
an easy to use band scope on the GD-77.
Press and hold the hash key <kbd>#</kbd> when in VFO mode to enter this feature.

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@ -0,0 +1,89 @@
---
title: Yaesu FT-3D
date: 2020-05-24T20:48:51+02:00
showBreadcrumbs: true
---
C4FM as one of the easiest digital operating mode to set up. Enter your
callsign and you're good to go.
https://www.yaesu.com/indexVS.cfm?cmd=DisplayProducts&ProdCatID=111&encProdID=84807B1262BFED6AC816544D94D310E3&DivisionID=65&isArchived=0
All in all, the FT-3D is a nice and handy radio.
## Keys and buttons
I like the arrangement of the `PTT` and the knob on the top is very usable.
## Easy to use T-CALL
One button below the `PTT` is the `MONI/T-CALL` button located, which you can
either configure as a `MONITOR` button (opens both receiver at once) or as
`T-CALL` button, which sends out a 1750Hz tone immediately.
### Opening SQL when you use T-CALL
When you configured your `MONI/T-CALL` button for `T-CALL`, you can open the
squelch by pressing the `SQL` button (between `MONI/T-CALL` and `POWER` button)
and then use the volume knob to reduce or increase the squelch level.
## Full APRS
But it cannot use [Voice Alert][va]. Nonetheless a device which can send and
receive APRS packets is not seen very often on portable devices. Not even the
new Icom ID-52 has APRS support.
[va]: http://www.aprs.org/VoiceAlert3.html
## Color screen
The screen is okay and you see instantly which band is active at the moment.
Using the touch screen is very intuitive, although I personally prefer devices
with no touch screen at all. I never had any problems with the coloring or
the brightness at all, but YMMV.
## Transmit power
The FT-3D supports 4 power levels: LOW1 (0.3W), LOW2 (1W), LOW3 (2.5W) and
HIGH (5W).
## Band scope
This is probably the first portable radio that I bought which had a band scope.
The scope itself is quite usable, it let's you split the screen width into
19, 39 or 79 bars of details. I usually switch between 39 and 79 bars to get
the best results.
## Dual receive (D.RCV)
## Preset receiver memory channels (P.RCVR)
Change with `BAND` button between Weather broadcast (WX CH), international VHF
marine radio (INTVHF) or international shortwave broadcast (SW) channels.
For shortwave listening (only AM, no SSB), a longer antenna may not be a bad
idea.
## AF-DUAL receive function (A.DUAL)
This enables radio broadcast reception on the A band receiver. The radio
reception is interrupted, when a signals is receiver on either A or B band
receivers.
## Built-in GPS receiver
GPS is a handy function, but it drains the battery. You may also use pre-defined
locations for APRS and save some battery life if you are stationary.
## Cross-band memory channels
The FT-3D lets you save memories that use 2m for receive but 70cm for transmit,
for example. The repeater _OE7XZR_ (Zugspitze, Tyrol) is one of them. It sends
on 145.57500 MHz but receives on 432.57500 MHz.
## Recordings
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.

@ -0,0 +1,17 @@
+++
title = "Software"
summary = """Software I use or tested"""
date = 2019-11-01
tags = ["software", "cqrlog", "n1mm", "log4om", "qlog", "klog"]
showDate = false
showDateUpdated = false
showReadingTime = false
showBreadcrumbs = true
showPagination = false
showWordCount = false
weight = 50
+++
test

@ -0,0 +1,16 @@
+++
title = "Transceivers"
summary = """trans ceivers"""
date = 2022-11-16T22:19:11+01:00
tags = ["transceiver", "portable", "icom", "yaesu", "lab599"]
showDate = false
showDateUpdated = false
showReadingTime = false
showBreadcrumbs = true
showPagination = false
showWordCount = false
weight = 10
+++

@ -0,0 +1,28 @@
---
title: Icom IC-7300
date: 2022-02-20T14:20:47+01:00
showBreadcrumbs: true
---
The first shortwave transceiver that I bought. I got told this has one of the best
receivers and filter techniques on the beginner segment. Unfortunately this
radio is a bit chunky and heavy to transport in a rucksack so I haven't really
used it that much so far---I do not have a station set up at my QTH yet.
## Built-in soundcard and CAT control
The radio can be connected to a computer with one single USB cable which
provides a virtual soundcard aswell as a CAT control interface. This makes
operating digital modes dead easy.
## Big touch screen
Maybe the first thing that you might see on that radio is the big screen. It is
clear and very easy to read; you can interact with your finger aswell.
## Twin filters
To separate a signal is also a very easy thing to do. Use the twin filters to
narrow down the used bandwith. Long press the filter button to clear and reset
those filters.

@ -0,0 +1,66 @@
---
title: Yaesu FT-891
date: 2022-02-20T14:20:47+01:00
lastmod: 2022-11-12T19:51:31+01:00
showBreadcrumbs: true
# showReadingTime: false
# showWordCount: false
---
I got this because the IC-7300 was too chunky to be effectively transported
within a rucksack. Also I feared scratches in its big display or even a broken
display: so here is the Yaesu FT-891.
I bought the 891 back in 2020, so this is not usable on 60 meters (like the
IC-7300).
## Excellent receiver
I think this radio is quite similar to the IC-7300 in its receiving quality.
Lots of options in the function menues help you to concentrate on the actual
voice you receive.
## Good filter capabilities
The filters are good enough to filter for a specific signal, mainly using
_WIDTH_ and _SHIFT_ and sometimes _CONTOUR_ filters is mostly effective
enough. The _<abbr title="Digital Noise Reduction">DNR</abbr>_ is also quite
nice and works well, although I don't like the resulting voice that much. Way
better works the autonotch filter (_<abbr title="Digital Noise Filter">DNF</abbr>_),
which is an awesome feature to have.
## Record and transmit CQ calls
The FT-891 lets you record up to 5(??) or 3? different clips that you can later
transmit by a button press. That might come in handy when you are contesting---
can't refer to this much because I'm not contesting nor do I use this function
so far.
## Good size
I like it's size when it's beeing still a 100 W transceiver. Nonetheless it
drains the battery with 1 A when listening.
## Digital modes
I use the radio with a SignalinkUSB interface and I have to extend the bandwith
manually with the _WIDTH_ setting from the function menue to have this set
correctly. The setting from the main settings is **not applied** on digital
modes. _Apparently Yaesu doesn't care about that bug._
## Tactical carrying system: 891escort ™
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---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 some more grams when hiking through the mountains and I can remove
the detachable head of the unit to change different microphones/headsets. When
using the carrying system I would need to remove the right frame before I could
detach the units head.
Some people recommend using a short LAN cable to get the socket outside, but I
haven't found a good one yet (and a short one).

@ -0,0 +1,16 @@
+++
title = "Links"
summary = """Listing links of (hopefully) useful websites"""
date = "2022-11-20T15:56:36+01:00"
#lastmod = ""
#categories = ["amateur-radio"]
#tags = [""]
showReadingTime = false
showWordCount = false
+++
cool links here
* https://w0chp.net/w0chp-pistar-dash/
* https://qrper.com/

@ -0,0 +1,120 @@
---
title: How to get an amateur radio license in Austria
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
#categories: [index]
tags: [life]
---
I'm not the casual ham radio operator that always wanted to operate his own
ham radio station. I tried CB once but had to travel quite a bit to reach other
stations (trucks on the highway for example). I've played with SDR before and
tried a few things with GNUradio and gqrx but I never got deeper into this kind
of things.
{{< alert circle-info >}}
Just to be clear on this: This is not a tutorial, this is a short story from
my life that explains how I came to my amateur radio license. This article was
already published in german on an older website.
{{< /alert >}}
In 2019 I decided to go on a [preparatory course](https://oe7.oevsv.at/veranstaltungen/veranstaltungen-00001/Amateurfunkkurs-in-Innsbruck/)
at the local ham radio club.
A confirmation email was sent to me but the docs for the course had to be changed
because changes have been made to austrian laws regarding ham radio and
telecommunication in general. So scripts were not up to date at that moment.
## General information
The course was held in a room in a federal higher technical institute in
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
**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
**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
**4. block---refreshing**
- **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** |
In the end I paid **203.60€** for gasoline, **27€** for lunch on Saturdays and
**110.60€** for parking my car.
At this time I drove a BMW M140i which needed around 9 liters gas per 100
kilometers---you may get away with less on that part.
## The exam
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
if person 1 answered the first three questions person 2 has to answer three
other questions in the same topic.
We had to leave the room for a while when our examiners discussed our results.
When we entered the room again we were told if we get a license or not :wink:
All attendees have passed the exam and got their license. We were 15 people.
## Future plans
Most of us have already requested their callsign. A workshop about different
transeivers and antennas is planned for November 23 in Innsbruck from 09:00 to
18:00. At 19:00 a graduation party is planned at the restaurant Deck 47 in
Innsbruck.
I joined the local ham radio club **ÖVSV** and I am a member of **ADL714**.
My shack is growing slowly. I own a few devices that allow me to setup a small
station on short wave and on the digital sector within the DMR Austria network
(IPSC2) and YSF (C4FM).
73 de Dominic, OE7DRT

@ -0,0 +1,201 @@
---
title: Optimizing PNG images
summary: >
A quick notice about three very handy tools to optimize PNG images on
the command line. They work on linux and macOS. Use jpegtran for JPG
images.
categories: [computerstuff]
tags: [til-zsh,til-fish,reminders]
date: 2020-01-20T20:34:20+01:00
---
## Optimizing a bunch of images in a directory
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
$ 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
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
$ opti image.png
~~~
That's all the magic it needs.
## Use jpegtran for JPG images
~~~console
$ jpegtran -copy none -optimize -progressive -outfile output.jpg input.jpg
~~~
## Install these tools on your system
On debian or ubuntu
~~~console
$ sudo apt-get install optipng pngcrush advancecomp
~~~
On Arch based distros using pacman
~~~console
$ sudo pacman -S optipng pngcrush advancecomp
~~~
On macOS
~~~console
$ sudo port install optipng pngcrush advancecomp
~~~
or if you use homebrew
~~~console
$ brew install optipng pngcrush advancecomp
~~~
You may know other package managers commands, but I only use these.
## An example
### By filesize
The files taken from the snapshot tool on my macbook.
~~~plain
33K 00_locales.png
61K 01_control-software.png
157K 02_mmdvmhost.png
184K 03_general.png
187K 04_dmrconfig.png
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
17K 00_locales.png
33K 01_control-software.png
81K 02_mmdvmhost.png
98K 03_general.png
97K 04_dmrconfig.png
32K 05_exp_mmdvmhost-dmrnetwork.png
127K 06_exp_dmrgw-dmrnetwork1.png
144K 07_exp_dmrgw-dmrnetwork2.png
~~~
### By view
~~~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`")
Do you see much difference?
## Using this with the **fish** shell
I added this to my fishs configuration (when I used fish for a while).
~~~fish
# file: "~/.config/fish/functions/opti.fish"
function opti --description "Optimizes .png files"
# Author: Dominic, OE7DRT <dominic@oe7drt.com>
# 2021-04-17
set -e missing
for program in optipng advpng pngcrush
if \! command -v $program > /dev/null
set -a missing $program
continue
end
end
if test -n "$missing"
echo "Could not find executables: $missing"
return 1
end
if test -z $argv[1]
echo "usage: opti <files...>"
return 1
end
set count (count $argv)
for i in (seq 1 $count)
if test ! -f $argv[$i]
echo "Could not read file $argv[$i]..."
continue
end
optipng -nb -nc "$argv[$i]";
advpng -z4 "$argv[$i]";
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
# file: "~/.config/fish/functions/jopti.fish"
function jopti --description "Optimizes .jpg files"
# Author: Dominic, OE7DRT <dominic@oe7drt.com>
# 2021-08-07
set -e missing
for program in jpegtran
if \! command -v $program > /dev/null
set -a missing $program
continue
end
end
if test -n "$missing"
echo "Could not find executables: $missing"
return 1
end
if test -z $argv[1]
echo "usage: jopti <files...>"
return 1
end
set count (count $argv)
for i in (seq 1 $count)
if test ! -f $argv[$i]
echo "Could not read file $argv[$i]..."
continue
end
jpegtran -copy none -optimize -progressive -outfile "$argv[$i]" "$argv[$i]"
end
end
~~~

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

@ -0,0 +1,454 @@
+++
title = "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"]
date = 2020-01-23T15:03:35+01:00
lastmod = 2022-08-19T18:49:56+02:00
+++
I've been playing with Pi-Star now for a while and I finally got my
IPSC2-Brandmeister dual-setup working.
I'm using the beta version v4 because I read somewhere, that DUAL-HATS won't
work properly with the older v3 firmware---but I never really tested the v3.
Instead I went for v4 straight away as it seemed pretty stable anyway.
Now, I began with a very simple IPSC2-only setup in the first place. I then made
a backup and changed all settings to be used for Brandmeister only. Another backup
of the Brandmeister setup and I moved on to using DMRGateway.
It was a bit tricky at the beginning, because I was not used to the configuration
of such devices in any kind. After a few hours of research and testing I finally
got the DMR-GW setup ready.
## The first thing I did on Pi-Star
Setup the keyboard and language on the console. I mostly type in german and I
know most of the characters on an _en_US_ or _en_UK_ keyboard, but I still prefer
a german layout :wink:
Before we start, we have to make the filesystem writable. Do this with the
command alias `rpi-rw` either in a console or in the SSH-Access tab on the
dashboard (<kbd>Configuration</kbd><kbd>Expert</kbd><kbd>SSH Access</kbd>). The login details for SSH are
the same as on the dashboard.
Now you got the filesystem writable, so start the keyboard configuration:
~~~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
$ sudo dpkg-reconfigure locales
~~~
Choose the locales that you need or want. My setup looks like this:
{{< figure caption="If you don't know what to choose, go with your language and the UTF-8 version." src="00_locales.png" alt="locales setup" >}}
I also create my ssh-keys for passwordless login as well as some comfortable
aliases. I usually use the ZSH shell, but on Pi-Star I just leave it as it was.
I add my aliases to `.bash_aliases`---this is the file that gets sourced via
`.bashrc` in the default pi-star setup.
Quick and dirty---my current `.bash_aliases` on my Pi-Stars looks like this:
~~~bash
# File: "~/.bash_aliases"
DATE=$(date +%Y-%m-%d)
PI=/var/log/pi-star/
DMRGW=${PI}DMRGateway-${DATE}.log
MMDVM=${PI}MMDVM-${DATE}.log
DAPNET=${PI}DAPNETGateway-${DATE}.log
[ -x /usr/bin/pydf ] && alias df='/usr/bin/pydf' || alias df='df -h'
alias digg='dig +noall +answer'
alias dt='dmesg | tail'
alias mm="multitail ${DMRGW} ${MMDVM}"
alias mmdmr="multitail ${DMRGW}"
alias mmdv="multitail ${MMDVM}"
alias mmdap="multitail ${DAPNET}"
# Screen and Tmux alike
alias sc='screen -DR Screen_A'
alias tm='tmux -u new-session -A -s Tmux_A'
# ls
alias l='ls -1A'
alias la='ls -lah'
alias lc='lt -c'
alias lk='ll -Sr'
alias ll='ls -lh'
alias lad='ls -lah|more'
alias lld='ls -lh|more'
alias lm='la | "$PAGER"'
alias ln='nocorrect ln -i'
alias lni='nocorrect ln -i'
alias locate='noglob locate'
alias lr='ll -R'
alias ls='ls --group-directories-first --color=auto'
alias lt='ll -tr'
alias lu='lt -u'
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
$ 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`" >}}
#### If you intent to install and use vnstat, you need to set it up
The installation of vnstat is useful, if you let your pi-star run 24/7 as the
database gets cleared on every reboot!
~~~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
# 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
# file: "/etc/fstab"
#File System Mountpoint Type Options Dump Pass
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults,ro 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime,ro 0 1
tmpfs /run tmpfs nodev,noatime,nosuid,mode=1777,size=32m 0 0
tmpfs /run/lock tmpfs nodev,noatime,nosuid,mode=1777,size=5m 0 0
tmpfs /sys/fs/cgroup tmpfs nodev,noatime,nosuid,mode=1755,size=32m 0 0
tmpfs /tmp tmpfs nodev,noatime,nosuid,mode=1777,size=64m 0 0
tmpfs /var/log tmpfs nodev,noatime,nosuid,mode=0755,size=64m 0 0
tmpfs /var/lib/sudo tmpfs nodev,noatime,nosuid,mode=1777,size=16k 0 0
tmpfs /var/lib/dhcpcd5 tmpfs nodev,noatime,nosuid,mode=1777,size=32k 0 0
tmpfs /var/lib/vnstat tmpfs nodev,noatime,nosuid,mode=1777,size=4m 0 0
tmpfs /var/lib/logrotate tmpfs nodev,noatime,nosuid,mode=0755,size=16k 0 0
tmpfs /var/lib/nginx/body tmpfs nodev,noatime,nosuid,mode=1700,size=1m 0 0
tmpfs /var/lib/php/sessions tmpfs nodev,noatime,nosuid,mode=0777,size=64k 0 0
tmpfs /var/lib/samba/private tmpfs nodev,noatime,nosuid,mode=0755,size=4m 0 0
tmpfs /var/cache/samba tmpfs nodev,noatime,nosuid,mode=0755,size=1m 0 0
tmpfs /var/spool/exim4/db tmpfs nodev,noatime,nosuid,mode=0750,size=64k 0 0
tmpfs /var/spool/exim4/input tmpfs nodev,noatime,nosuid,mode=0750,size=64k 0 0
tmpfs /var/spool/exim4/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
$ 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
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
ramdisk, we will save the sdcards lifetime, but also we loose the statistics
when we reboot the raspberry pi.
{{< alert triangle-exclamation >}}
If you want to save them forever, you won't have
to create a ramdisk like above, but **you also have to make sure that
PiStar does not mount the volumes read-only!**
{{< /alert >}}
## Make the filesystem read-only again
Once you finished your setup, make the filesystem read-only again.
~~~console
$ rpi-ro
~~~
## Start setting up your Pi-Star MMDVM
{{< alert lightbulb >}}
The MMDVM services restart every time you hit
the **Apply Changes** button. So when hitting the button wait a few seconds
-- this takes some time to complete ;-)
{{< /alert >}}
### Talkgroup setup
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
All other talkgroups are routed to the Brandmeister network. Private calls are
also routed to Brandmeister.
### Simplex or Duplex?
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
{{< figure src="02_mmdvmhost.png" alt="MMDVMHost configuration" caption="Choose the modes that you want to use. I only use DMR and POCSAG for now." >}}
### General information about the station
{{< figure src="03_general.png" alt="general information" caption="Put in your own callsign and your DMR-ID---~~register your callsign~~ if you don't have one yet. Select appropriate frequencies and make sure they are at least a few MHz apart from each other. I used the common shift that we use in Austria on 70cm (-7,6 MHz)." >}}
{{< alert triangle-exclamation >}}
**Update:** The URL above is outdated. `ham-digital.org` was the european
version of `radioid.net`---those two were merged together and you can apply
for your personal DMR-ID
[over here at radioid.net](https://www.radioid.net/account/register#!).
{{< /alert >}}
### DMR configuration
{{< alert circle-info >}}
Now, setup IPSC2 only or Brandmeister only if you are unsure about the
DMRGateway setup. Make yourself comfortable with both of the systems but only
one system at a time and move over to DMRGateway when you feel confident enough.
The rewrite rules can be sometimes a bit tricky to set up.
{{< /alert >}}
{{< figure src="04_dmrconfig.png" alt="DMR configuration" caption="" >}}
Choose the Brandmeister master server you want to connect to. Also set a
password in [Brandmeisters SelfCare](https://brandmeister.network/?page=selfcare)
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
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
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
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
to date (I haven't tried this yet, but you can do that on your own very easy).
{{< alert circle-info >}}
**Update**: Actually, you can link **9 talkgroups on every slot**.
{{< /alert >}}
### Move over to the expert configuration tab
#### Quick edit
Whenever you feel comfortable with DMRGateway, head over to the expert settings
page and select MMDVMHost. I've adjusted the Jitter settings "a bit", although
this should run smooth with a setting of `1000` too---I'm still a bit of
experimenting with this. I read a lot of times that `1000` should be fine with
slower networks---but you should definitely experiment yourself a bit with this
setting.
{{< alert circle-info >}}
**Update**: As of today, I'd probably set _Jitter_ to something around 0-300.
{{< /alert >}}
{{< figure src="05_exp_mmdvmhost-dmrnetwork.png" alt="DMR jitter configuration" caption="" >}}
Now let's have a look at the DMR Gateway configuration. Navigate to the DMR GW
expert settings. Choose <kbd>DMR GW</kbd> of the upper line (Quick Edit).
{{< figure src="06_exp_dmrgw-dmrnetwork1.png" alt="DMR Network 1 configuration" caption="" >}}
{{< figure src="07_exp_dmrgw-dmrnetwork2.png" alt="DMR Network 2 configuration" caption="" >}}
Don't forget to save the settings.
#### Full edit
When you have saved that, go to the expert settings again and choose again
**DMR GW**---**but this time, choose the one from the lower line (Full Edit)**.
This configuration file is split into paragraphs. Look out for the
`[DMR Network 1]` block.
~~~ini
[DMR Network 1]
Enabled=1
Address=178.238.234.72
Port=62031
TGRewrite0=2,8,2,8,1
PCRewrite0=2,84000,2,84000,1001
TypeRewrite0=2,9990,2,9990
SrcRewrite0=2,84000,2,8,1001
PassAllPC0=1
PassAllTG0=1
PassAllPC1=2
PassAllTG1=2
Password="***"
Debug=0
Id=232718001
Name=BM_Germany_2622
~~~
Our next block is called `[DMR Network 2]`.
~~~ini
[DMR Network 2]
Enabled=1
Address=89.185.97.34
Port=55555
TGRewrite0=1,1,1,1,7
TGRewrite1=1,10,1,10,80
TGRewrite2=1,100,1,100,100
TGRewrite3=2,232,2,232,1
TGRewrite4=2,8181,2,8181,9
TGRewrite5=2,8191,2,8191,9
TGRewrite6=2,9,2,9,1
PCRewrite0=1,9055,1,9055,6
PCRewrite1=2,9055,2,9055,6
PCRewrite2=2,4000,2,4000,1001
Password="PASSWORD"
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.
### POCSAG configuration
{{< alert circle-info >}}
The following frequency is used in **Austria**. Please refer to your local
amateur radio club for information about the used frequencies in your country.
You may use 439.987.500 in Germany.
[Look here](https://hampager.de/dokuwiki/doku.php?id=dapnetfrq) for more frequencies.
{{< /alert >}}
{{< figure src="10_pocsag.png" alt="POCSAG configuration" caption="" >}}
Read more on <https://hampager.de> and on <https://support.hampager.de>. You
need to create an account to bind your callsign to a
<abbr title="Radio Identificaton Code">RIC</abbr>. You also need a second account
for your transmitter---that is when you get your AuthKey.
## That's it---images and videos
I suppose this gets easier from time to time---depending on how often I have to
install this stuff on a Pi :grinning:
### My Raspberry Pi 3 B
{{< figure src="08_raspberrypi.jpg" alt="my raspberry pi 3" caption="" >}}
### And this is the admin page of the dashboard
If you want to use the Brandmeister Manager you need to set the api key. Go to
expert settings and choose <kbd>BM API</kbd> in the lower line. It is somewhat
in the middle of the page. To get an api key visit the
[Brandmeister API Keys page](https://brandmeister.network/?page=profile-api).
{{< figure src="09_dashboard-admin.png" alt="Dashboard - Admin view" caption="" >}}
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]: http://94.199.173.125/status/list.htm
[lh]: https://brandmeister.network/?page=lh&Master=2321
### PiStar Remote
Restart the PiStar services with RF power from your HT.
{{< youtube id="lTh1p-eVGxQ" >}}
Or reboot the whole Raspberry Pi.
{{< youtube id="hFyEL6kfRco" >}}
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
[enable]
# Is the Pi-Star Remote Enabled? (true|false)
enabled=true
...
[dmr]
# TG commands
#svckill=8999999
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
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.
I think this page is a good thing to look back to start a fresh configuration --
even if I have made different configuration backups from within PiStar.
Addidionally I made one-to-one copies of the used sdcards---just in case ;-)
Initially I wrote this for myself, but I think this might be helpful for others
too so enjoy the content and feel free to [mail me](/about/#contact) if you
find errors or have to add some notes on that topic.

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

@ -0,0 +1,113 @@
---
title: APRS With The Hytera PD785G
summary: >
This article is based on the Firmware v9. If you still have v8 do not upgrade---
the v8 is still the better choice! If you need a tutorial for v8 have a look
at [this website](https://dmraustria.at/gps-einstellungen-fuer-aprs-bei-hytera-geraeten/)---
it is in german though.
categories: [amateur-radio]
tags: [dmr,aprs,hytera]
date: 2020-01-27T17:34:01+01:00
---
I've read many articles about the Hytera PD785G, APRS, GPS, IPSC2, DMR+,
Brandmeister and what not...
These are the settings that I currently run with.
## GPS settings
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*.
{{< 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*
sends your own location info out with your voice. This is needed for
*Call Location*.
## Network settings
Set the Control Center ID to `9057` if you want to appear as portable device.
{{< figure src="hyt_03_network.png" alt="network settings" caption="" >}}
You can also use any of those number-symbol combinations.
| RRS & Radio IDs | description |
| :--- | :--- |
| 9050 | without SSID |
| 9055 | house / QTH |
| 9056 | camping / fieldday |
| 9057 | handheld transceiver |
| 9058 | mobile / boat |
| 9059 | mobile / car |
## Channel settings
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*
is what makes your HT send your position out when you change channels.
{{< figure src="hyt_04_channel.png" alt="channel settings" caption="" >}}
You can also set `Slot Operation` to `Pseudo
Trunk` -- that would let you hear statically linked talkgroups of
another timeslot too.
## Buttons
Did you set `Button` as a GPS Trigger? Then you want
to configure a button here.
{{< figure src="hyt_05_buttons.png" alt="buttons settings" caption="" >}}
## Basic settings
For what I have tested this works quite well. Although [Brandmeister
recommends][bm] to set the `Data Bearer Service` to
`Compressed IP` if you want to use text messaging.
[bm]: https://wiki.brandmeister.network/index.php/Hytera/Radios#Text_Messaging
{{< figure src="hyt_06_basic.png" alt="basic settings" caption="" >}}
## Examples
In-call location information does not contain an SSID. That means, that your
location is transferred as your plain CALLSIGN, without the `-7` for
`9057`.
{{< 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:
{{< figure src="hyt_09_aprs_ssid_working.png" alt="location with ssid" caption="" >}}
and without SSID:
{{< figure src="hyt_10_aprs_ssid_notworking.png" alt="location without ssid" caption="" >}}
There is usually only a red dot marker and not a house. The house replaced
the red dot when I tried new APRS settings with my Openspot2 -- which sended
out a beacon for my callsign only. This might not be compatible to each other --
time will tell...
{{< figure src="hyt_11_aprs_ssid_hotspot.png" alt="hotspot beacon" caption="" >}}
In case you don't know that site yet, there is also ~~<https://aprsdirect.com>~~ as
an alternative to <https://aprs.fi> -- I love the realtime raw package feed.
I use them both here and there.
{{< figure src="hyt_12_aprsdirect.png" alt="aprsdirect.com station info" caption="" >}}

@ -0,0 +1,189 @@
---
title: Get DMRIDs Via Command Line
summary: This is a quick workaround to retrieve a DMRID on console or terminal.
categories: [amateur-radio]
tags: [dmr,pistar,script]
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
$ 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.
~~~bash
# file: "~/bin/call"
#!/bin/bash
# Get DMR-IDs from CALLSIGN or CALLSIGN from DMR-ID or vice versa
# Author: Dominic Reich, OE7DRT
# File: ~/bin/call
#
# Last modified: 2020-04-12 13:26:36+0200
#
# Inspired from this beautiful article:
# https://pretzelhands.com/posts/command-line-flags
#
# Good DX and vy 73 de OE7DRT
command -v w3m > /dev/null 2>&1 || { echo >&2 "w3m not found"; exit 1; }
print_usage () {
echo >&2 "usage: `basename $0` [dmr_id | callsign]"
exit 1
}
if [ $# -ne 1 ]
then
print_usage
fi
getID () {
CALL=`echo $1 | tr a-z A-Z`
FILE=/tmp/$CALL
w3m "https://ham-digital.org/dmr-userreg.php?callsign=$CALL" > $FILE
c=`grep $CALL $FILE | wc -l | xargs`
while [ $c -gt 0 ]
do
OUT=`grep $CALL $FILE | head -n $c | tail -n 1 | awk '{ print $4,$5,$2,$3 }'`
echo "$OUT"
((c--))
done
rm $FILE
}
getCALLSIGN () {
ID=$1
FILE=/tmp/$ID
w3m "https://ham-digital.org/dmr-userreg.php?usrid=$ID" > $FILE
CALL=`grep $ID $FILE | awk '{ print $4 }'`
rm $FILE
if [ -z $CALL ]
then
exit 1
fi
getID $CALL
}
checkID () {
if [[ ! $1 =~ ^[0-9]{7}$ ]]
then
echo >&2 "no valid dmr_id supplied"
exit 1
fi
}
if [ "$1" -eq "$1" ] 2>/dev/null
then
ID="$1"
checkID $ID
else
CALL="$1"
fi
if [ ! -z $ID ]
then
getCALLSIGN $ID
exit 0
elif [ ! -z $CALL ]
then
getID $CALL
exit 0
else
print_usage
fi
~~~
{{< alert note >}}
If someone has two DMRIDS, the most recent registered callsign will appear on
the top. Feel free to modify the script to your needs if you also want to display
the date of registration. Or modify the url if you want to only display last
heard ids.
{{< /alert >}}
## Example usage
Simply get one DMRID (or two, depends on the callsign though):
~~~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
$ 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
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.*
## Partially known callsign
***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
$ 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
$ 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.
Or even with more letters, but this will take a while, since this will start
**676 (26x26) website lookups to ham-digital.org**---maybe they'll block
your IP address quickly, if you hammer their server with so many request in a
short period of time.
~~~console
$ for i in oe7d{a..z}{a..z}; do call $i; done
2327XXX OE7D?? Daniel
2327XXX OE7D?? Hermann
2327XXX OE7D?? Josef
2327XXX OE7D?? Dragan
2327XXX OE7D?? Peter
2327180 OE7D?? Dominic
2327XXX OE7D?? Wechselberger
2327XXX OE7D?? Gernot
~~~
And this ran for 3 minutes and 17 seconds on my computer.
{{< alert note >}}
The output above was made with an older version of the script. The output now
contains also the registration date as seen in previous examples.
{{< /alert >}}

@ -0,0 +1,80 @@
---
title: My Nextion 2.4\" 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]
date: 2020-02-16T12:43:34+01:00
---
## The display
When I got the display there was already a Screen Layout installed---it was
probably the Layout of [PD0DIB].
[PD0DIB]: https://github.com/PD0DIB/Nextion_HAM-radio-screens/tree/master/MODEL%208/GLOBE
We're talking about a `NX3224T024_011`.
{{< figure src="nxt_01_display.jpg" alt="display" caption="" >}}
My dashboard now looks like this:
{{< figure src="nxt_01_display-lh.jpg" alt="display" caption="" >}}
The number on the bottom right corner displays the actual status code sent by
the MMDVMHost binary. A list of these codes can be seen [here].
[here]: https://github.com/WA6HXG/MMDVM-Nextion-Screen-Layouts/blob/master/Info%20Sheets/Status%20Codes%20and%20Fields.txt
Also have a look at the debug output within the Nextion Editor. You get to the
second screen (SYSTEM screen) by touching/pressing the header of the dashboard.
Within the system screen you can clear the dashboard.
{{< figure src="nxt_02_screens.png" alt="overview" caption="" >}}
## The editor
The most HMI files I found online were made with the older version of Nextion
Editor---v53. It is the Nextion Editor LTS version. It is available on
[nextion.tech](https://nextion.tech/nextion-editor/).
For the editor to work you need to install a Microsoft Visual C++
Redistributable Package---Nextion Editor is a 32bit application, so choose
the 32bit version (`vc_redist.x86.exe`).
## TFT files and HMI files
I'm no professional and this is the way I look at these things. For me HMI files
are source files. You can open them with Nextion Editor and edit them just right
away. Whereas TFT files cannot be "opened" with the Nextion Editor, they have to
be opened **with no open project** by clicking the
`Debug` button (next to the Compile button). They get loaded into the
simulator and you can preview the file.
**TFT files are the compiled output of HMI files.**
## Get the files
I've setup a repository on Github for my screen---for now there is one layout
online. It only displays a last heard table with callsign and talkgroup for DMR.
I'd like to have this for a bigger screen but I'm not sure when I'll find the
time for it.
- <https://github.com/oe7drt/MMDVM-Nextion-Screen-Layouts>
What the actual dashboard looks like.
{{< youtube id="uqIErzgr3zQ" >}}
## Resources
I've found several resources that I want to list in no particular order here.
- <https://www.hamdigitaal.nl/download/algemene-informatie/Setup-a-MMDVM-Hotspot-20161212.pdf>
- <https://github.com/WA6HXG/MMDVM-Nextion-Screen-Layouts>
- <https://github.com/PD0DIB/Nextion_HAM-radio-screens>

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

@ -0,0 +1,30 @@
---
title: 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,reminders]
date: 2020-02-22T09:33:44+01:00
---
##### Installing the needed tools
~~~console
$ brew cask install osxfuse
$ brew install ext4fuse
~~~
##### Mount the disk on your filesystem
~~~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
$ sudo dseditgroup -o edit -a $username -t user $groupname
~~~

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

Loading…
Cancel
Save