diff --git a/acct-group/dxlAPRS/Manifest b/acct-group/dxlAPRS/Manifest
new file mode 100644
index 0000000..f806008
--- /dev/null
+++ b/acct-group/dxlAPRS/Manifest
@@ -0,0 +1,2 @@
+EBUILD dxlAPRS-0.ebuild 200 BLAKE2B a8a095b9b07e749a89ace55f95c85e1defb7fec246fc10383185ae4d48132c8556b2a559e85d1b9ed859df987258089ca35aab3ee5e7b2c871edf0d79a45e7f1 SHA512 8d2e14a3674920b8b0b590880ff309f7f7fec1b459868ae539c44616706b9cfb0b7c134a0a1f7bee274ee1a812665167172cc9fc480c542bb400d67337118f33
+MISC metadata.xml 168 BLAKE2B 2e0e000b4c3b6ca04c12903fdbe278415c05a822623c52e9aa95cbbf3d50bcb1246b7edbda7d2f6b559af8950c6374e6e0a69b76319964cfe686bf50b0604a57 SHA512 4dcf45d1809e8390a2d8155c8ebfe0dd610203e392aeab0ccd8a10f42cc8532a4925eff32b35e7a6c35598a4efd288229034ec0732299dbd8cfa0acff705fed3
diff --git a/acct-group/dxlAPRS/dxlAPRS-0.ebuild b/acct-group/dxlAPRS/dxlAPRS-0.ebuild
new file mode 100644
index 0000000..a25f405
--- /dev/null
+++ b/acct-group/dxlAPRS/dxlAPRS-0.ebuild
@@ -0,0 +1,10 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit acct-group
+
+DESCRIPTION="A group for media-radio/dxlAPRS"
+
+ACCT_GROUP_ID="611"
diff --git a/acct-group/dxlAPRS/metadata.xml b/acct-group/dxlAPRS/metadata.xml
new file mode 100644
index 0000000..115e9d6
--- /dev/null
+++ b/acct-group/dxlAPRS/metadata.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/acct-user/dxlAPRS/Manifest b/acct-user/dxlAPRS/Manifest
new file mode 100644
index 0000000..37fe23b
--- /dev/null
+++ b/acct-user/dxlAPRS/Manifest
@@ -0,0 +1,2 @@
+EBUILD dxlAPRS-0.ebuild 267 BLAKE2B 2a42a70429ef0db6874e9d36e070075fd93076b85a0f951bbb299e8ac8e84bc186a9741ffbe042c672f8cdc2e63698be4b4ca9221aa6c9f43951873d034647bc SHA512 e95d99362cd5f7bf9856f7992cc428e204e2a4c4be3b67ec95dc4d1ee79dc68f7859ce897127c7a5f6125e43307f217b648cc23d7a9209b42fbb66ef8632ae91
+MISC metadata.xml 168 BLAKE2B 2e0e000b4c3b6ca04c12903fdbe278415c05a822623c52e9aa95cbbf3d50bcb1246b7edbda7d2f6b559af8950c6374e6e0a69b76319964cfe686bf50b0604a57 SHA512 4dcf45d1809e8390a2d8155c8ebfe0dd610203e392aeab0ccd8a10f42cc8532a4925eff32b35e7a6c35598a4efd288229034ec0732299dbd8cfa0acff705fed3
diff --git a/acct-user/dxlAPRS/dxlAPRS-0.ebuild b/acct-user/dxlAPRS/dxlAPRS-0.ebuild
new file mode 100644
index 0000000..361b27c
--- /dev/null
+++ b/acct-user/dxlAPRS/dxlAPRS-0.ebuild
@@ -0,0 +1,13 @@
+# Copyright 2019-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit acct-user
+
+ACCT_USER_ID="611"
+ACCT_USER_GROUPS=( dxlAPRS dialout )
+ACCT_USER_HOME=/var/lib/dxlaprs
+ACCT_USER_HOME_PERMS=02750
+
+acct-user_add_deps
diff --git a/acct-user/dxlAPRS/metadata.xml b/acct-user/dxlAPRS/metadata.xml
new file mode 100644
index 0000000..115e9d6
--- /dev/null
+++ b/acct-user/dxlAPRS/metadata.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/media-radio/dxlAPRS/Manifest b/media-radio/dxlAPRS/Manifest
new file mode 100644
index 0000000..b4c057f
--- /dev/null
+++ b/media-radio/dxlAPRS/Manifest
@@ -0,0 +1,8 @@
+AUX dxlAPRS-20241117-gcc-new.patch 3613 BLAKE2B ee7634021414d55c763bf5025f47bf68d521199ea907c8a04e2fba878abb17259f7bedb0953da579ec8ead1888f6aebd9480295521307df02661bed72d5a4372 SHA512 56b2725ebf0910c554904fdd2f89efd875ab5406aa5925e88b6a1039f90f474e076f367e8c5ae8ae2007ab3cce29536e72557aa053a05b6c455eeb62865009d9
+AUX dxlAPRS-20241117-no-static-linking.patch 830 BLAKE2B 8b062022d7ba880dcb6c04df30d148a8aa99ab3f19849e0640a44ed474425d0fd0e559102da5d3dac284267a00374840b23c059be41a72e35c7b7da0b171d40d SHA512 3450b8370cecbe3c8d11948413638062792b1e5ab415173de1e99e5efb12fbde8037864247329f0f03d17288c546d057c82a0c3c49e940dc2c5377929e056b45
+AUX ra02.service 748 BLAKE2B a9f21b2ddab1d1ec3906c32c67277a1f0d0558192f5c516214576892ab871cc4f5b1c52bc5e23066a6633f927970ee54e26a71d9e5946523ee1caf8ba442e2e3 SHA512 99cbfdde556edd55dd3c12eb03eb99886aa3147eeb4638c964df921241761f0c18feb70d0e760972ee6f3b6cdbfd0b86537103ff4261af217dcb1f0b7b552b8a
+AUX udpbox.service 653 BLAKE2B b512a416ac6ad8edef27040a195d6b47548154fdc951744dc0d13def99bba93bd04d30fc6aa87d89f560227f6988b586de7989782a14ac68069577d8aa22a855 SHA512 3faa1e4a0aa67f91da2d38966497e8dfe65bc164187f5ce5fe2cf3dbe870497862b1fd85a3bfc2dff757016a45db8dd5582fbfaddf5e0c1286356392bdc93682
+AUX udpflex.service 674 BLAKE2B e9c235a0ea82691c3290962ea3cde495558eb83bcf4514fb8b2dc2784d44b1aac64b619836146fac7c6256ea4c4cd987793971be1af4c113eae54f9fc3aaec92 SHA512 c743ef69c83b5a7505297e0a0356d8619f65ad4b38f4ef662cfdea2b48c206356e07d53dad11f3b6658e727e4b5375cd101a017bca47fe83055ae7241cc0d157
+AUX udpgate4.service 1149 BLAKE2B 9ad91b5481a3ea49d40ff22fe594b765745d30382c5cb99493fab7be1d7e7536152aa974a60f99aa8425563070713cbce41338cbda14093745f9c415eca7c6c1 SHA512 c353091ddd558572147f11e529c4765d9e6f6d175c646978c44f8c9ba37728288c95511c51230c2659167fb5f6c5a0307b7077aa0b6b76906ec70461faad2f7b
+DIST dxlAPRS-20241117.tar.gz 19794087 BLAKE2B 2c2e5e28e3959958653df7a9ff0d66b8f97a52f0bd8b73249cb644a10f31e56d1d870a2fbb95d12ee4285a7856fd81e83fe2dfd7c23a888cdd063114c7daf2ba SHA512 a890e836df2d75e9436e825afc60adf94de017df8e9cbeab8e32374b5915b5b0894ae7e94f08e2cd68db542eded7d46344902de5cd3207acca9a90a39cd3d9bc
+EBUILD dxlAPRS-20241117.ebuild 1129 BLAKE2B 8d77d27d8437e8cf62e9547dca8199016ca8d1a68566c15e527e2596c2df076c6f4392d48ec7a762c9c9a894744fe8c2f7c6d1a2a4a86686674f5104dd38eafe SHA512 d5309c2744ab3094a210849cf213ffbf502f5f0080fdf87b82692f8214f879b71d43d6bf7fcd2dfebc01287cb0f328d21e6aee03de2c2e864f4e62c23b7de917
diff --git a/media-radio/dxlAPRS/dxlAPRS-20241117.ebuild b/media-radio/dxlAPRS/dxlAPRS-20241117.ebuild
new file mode 100644
index 0000000..dcd11a9
--- /dev/null
+++ b/media-radio/dxlAPRS/dxlAPRS-20241117.ebuild
@@ -0,0 +1,49 @@
+# $Header: $
+
+EAPI="7"
+
+inherit systemd
+
+COMMIT="6f75aa58501eab7dd8b04fc5324f169882bd28b8"
+
+DESCRIPTION="APRS-Toolchain by OE5DXL"
+HOMEPAGE="https://dxlwiki.dl1nux.de/"
+
+SRC_URI="https://github.com/oe5hpm/dxlAPRS/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
+KEYWORDS="amd64 x86"
+
+LICENSE="GPL-2"
+SLOT="0"
+
+RDEPEND="acct-group/dxlAPRS
+ acct-user/dxlAPRS
+ media-libs/libjpeg-turbo
+ media-libs/libpng
+ sci-libs/fftw
+ x11-libs/libX11
+ x11-libs/libXext"
+DEPEND=${RDEPEND}
+
+S=${WORKDIR}/${PN}-${COMMIT}/src
+
+PATCHES=(
+ "${FILESDIR}/${P}-gcc-new.patch"
+ "${FILESDIR}/${P}-no-static-linking.patch"
+)
+
+src_install() {
+ arch="$(uname -m)"
+ rm ../out-${arch}/*.o
+ dobin ../out-${arch}/*
+
+ insinto /usr/share/${PN}/www
+ doins -r ../dxlAPRS_common/www/*
+
+ insinto /usr/share/${PN}/aprsmap
+ doins -r ../aprsmap_common/*
+
+ systemd_dounit "${FILESDIR}"/ra02.service
+ systemd_dounit "${FILESDIR}"/udpbox.service
+ systemd_dounit "${FILESDIR}"/udpflex.service
+ systemd_dounit "${FILESDIR}"/udpgate4.service
+}
diff --git a/media-radio/dxlAPRS/files/dxlAPRS-20241117-gcc-new.patch b/media-radio/dxlAPRS/files/dxlAPRS-20241117-gcc-new.patch
new file mode 100644
index 0000000..443d867
--- /dev/null
+++ b/media-radio/dxlAPRS/files/dxlAPRS-20241117-gcc-new.patch
@@ -0,0 +1,106 @@
+diff -Naur src.orig/cleanup.c src/cleanup.c
+--- src.orig/cleanup.c 2024-11-17 18:24:00.000000000 +0100
++++ src/cleanup.c 2024-12-17 22:12:51.805849977 +0100
+@@ -31,7 +31,7 @@
+ strncpy(line, ut.ut_line, UT_LINESIZE);
+ bzero(ut.ut_name, UT_NAMESIZE);
+ bzero(ut.ut_host, UT_HOSTSIZE);
+- time(&ut.ut_time);
++ time((time_t *) &ut.ut_time);
+ lseek(fd, -(off_t)sizeof(struct utmp), L_INCR);
+ write(fd, &ut, sizeof(struct utmp));
+ close(fd);
+@@ -56,7 +56,7 @@
+ strncpy(ut.ut_line, line, sizeof(ut.ut_line));
+ strncpy(ut.ut_name, name, sizeof(ut.ut_name));
+ strncpy(ut.ut_host, host, sizeof(ut.ut_host));
+- time(&ut.ut_time);
++ time((time_t *) &ut.ut_time);
+ if (write(fd, &ut, sizeof(struct utmp)) != sizeof(struct utmp))
+ ftruncate(fd, buf.st_size);
+ }
+diff -Naur src.orig/fftw.c src/fftw.c
+--- src.orig/fftw.c 2024-11-17 18:24:00.000000000 +0100
++++ src/fftw.c 2024-12-17 21:53:32.872758461 +0100
+@@ -9,14 +9,14 @@
+ #include
+ #include
+
+-static fftwf_plan p;
++static fftw_plan p;
+
+ fftwf_complex* plan(uint n)
+ {
+ fftwf_complex *io;
+
+ io = (fftwf_complex*) fftw_malloc(sizeof(fftwf_complex) * n);
+- p = fftw_plan_dft_1d(n, io, io, FFTW_FORWARD, FFTW_ESTIMATE);
++ p = fftw_plan_dft_1d(n, (fftw_complex *)io, (fftw_complex *)io, FFTW_FORWARD, FFTW_ESTIMATE);
+ return io;
+ }
+
+diff -Naur src.orig/gpspos.c src/gpspos.c
+--- src.orig/gpspos.c 2024-11-17 18:24:00.000000000 +0100
++++ src/gpspos.c 2024-12-17 20:14:30.995289257 +0100
+@@ -1306,7 +1306,7 @@
+ sizeof(struct YUMA_structAlmanac [32]));
+ memset((char *)rinexalm,(char)0,
+ sizeof(struct structEphemeris [3072]));
+- semok = fnsem[0UL] && SEM_ReadAlmanacDataFromFile(fnsem, (char *)alm,
++ semok = fnsem[0UL] && SEM_ReadAlmanacDataFromFile(fnsem, (SEM_structAlmanac *)alm,
+ 32U, &cnt);
+ if (semok) {
+ for (i = 0UL; i<=31UL; i++) {
+@@ -1314,9 +1314,9 @@
+ } /* end for */
+ }
+ yumaok = fnyuma[0UL] && YUMA_ReadAlmanacDataFromFile(fnyuma,
+- (char *)yumaalm, 32U, &cnt);
++ (YUMA_structAlmanac *)yumaalm, 32U, &cnt);
+ rinexok = fnrinex[0UL] && RINEX_DecodeGPSNavigationFile(fnrinex,
+- (char *) &rinexklobuchar, (char *)rinexalm, 3071UL,
++ (GNSS_structKlobuchar *) &rinexklobuchar, (GPS_structEphemeris *)rinexalm, 3071UL,
+ &ri);
+ if (rinexok && ri>0UL) {
+ if (verb) {
+diff -Naur src.orig/l2cat.c src/l2cat.c
+--- src.orig/l2cat.c 2024-11-17 18:24:00.000000000 +0100
++++ src/l2cat.c 2024-12-17 22:31:30.565938321 +0100
+@@ -1729,7 +1729,7 @@
+ l2_L2Init(1000U, sockset, eventproc);
+ l2_l2verb = verb;
+ l2_dupchk = axudpchk;
+- signal(SIGCHLD, cleanup); /*CleanWho*/
++ signal(SIGCHLD, (void *)cleanup); /*CleanWho*/
+ /*
+ MOVE(ADR(mycall), ADR(hc[0*7]), 7); (* via call *)
+ MOVE(ADR(mycall), ADR(hc[1*7]), 7); (* connect call *)
+diff -Naur src.orig/radio.c src/radio.c
+--- src.orig/radio.c 2024-11-17 18:24:00.000000000 +0100
++++ src/radio.c 2024-12-17 22:07:56.525826660 +0100
+@@ -154,20 +154,20 @@
+ char s[1001];
+ float fr;
+ unsigned long n;
+- unsigned long m;
+- long ni;
++ uint32_t m;
++ int32_t ni;
+ char ok0;
+ mono = 0;
+ rds = 0;
+ verb = 0;
+- afc = 50UL;
++ uint32_t afc = 50UL;
+ strncpy(url,"127.0.0.1",1001u);
+ strncpy(port,"1234",1001u);
+ soundfn[0] = 0;
+ tune = 100000000UL;
+- ifwidth = 0UL;
++ uint32_t ifwidth = 0UL;
+ firw = 0.0f;
+- firl = 16UL;
++ uint32_t firl = 16UL;
+ for (;;) {
+ osi_NextArg(s, 1001ul);
+ if (s[0U]==0) break;
diff --git a/media-radio/dxlAPRS/files/dxlAPRS-20241117-no-static-linking.patch b/media-radio/dxlAPRS/files/dxlAPRS-20241117-no-static-linking.patch
new file mode 100644
index 0000000..c694999
--- /dev/null
+++ b/media-radio/dxlAPRS/files/dxlAPRS-20241117-no-static-linking.patch
@@ -0,0 +1,22 @@
+diff -Naur src.orig/Makefile src/Makefile
+--- src.orig/Makefile 2024-11-17 18:24:00.000000000 +0100
++++ src/Makefile 2024-12-18 20:10:30.311297575 +0100
+@@ -144,9 +144,6 @@
+ OUT := $(if $(OUT),$(OUT),../out-x86_32/)
+ CFLAGS += -m32
+ LFLAGS += -m32
+- TARGETS += $(OUT)aprsmap-x86_32
+-else ifneq ($(HOSTOS),Darwin)
+-TARGETS += $(OUT)aprsmap-x86_64
+ endif
+ OUT := $(if $(OUT),$(OUT),../out-x86_64/)
+ # -------------------------- x86_32 (default) specific ------------------------
+@@ -528,7 +525,7 @@
+
+ $(OUT)waterfall3: $(OBJ_WATERFALL3) $(OBJ_COMMON)
+ @echo [ linking ] $@
+- $(CC) $(LFLAGS) -o $@ $(OBJ_WATERFALL3) $(OBJ_COMMON) $(GFXLIBS) $(EXTLIB)libfftw3.a -lm
++ $(CC) $(LFLAGS) -o $@ $(OBJ_WATERFALL3) $(OBJ_COMMON) $(GFXLIBS) -lfftw3 -lm
+ @$(STRIP) $@ $(STRIPFLAGS)
+
+ $(OUT)downsample: $(OBJ_DOWNSAMPLE) $(OBJ_COMMON)
diff --git a/media-radio/dxlAPRS/files/ra02.service b/media-radio/dxlAPRS/files/ra02.service
new file mode 100644
index 0000000..952878c
--- /dev/null
+++ b/media-radio/dxlAPRS/files/ra02.service
@@ -0,0 +1,28 @@
+[Unit]
+Description=APRS LoRa connector
+Documentation=https://github.com/oe5hpm/dxlAPRS
+After=network.target
+
+[Service]
+User=dxlaprs
+SupplementaryGroups=gpio
+Environment="INOUT0=-a -L 127.0.0.1:9702:0"
+Environment="INOUT1="
+Environment="INOUT2="
+Environment="INOUT3="
+Environment="INOUT4="
+Environment="INOUT5="
+Environment="INOUT6="
+Environment="INOUT7="
+Environment="INOUT8="
+Environment="INOUT9="
+##Environment="GPIO=8 10 9 11"
+Environment="GPIO=520 522 521 523"
+Environment="RXFREQ=433.775"
+Environment="TXFREQ=433.900"
+Environment="EXTPARAM=-v"
+ExecStart=/usr/bin/ra02 -p $GPIO $INOUT0 -f ${RXFREQ} -F ${TXFREQ} $INOUT1 $INOUT2 $INOUT3 $INOUT4 $INOUT5 $INOUT6 $INOUT7 $INOUT8 $INOUT9 $EXTPARAM
+Type=simple
+
+[Install]
+WantedBy=multi-user.target
diff --git a/media-radio/dxlAPRS/files/udpbox.service b/media-radio/dxlAPRS/files/udpbox.service
new file mode 100644
index 0000000..ad873c1
--- /dev/null
+++ b/media-radio/dxlAPRS/files/udpbox.service
@@ -0,0 +1,23 @@
+[Unit]
+Description=axudp in/out ui/aprs stream splitter, filter, digipeater
+Documentation=https://github.com/oe5hpm/dxlAPRS
+After=network.target
+
+[Service]
+User=dxlaprs
+Environment="INOUT0=-R 127.0.0.1:9201 -l 127.0.0.1:10201"
+Environment="INOUT1=-R 127.0.0.1:9702 -l 127.0.0.1:10702"
+Environment="INOUT2="
+Environment="INOUT3="
+Environment="INOUT4="
+Environment="INOUT5="
+Environment="INOUT6="
+Environment="INOUT7="
+Environment="INOUT8="
+Environment="INOUT9="
+Environment="EXTPARAM=-v"
+ExecStart=/usr/bin/udpbox $INOUT0 $INOUT1 $INOUT2 $INOUT3 $INOUT4 $INOUT5 $INOUT6 $INOUT7 $INOUT8 $INOUT9 $EXTPARAM
+Type=simple
+
+[Install]
+WantedBy=multi-user.target
diff --git a/media-radio/dxlAPRS/files/udpflex.service b/media-radio/dxlAPRS/files/udpflex.service
new file mode 100644
index 0000000..3461a86
--- /dev/null
+++ b/media-radio/dxlAPRS/files/udpflex.service
@@ -0,0 +1,27 @@
+[Unit]
+Description=KISS TNC connector
+Documentation=https://github.com/oe5hpm/dxlAPRS
+After=network.target
+
+[Service]
+User=dxlaprs
+SupplementaryGroups=dialout
+Environment="INOUT0=-U 127.0.0.1:9201:0"
+Environment="INOUT1="
+Environment="INOUT2="
+Environment="INOUT3="
+Environment="INOUT4="
+Environment="INOUT5="
+Environment="INOUT6="
+Environment="INOUT7="
+Environment="INOUT8="
+Environment="INOUT9="
+Environment="KISSTCP=-T 127.0.0.1:8001"
+Environment="EXTPARAM=-V"
+ExecStart=/usr/bin/udpflex $KISSTCP $INOUT0 $INOUT1 $INOUT2 $INOUT3 $INOUT4 $INOUT5 $INOUT6 $INOUT7 $INOUT8 $INOUT9 $EXTPARAM
+Type=simple
+Restart=on-failure
+RestartSec=30s
+
+[Install]
+WantedBy=multi-user.target
diff --git a/media-radio/dxlAPRS/files/udpgate4.service b/media-radio/dxlAPRS/files/udpgate4.service
new file mode 100644
index 0000000..b4c875e
--- /dev/null
+++ b/media-radio/dxlAPRS/files/udpgate4.service
@@ -0,0 +1,33 @@
+[Unit]
+Description=APRS iGate
+Documentation=https://github.com/oe5hpm/dxlAPRS
+After=network.target
+
+[Service]
+User=dxlaprs
+Environment="CALL=MYCALL"
+Environment="INOUT0=-R 127.0.0.1:0:10201#2m"
+Environment="INOUT1=-R 127.0.0.1:0:10702#LoRa"
+Environment="INOUT2="
+Environment="INOUT3="
+Environment="INOUT4="
+Environment="INOUT5="
+Environment="INOUT6="
+Environment="INOUT7="
+Environment="INOUT8="
+Environment="INOUT9="
+Environment="KEEPHEARDDIRECT=10080"
+Environment="KEEPHEARDINDIRECT=1440"
+Environment="HEARDMAXLINES=50"
+Environment="SHOWHEARD=60"
+Environment="NETBEACON=30:/etc/dxlAPRS/netbeacon.txt"
+Environment="GATEWAY=/etc/dxlAPRS/gateway.txt"
+Environment="PASSWORD=/etc/dxlAPRS/password.txt"
+Environment="LOCALPORT=14580"
+Environment="WWWPORT=14501"
+Environment="WWWDIR=/usr/share/dxlAPRS/www/"
+ExecStart=/usr/bin/udpgate4 -s ${CALL} $INOUT0 $INOUT1 $INOUT2 $INOUT3 $INOUT4 $INOUT5 $INOUT6 $INOUT7 $INOUT8 $INOUT9 -H ${KEEPHEARDDIRECT} -I ${KEEPHEARDINDIRECT} -u ${HEARDMAXLINES} -B ${SHOWHEARD} -n ${NETBEACON} -g ${GATEWAY} -p ${PASSWORD} -t ${LOCALPORT} -w ${WWWPORT} -D ${WWWDIR} -O -0 -v
+Type=simple
+
+[Install]
+WantedBy=multi-user.target