@ -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
|
@ -0,0 +1,3 @@
|
|||||||
|
.hugo_build.lock
|
||||||
|
resources
|
||||||
|
public
|
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
title: "{{ replace .Name "-" " " | title }}"
|
||||||
|
date: {{ .Date }}
|
||||||
|
draft: true
|
||||||
|
---
|
||||||
|
|
After Width: | Height: | Size: 24 KiB |
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,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...
|
After Width: | Height: | Size: 246 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 379 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 165 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 296 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 433 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 118 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 155 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 119 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 140 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 278 KiB |
After Width: | Height: | Size: 2.7 KiB |
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
|
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 >}}
|
After Width: | Height: | Size: 8.5 KiB |
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.
|
After Width: | Height: | Size: 15 KiB |
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
|
||||||
|
~~~
|
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 81 KiB |
After Width: | Height: | Size: 98 KiB |
After Width: | Height: | Size: 97 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 131 KiB |
After Width: | Height: | Size: 494 KiB |
After Width: | Height: | Size: 36 KiB |
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.
|
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 9.5 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 138 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 35 KiB |
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>
|
After Width: | Height: | Size: 66 KiB |
After Width: | Height: | Size: 82 KiB |
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
|
||||||
|
~~~
|