MMDVM Hat compatibility

I am a very simple software developer, and know as much about hardware as I do about the mating habits of the Cyprinodon diabolis fish, and I am loathe to ask for help for something likely so simple, but I am developing a hole in my wall from banging my head against it. I see several folks have asked about MMDVMs already, but none of the threads have provided a concise enough answer for simpletons like myself.

I am struggling to get my head around the basics of the Wiring Tool. I am running the latest Bullseye on a le Potato, and trying to figure out what overlay(s) to use. I had been thinking that UART-AO-B would do the job, but the software does not see the modem.

The software, both MMDVMHost and DMRGateway, compile splendidly on the AML-S905X-CC, and I have successfully used a little $8 Aursinc GPIO <–> UART board to connect to and use the MMDVM via USB, and this does with the Potato, however connecting the MMDVM hat directly to the GPIO and using ldto enable uart-ao-b does not work.

Again, I apologize for the shallow question, I realize this board is geared toward much more sophisticated, modern developers and makers, and I am neither. But with supply chain related shortages of Pi, many of us are crawling out of the woodwork and trying to quickly fill bigger shoes than we were made for. Can anyone point me (us) in the right direction?

This is the hat in question:

and for the sake of thoroughness, this is the USB <–> GPIO adapter that does work, with a little tinkering:

https://www.amazon.com/AURSINC-Hotspot-Simplex-Compatible-MicroUSB/dp/B09WKJPW59

(those are available on Ali for about $7)

I really don’t know anything about this subject so I’m not sure how much help I’m going to be.

As I understand you want to connect presumably a Zumspot or MMDVM_HS board directly to the GPIO header on the Le Potato.

I did find this schematic of an MMDVM board :-
v22_mmdvm_hs_sch.png (1874×1360) (hamradio.si)

I understand this probably isn’t your board but I was just interested what PI pins were being utilized and couldn’t find much information on the subject.

If you look in the top left there appears to be the connections to the PI header which shows a UART connection using pins 14&15 plus an I2C connection on pins 3&5. Also it appears on this board, two pi GPIO pins are being used which will be another complication trying to get the software to access on the Le Potato.

If you can find the exact details of the Header connections on your board then perhaps there could be a solution. The I2C overlay is easy to put in place, but the GPIO could be more of a problem. I fear your intermediate board may be your best bet

My apologies for the delayed response, “Food on the table” related tasks preempted those which are hobby related. :slight_smile: Thank you kindly for responding, I appreciate it very much.

Your suspicion about my motive is exactly correct, I would like to be able to use the MMDVM hat directly on the Le Potato board, exactly the same way that it works on a RasPi 3.

My ability to read a schematic is very limited. I can differentiate between parts, and in some cases, even see how and why one thing leads to another, but at my (growing but) still very amateur level, the schematic is only helpful in retrospect, so that I will better see how what I have done is represented. As a troubleshooting tool, it is still over my head.

If it helps, I believe this is the exact board:

That says Pi Zero, and indeed this board works perfectly on a Pi Zero using GPIO pins, but it works identically well on the Pi3. It is just faster, and a different project called the Pi Zero into action, so I migrated to the 3.

Even more specifically, this is the exact board I bought to experiment with:

https://www.amazon.com/gp/product/B07NSQGYWY/

If I am unable to figure out how to directly connect GPIO to HAT, I will use the UART intermediary board to connect this particular HAT to a PC server that is always on, and use it this way. The MMDVMHost code that makes use of the hat seems to compile perfectly well under Windows and linux, (I bet it would run on a smart light switch with ESPHome or Tasmota, heh), and there is a great deal of ancillary software that I am dying to tinker with to go with it, But an ideal situation will be a direct connection as if the Potato were a Pi3.

This is off-subject, but it should be said that I am doing this more as a learning project than out of necessity. I would like to know how to do it for the same reason that many of us do what we do in our spare time - fun and personal growth, but there is no urgency. Even as an application guy, I have found a lot of uses for the Le Potato SBC, It is a good project board for the price, given the current market. If my lack of hardware skills gets in the way of being able to do this one thing, there are plenty of other great projects waiting around the corner for it, and many might help me grow my skillset and get more into hardware, just as I hope this project does. I have built power supplies and done a few automation-related things with Arduino and 8266s, but those were largely paint-by-number, and involved no actual understanding, only the skill to follow instructions. I am wanting to graduate from the kiddie pool by gradually wading into the adult side, and the Potato is my ticket. :slight_smile:

Best wishes,

Try to enable the i2c-ao overlay and see if you can see your hat with it connected to the Le Potato.

How to Enable I2C on AML-S905X-CC Le Potato - Hardware - Libre Computer Hub

Looking at the software it should be at address 22.

Thanks again for your suggestions. But I am about ready to give up and admit defeat.
This post is just a final hail mary, just in case you or anyone immediately sees whatever moronic thing that I am misunderstanding. And, my ego demands right now that I say that I am not a complete, total idiot - but I am so far out of my depth here that I would be terrified to play chess with my cat right now. I would lose. Badly.

I have seen posts (very few, one only partially archived on archive.org) abuot people having done this, but without sitting inside a burning pentagram or twirling a dead chicken around by head counterclockwise while saying the Lord’s Prayer backwards, I am out of ideas. And I am not at all optimistic about either of those two things, either.

One example: https://www.soara.org/Props/Propagator%20Archive/Propagator-CurrentIssue.pdf

Just in case you might be bored enough to look at these one last time, I am attaching a few logs of what I am doing, in the hopes that something obviously wrong jumps out. But please - I recognize the value of your time, and do not really expect another human being to fill in the gaps I missed in basic high school education because I was too busy trying to get to know the redhead that sat in front of me.

Firstly, the relevant portion of the MMDVM.ini file that relates to the modem. I have no understanding of the IP parameters or UDP ModemAddress information, but I have never used it on any platform that I have compiled this code on, Windows, WSL2, and half a dozen flavors of linux (using the UART<—>GPIO adapter).

UARTPort=/dev/ttyAML0
UARTSpeed=115200

The port and address for an I2C connection

I2CPort=/dev/i2c
I2CAddress=0x22

IP parameters for UDP connection

ModemAddress=192.168.2.100
ModemPort=3334
LocalAddress=192.168.2.1
LocalPort=3335
TXInvert=1
RXInvert=0
PTTInvert=0
TXDelay=100
RXOffset=0
TXOffset=0
DMRDelay=0
RXLevel=50
TXLevel=50
RXDCOffset=0
TXDCOffset=0
RFLevel=100

CWIdTXLevel=50

D-StarTXLevel=50

DMRTXLevel=50

YSFTXLevel=50

P25TXLevel=50

NXDNTXLevel=50

M17TXLevel=50

POCSAGTXLevel=50

FMTXLevel=50

AX25TXLevel=50

RSSIMappingFile=RSSI.dat
UseCOSAsLockout=0
Trace=0
Debug=0

This is the “before” ls of /dev, after a fresh reboot, when everything should be stock:

total 0
crw-r–r-- 1 root root 10, 235 Mar 17 08:59 autofs
drwxr-xr-x 2 root root 260 Dec 31 1969 block
crw-rw---- 1 root disk 10, 234 Mar 17 08:59 btrfs-control
drwxr-xr-x 3 root root 60 Dec 31 1969 bus
crw-rw---- 1 root video 240, 0 Mar 17 08:59 cec0
drwxr-xr-x 2 root root 3320 Mar 17 09:14 char
crw–w---- 1 root tty 5, 1 Mar 17 08:59 console
lrwxrwxrwx 1 root root 11 Aug 7 2022 core → /proc/kcore
crw------- 1 root root 10, 126 Mar 17 08:59 cpu_dma_latency
crw------- 1 root root 10, 203 Mar 17 08:59 cuse
drwxr-xr-x 7 root root 140 Dec 31 1969 disk
drwxr-xr-x 3 root root 120 Mar 17 08:59 dri
crw------- 1 root root 10, 127 Mar 17 08:59 efi_capsule_loader
crw-rw---- 1 root video 29, 0 Mar 17 08:59 fb0
lrwxrwxrwx 1 root root 13 Aug 7 2022 fd → /proc/self/fd
crw-rw-rw- 1 root root 1, 7 Mar 17 08:59 full
crw-rw-rw- 1 root root 10, 229 Mar 17 08:59 fuse
crw-rw---- 1 root gpio 254, 0 Mar 17 08:59 gpiochip0
crw-rw---- 1 root gpio 254, 1 Mar 17 08:59 gpiochip1
drwxr-xr-x 2 root root 0 Aug 7 2022 hugepages
crw------- 1 root root 10, 183 Mar 17 08:59 hwrng
crw-rw---- 1 root i2c 89, 0 Mar 17 08:59 i2c-0
lrwxrwxrwx 1 root root 12 Aug 7 2022 initctl → /run/initctl
drwxr-xr-x 3 root root 100 Mar 17 08:59 input
crw-r–r-- 1 root root 1, 11 Mar 17 08:59 kmsg
crw-rw----+ 1 root kvm 10, 232 Mar 17 08:59 kvm
crw-rw---- 1 root video 241, 0 Mar 17 08:59 lirc0
lrwxrwxrwx 1 root root 28 Aug 7 2022 log → /run/systemd/journal/dev-log
brw-rw---- 1 root disk 7, 0 Mar 17 08:59 loop0
brw-rw---- 1 root disk 7, 1 Mar 17 08:59 loop1
brw-rw---- 1 root disk 7, 2 Mar 17 08:59 loop2
brw-rw---- 1 root disk 7, 3 Mar 17 08:59 loop3
brw-rw---- 1 root disk 7, 4 Mar 17 08:59 loop4
brw-rw---- 1 root disk 7, 5 Mar 17 08:59 loop5
brw-rw---- 1 root disk 7, 6 Mar 17 08:59 loop6
brw-rw---- 1 root disk 7, 7 Mar 17 08:59 loop7
crw-rw---- 1 root disk 10, 237 Mar 17 08:59 loop-control
drwxr-xr-x 2 root root 60 Mar 17 08:59 mapper
crw-r----- 1 root kmem 1, 1 Mar 17 08:59 mem
brw-rw---- 1 root disk 179, 0 Mar 17 08:59 mmcblk1
brw-rw---- 1 root disk 179, 1 Mar 17 08:59 mmcblk1p1
brw-rw---- 1 root disk 179, 2 Mar 17 08:59 mmcblk1p2
drwxrwxrwt 2 root root 40 Dec 31 1969 mqueue
drwxr-xr-x 2 root root 60 Dec 31 1969 net
crw-rw-rw- 1 root root 1, 3 Mar 17 08:59 null
crw-r----- 1 root kmem 1, 4 Mar 17 08:59 port
crw-rw-rw- 1 root tty 5, 2 Mar 17 09:15 ptmx
drwxr-xr-x 2 root root 0 Dec 31 1969 pts
crw------- 1 root root 2, 0 Mar 17 08:59 ptyp0
crw------- 1 root root 2, 1 Mar 17 08:59 ptyp1
crw------- 1 root root 2, 2 Mar 17 08:59 ptyp2
crw------- 1 root root 2, 3 Mar 17 08:59 ptyp3
crw------- 1 root root 2, 4 Mar 17 08:59 ptyp4
crw------- 1 root root 2, 5 Mar 17 08:59 ptyp5
crw------- 1 root root 2, 6 Mar 17 08:59 ptyp6
crw------- 1 root root 2, 7 Mar 17 08:59 ptyp7
crw------- 1 root root 2, 8 Mar 17 08:59 ptyp8
crw------- 1 root root 2, 9 Mar 17 08:59 ptyp9
crw------- 1 root root 2, 10 Mar 17 08:59 ptypa
crw------- 1 root root 2, 11 Mar 17 08:59 ptypb
crw------- 1 root root 2, 12 Mar 17 08:59 ptypc
crw------- 1 root root 2, 13 Mar 17 08:59 ptypd
crw------- 1 root root 2, 14 Mar 17 08:59 ptype
crw------- 1 root root 2, 15 Mar 17 08:59 ptypf
crw-rw-rw- 1 root root 1, 8 Mar 17 08:59 random
crw-rw-r–+ 1 root netdev 10, 242 Mar 17 08:59 rfkill
drwxrwxrwt 2 root root 40 Aug 7 2022 shm
crw------- 1 root root 10, 231 Mar 17 08:59 snapshot
drwxr-xr-x 3 root root 140 Mar 17 08:59 snd
lrwxrwxrwx 1 root root 15 Aug 7 2022 stderr → /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Aug 7 2022 stdin → /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Aug 7 2022 stdout → /proc/self/fd/1
crw-rw-rw- 1 root tty 5, 0 Mar 17 08:59 tty
crw–w---- 1 root tty 4, 0 Mar 17 08:59 tty0
crw------- 1 carl tty 4, 1 Mar 17 08:59 tty1
crw–w---- 1 root tty 4, 10 Mar 17 08:59 tty10
crw–w---- 1 root tty 4, 11 Mar 17 08:59 tty11
crw–w---- 1 root tty 4, 12 Mar 17 08:59 tty12
crw–w---- 1 root tty 4, 13 Mar 17 08:59 tty13
crw–w---- 1 root tty 4, 14 Mar 17 08:59 tty14
crw–w---- 1 root tty 4, 15 Mar 17 08:59 tty15
crw–w---- 1 root tty 4, 16 Mar 17 08:59 tty16
crw–w---- 1 root tty 4, 17 Mar 17 08:59 tty17
crw–w---- 1 root tty 4, 18 Mar 17 08:59 tty18
crw–w---- 1 root tty 4, 19 Mar 17 08:59 tty19
crw–w---- 1 root tty 4, 2 Mar 17 08:59 tty2
crw–w---- 1 root tty 4, 20 Mar 17 08:59 tty20
crw–w---- 1 root tty 4, 21 Mar 17 08:59 tty21
crw–w---- 1 root tty 4, 22 Mar 17 08:59 tty22
crw–w---- 1 root tty 4, 23 Mar 17 08:59 tty23
crw–w---- 1 root tty 4, 24 Mar 17 08:59 tty24
crw–w---- 1 root tty 4, 25 Mar 17 08:59 tty25
crw–w---- 1 root tty 4, 26 Mar 17 08:59 tty26
crw–w---- 1 root tty 4, 27 Mar 17 08:59 tty27
crw–w---- 1 root tty 4, 28 Mar 17 08:59 tty28
crw–w---- 1 root tty 4, 29 Mar 17 08:59 tty29
crw–w---- 1 root tty 4, 3 Mar 17 08:59 tty3
crw–w---- 1 root tty 4, 30 Mar 17 08:59 tty30
crw–w---- 1 root tty 4, 31 Mar 17 08:59 tty31
crw–w---- 1 root tty 4, 32 Mar 17 08:59 tty32
crw–w---- 1 root tty 4, 33 Mar 17 08:59 tty33
crw–w---- 1 root tty 4, 34 Mar 17 08:59 tty34
crw–w---- 1 root tty 4, 35 Mar 17 08:59 tty35
crw–w---- 1 root tty 4, 36 Mar 17 08:59 tty36
crw–w---- 1 root tty 4, 37 Mar 17 08:59 tty37
crw–w---- 1 root tty 4, 38 Mar 17 08:59 tty38
crw–w---- 1 root tty 4, 39 Mar 17 08:59 tty39
crw–w---- 1 root tty 4, 4 Mar 17 08:59 tty4
crw–w---- 1 root tty 4, 40 Mar 17 08:59 tty40
crw–w---- 1 root tty 4, 41 Mar 17 08:59 tty41
crw–w---- 1 root tty 4, 42 Mar 17 08:59 tty42
crw–w---- 1 root tty 4, 43 Mar 17 08:59 tty43
crw–w---- 1 root tty 4, 44 Mar 17 08:59 tty44
crw–w---- 1 root tty 4, 45 Mar 17 08:59 tty45
crw–w---- 1 root tty 4, 46 Mar 17 08:59 tty46
crw–w---- 1 root tty 4, 47 Mar 17 08:59 tty47
crw–w---- 1 root tty 4, 48 Mar 17 08:59 tty48
crw–w---- 1 root tty 4, 49 Mar 17 08:59 tty49
crw–w---- 1 root tty 4, 5 Mar 17 08:59 tty5
crw–w---- 1 root tty 4, 50 Mar 17 08:59 tty50
crw–w---- 1 root tty 4, 51 Mar 17 08:59 tty51
crw–w---- 1 root tty 4, 52 Mar 17 08:59 tty52
crw–w---- 1 root tty 4, 53 Mar 17 08:59 tty53
crw–w---- 1 root tty 4, 54 Mar 17 08:59 tty54
crw–w---- 1 root tty 4, 55 Mar 17 08:59 tty55
crw–w---- 1 root tty 4, 56 Mar 17 08:59 tty56
crw–w---- 1 root tty 4, 57 Mar 17 08:59 tty57
crw–w---- 1 root tty 4, 58 Mar 17 08:59 tty58
crw–w---- 1 root tty 4, 59 Mar 17 08:59 tty59
crw–w---- 1 root tty 4, 6 Mar 17 08:59 tty6
crw–w---- 1 root tty 4, 60 Mar 17 08:59 tty60
crw–w---- 1 root tty 4, 61 Mar 17 08:59 tty61
crw–w---- 1 root tty 4, 62 Mar 17 08:59 tty62
crw–w---- 1 root tty 4, 63 Mar 17 08:59 tty63
crw–w---- 1 root tty 4, 7 Mar 17 08:59 tty7
crw–w---- 1 root tty 4, 8 Mar 17 08:59 tty8
crw–w---- 1 root tty 4, 9 Mar 17 08:59 tty9
crw–w---- 1 root tty 245, 0 Mar 17 08:59 ttyAML0
crw------- 1 root root 3, 0 Mar 17 08:59 ttyp0
crw------- 1 root root 3, 1 Mar 17 08:59 ttyp1
crw------- 1 root root 3, 2 Mar 17 08:59 ttyp2
crw------- 1 root root 3, 3 Mar 17 08:59 ttyp3
crw------- 1 root root 3, 4 Mar 17 08:59 ttyp4
crw------- 1 root root 3, 5 Mar 17 08:59 ttyp5
crw------- 1 root root 3, 6 Mar 17 08:59 ttyp6
crw------- 1 root root 3, 7 Mar 17 08:59 ttyp7
crw------- 1 root root 3, 8 Mar 17 08:59 ttyp8
crw------- 1 root root 3, 9 Mar 17 08:59 ttyp9
crw------- 1 root root 3, 10 Mar 17 08:59 ttypa
crw------- 1 root root 3, 11 Mar 17 08:59 ttypb
crw------- 1 root root 3, 12 Mar 17 08:59 ttypc
crw------- 1 root root 3, 13 Mar 17 08:59 ttypd
crw------- 1 root root 3, 14 Mar 17 08:59 ttype
crw------- 1 root root 3, 15 Mar 17 08:59 ttypf
crw-rw---- 1 root dialout 4, 64 Mar 17 08:59 ttyS0
crw-rw---- 1 root dialout 4, 65 Mar 17 08:59 ttyS1
crw-rw---- 1 root dialout 4, 66 Mar 17 08:59 ttyS2
crw-rw---- 1 root dialout 4, 67 Mar 17 08:59 ttyS3
crw------- 1 root root 10, 239 Mar 17 08:59 uhid
crw------- 1 root root 10, 223 Mar 17 08:59 uinput
crw-rw-rw- 1 root root 1, 9 Mar 17 08:59 urandom
crw------- 1 root root 10, 240 Mar 17 08:59 userio
drwxr-xr-x 3 root root 60 Mar 17 08:59 v4l
crw-rw---- 1 root tty 7, 0 Mar 17 08:59 vcs
crw-rw---- 1 root tty 7, 1 Mar 17 08:59 vcs1
crw-rw---- 1 root tty 7, 2 Mar 17 08:59 vcs2
crw-rw---- 1 root tty 7, 3 Mar 17 08:59 vcs3
crw-rw---- 1 root tty 7, 4 Mar 17 08:59 vcs4
crw-rw---- 1 root tty 7, 5 Mar 17 08:59 vcs5
crw-rw---- 1 root tty 7, 6 Mar 17 08:59 vcs6
crw-rw---- 1 root tty 7, 128 Mar 17 08:59 vcsa
crw-rw---- 1 root tty 7, 129 Mar 17 08:59 vcsa1
crw-rw---- 1 root tty 7, 130 Mar 17 08:59 vcsa2
crw-rw---- 1 root tty 7, 131 Mar 17 08:59 vcsa3
crw-rw---- 1 root tty 7, 132 Mar 17 08:59 vcsa4
crw-rw---- 1 root tty 7, 133 Mar 17 08:59 vcsa5
crw-rw---- 1 root tty 7, 134 Mar 17 08:59 vcsa6
crw-rw---- 1 root tty 7, 64 Mar 17 08:59 vcsu
crw-rw---- 1 root tty 7, 65 Mar 17 08:59 vcsu1
crw-rw---- 1 root tty 7, 66 Mar 17 08:59 vcsu2
crw-rw---- 1 root tty 7, 67 Mar 17 08:59 vcsu3
crw-rw---- 1 root tty 7, 68 Mar 17 08:59 vcsu4
crw-rw---- 1 root tty 7, 69 Mar 17 08:59 vcsu5
crw-rw---- 1 root tty 7, 70 Mar 17 08:59 vcsu6
drwxr-xr-x 2 root root 60 Dec 31 1969 vfio
crw------- 1 root root 10, 137 Mar 17 08:59 vhci
crw-rw----+ 1 root video 81, 0 Mar 17 08:59 video0
crw------- 1 root root 10, 130 Mar 17 08:59 watchdog
crw------- 1 root root 247, 0 Mar 17 08:59 watchdog0
crw-rw-rw- 1 root root 1, 5 Mar 17 08:59 zero

Then the:

$ sudo ldto enable i2c-ao

ls -l /dev
total 0
crw-r–r-- 1 root root 10, 235 Mar 17 08:59 autofs
drwxr-xr-x 2 root root 260 Dec 31 1969 block
crw-rw---- 1 root disk 10, 234 Mar 17 08:59 btrfs-control
drwxr-xr-x 3 root root 60 Dec 31 1969 bus
crw-rw---- 1 root video 240, 0 Mar 17 08:59 cec0
drwxr-xr-x 2 root root 3340 Mar 17 09:16 char
crw–w---- 1 root tty 5, 1 Mar 17 08:59 console
lrwxrwxrwx 1 root root 11 Aug 7 2022 core → /proc/kcore
crw------- 1 root root 10, 126 Mar 17 08:59 cpu_dma_latency
crw------- 1 root root 10, 203 Mar 17 08:59 cuse
drwxr-xr-x 7 root root 140 Dec 31 1969 disk
drwxr-xr-x 3 root root 120 Mar 17 08:59 dri
crw------- 1 root root 10, 127 Mar 17 08:59 efi_capsule_loader
crw-rw---- 1 root video 29, 0 Mar 17 08:59 fb0
lrwxrwxrwx 1 root root 13 Aug 7 2022 fd → /proc/self/fd
crw-rw-rw- 1 root root 1, 7 Mar 17 08:59 full
crw-rw-rw- 1 root root 10, 229 Mar 17 08:59 fuse
crw-rw---- 1 root gpio 254, 0 Mar 17 08:59 gpiochip0
crw-rw---- 1 root gpio 254, 1 Mar 17 08:59 gpiochip1
drwxr-xr-x 2 root root 0 Aug 7 2022 hugepages
crw------- 1 root root 10, 183 Mar 17 08:59 hwrng
crw-rw---- 1 root i2c 89, 0 Mar 17 08:59 i2c-0
crw-rw---- 1 root i2c 89, 1 Mar 17 09:16 i2c-1
lrwxrwxrwx 1 root root 12 Aug 7 2022 initctl → /run/initctl
drwxr-xr-x 3 root root 100 Mar 17 08:59 input
crw-r–r-- 1 root root 1, 11 Mar 17 08:59 kmsg
crw-rw----+ 1 root kvm 10, 232 Mar 17 08:59 kvm
crw-rw---- 1 root video 241, 0 Mar 17 08:59 lirc0
lrwxrwxrwx 1 root root 28 Aug 7 2022 log → /run/systemd/journal/dev-log
brw-rw---- 1 root disk 7, 0 Mar 17 08:59 loop0
brw-rw---- 1 root disk 7, 1 Mar 17 08:59 loop1
brw-rw---- 1 root disk 7, 2 Mar 17 08:59 loop2
brw-rw---- 1 root disk 7, 3 Mar 17 08:59 loop3
brw-rw---- 1 root disk 7, 4 Mar 17 08:59 loop4
brw-rw---- 1 root disk 7, 5 Mar 17 08:59 loop5
brw-rw---- 1 root disk 7, 6 Mar 17 08:59 loop6
brw-rw---- 1 root disk 7, 7 Mar 17 08:59 loop7
crw-rw---- 1 root disk 10, 237 Mar 17 08:59 loop-control
drwxr-xr-x 2 root root 60 Mar 17 08:59 mapper
crw-r----- 1 root kmem 1, 1 Mar 17 08:59 mem
brw-rw---- 1 root disk 179, 0 Mar 17 08:59 mmcblk1
brw-rw---- 1 root disk 179, 1 Mar 17 08:59 mmcblk1p1
brw-rw---- 1 root disk 179, 2 Mar 17 08:59 mmcblk1p2
drwxrwxrwt 2 root root 40 Dec 31 1969 mqueue
drwxr-xr-x 2 root root 60 Dec 31 1969 net
crw-rw-rw- 1 root root 1, 3 Mar 17 08:59 null
crw-r----- 1 root kmem 1, 4 Mar 17 08:59 port
crw-rw-rw- 1 root tty 5, 2 Mar 17 09:40 ptmx
drwxr-xr-x 2 root root 0 Dec 31 1969 pts
crw------- 1 root root 2, 0 Mar 17 08:59 ptyp0
crw------- 1 root root 2, 1 Mar 17 08:59 ptyp1
crw------- 1 root root 2, 2 Mar 17 08:59 ptyp2
crw------- 1 root root 2, 3 Mar 17 08:59 ptyp3
crw------- 1 root root 2, 4 Mar 17 08:59 ptyp4
crw------- 1 root root 2, 5 Mar 17 08:59 ptyp5
crw------- 1 root root 2, 6 Mar 17 08:59 ptyp6
crw------- 1 root root 2, 7 Mar 17 08:59 ptyp7
crw------- 1 root root 2, 8 Mar 17 08:59 ptyp8
crw------- 1 root root 2, 9 Mar 17 08:59 ptyp9
crw------- 1 root root 2, 10 Mar 17 08:59 ptypa
crw------- 1 root root 2, 11 Mar 17 08:59 ptypb
crw------- 1 root root 2, 12 Mar 17 08:59 ptypc
crw------- 1 root root 2, 13 Mar 17 08:59 ptypd
crw------- 1 root root 2, 14 Mar 17 08:59 ptype
crw------- 1 root root 2, 15 Mar 17 08:59 ptypf
crw-rw-rw- 1 root root 1, 8 Mar 17 08:59 random
crw-rw-r–+ 1 root netdev 10, 242 Mar 17 08:59 rfkill
drwxrwxrwt 2 root root 40 Mar 17 09:31 shm
crw------- 1 root root 10, 231 Mar 17 08:59 snapshot
drwxr-xr-x 3 root root 140 Mar 17 08:59 snd
lrwxrwxrwx 1 root root 15 Aug 7 2022 stderr → /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Aug 7 2022 stdin → /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Aug 7 2022 stdout → /proc/self/fd/1
crw-rw-rw- 1 root tty 5, 0 Mar 17 08:59 tty
crw–w---- 1 root tty 4, 0 Mar 17 08:59 tty0
crw------- 1 carl tty 4, 1 Mar 17 08:59 tty1
crw–w---- 1 root tty 4, 10 Mar 17 08:59 tty10
crw–w---- 1 root tty 4, 11 Mar 17 08:59 tty11
crw–w---- 1 root tty 4, 12 Mar 17 08:59 tty12
crw–w---- 1 root tty 4, 13 Mar 17 08:59 tty13
crw–w---- 1 root tty 4, 14 Mar 17 08:59 tty14
crw–w---- 1 root tty 4, 15 Mar 17 08:59 tty15
crw–w---- 1 root tty 4, 16 Mar 17 08:59 tty16
crw–w---- 1 root tty 4, 17 Mar 17 08:59 tty17
crw–w---- 1 root tty 4, 18 Mar 17 08:59 tty18
crw–w---- 1 root tty 4, 19 Mar 17 08:59 tty19
crw–w---- 1 root tty 4, 2 Mar 17 08:59 tty2
crw–w---- 1 root tty 4, 20 Mar 17 08:59 tty20
crw–w---- 1 root tty 4, 21 Mar 17 08:59 tty21
crw–w---- 1 root tty 4, 22 Mar 17 08:59 tty22
crw–w---- 1 root tty 4, 23 Mar 17 08:59 tty23
crw–w---- 1 root tty 4, 24 Mar 17 08:59 tty24
crw–w---- 1 root tty 4, 25 Mar 17 08:59 tty25
crw–w---- 1 root tty 4, 26 Mar 17 08:59 tty26
crw–w---- 1 root tty 4, 27 Mar 17 08:59 tty27
crw–w---- 1 root tty 4, 28 Mar 17 08:59 tty28
crw–w---- 1 root tty 4, 29 Mar 17 08:59 tty29
crw–w---- 1 root tty 4, 3 Mar 17 08:59 tty3
crw–w---- 1 root tty 4, 30 Mar 17 08:59 tty30
crw–w---- 1 root tty 4, 31 Mar 17 08:59 tty31
crw–w---- 1 root tty 4, 32 Mar 17 08:59 tty32
crw–w---- 1 root tty 4, 33 Mar 17 08:59 tty33
crw–w---- 1 root tty 4, 34 Mar 17 08:59 tty34
crw–w---- 1 root tty 4, 35 Mar 17 08:59 tty35
crw–w---- 1 root tty 4, 36 Mar 17 08:59 tty36
crw–w---- 1 root tty 4, 37 Mar 17 08:59 tty37
crw–w---- 1 root tty 4, 38 Mar 17 08:59 tty38
crw–w---- 1 root tty 4, 39 Mar 17 08:59 tty39
crw–w---- 1 root tty 4, 4 Mar 17 08:59 tty4
crw–w---- 1 root tty 4, 40 Mar 17 08:59 tty40
crw–w---- 1 root tty 4, 41 Mar 17 08:59 tty41
crw–w---- 1 root tty 4, 42 Mar 17 08:59 tty42
crw–w---- 1 root tty 4, 43 Mar 17 08:59 tty43
crw–w---- 1 root tty 4, 44 Mar 17 08:59 tty44
crw–w---- 1 root tty 4, 45 Mar 17 08:59 tty45
crw–w---- 1 root tty 4, 46 Mar 17 08:59 tty46
crw–w---- 1 root tty 4, 47 Mar 17 08:59 tty47
crw–w---- 1 root tty 4, 48 Mar 17 08:59 tty48
crw–w---- 1 root tty 4, 49 Mar 17 08:59 tty49
crw–w---- 1 root tty 4, 5 Mar 17 08:59 tty5
crw–w---- 1 root tty 4, 50 Mar 17 08:59 tty50
crw–w---- 1 root tty 4, 51 Mar 17 08:59 tty51
crw–w---- 1 root tty 4, 52 Mar 17 08:59 tty52
crw–w---- 1 root tty 4, 53 Mar 17 08:59 tty53
crw–w---- 1 root tty 4, 54 Mar 17 08:59 tty54
crw–w---- 1 root tty 4, 55 Mar 17 08:59 tty55
crw–w---- 1 root tty 4, 56 Mar 17 08:59 tty56
crw–w---- 1 root tty 4, 57 Mar 17 08:59 tty57
crw–w---- 1 root tty 4, 58 Mar 17 08:59 tty58
crw–w---- 1 root tty 4, 59 Mar 17 08:59 tty59
crw–w---- 1 root tty 4, 6 Mar 17 08:59 tty6
crw–w---- 1 root tty 4, 60 Mar 17 08:59 tty60
crw–w---- 1 root tty 4, 61 Mar 17 08:59 tty61
crw–w---- 1 root tty 4, 62 Mar 17 08:59 tty62
crw–w---- 1 root tty 4, 63 Mar 17 08:59 tty63
crw–w---- 1 root tty 4, 7 Mar 17 08:59 tty7
crw–w---- 1 root tty 4, 8 Mar 17 08:59 tty8
crw–w---- 1 root tty 4, 9 Mar 17 08:59 tty9
crw–w---- 1 root tty 245, 0 Mar 17 08:59 ttyAML0
crw------- 1 root root 3, 0 Mar 17 08:59 ttyp0
crw------- 1 root root 3, 1 Mar 17 08:59 ttyp1
crw------- 1 root root 3, 2 Mar 17 08:59 ttyp2
crw------- 1 root root 3, 3 Mar 17 08:59 ttyp3
crw------- 1 root root 3, 4 Mar 17 08:59 ttyp4
crw------- 1 root root 3, 5 Mar 17 08:59 ttyp5
crw------- 1 root root 3, 6 Mar 17 08:59 ttyp6
crw------- 1 root root 3, 7 Mar 17 08:59 ttyp7
crw------- 1 root root 3, 8 Mar 17 08:59 ttyp8
crw------- 1 root root 3, 9 Mar 17 08:59 ttyp9
crw------- 1 root root 3, 10 Mar 17 08:59 ttypa
crw------- 1 root root 3, 11 Mar 17 08:59 ttypb
crw------- 1 root root 3, 12 Mar 17 08:59 ttypc
crw------- 1 root root 3, 13 Mar 17 08:59 ttypd
crw------- 1 root root 3, 14 Mar 17 08:59 ttype
crw------- 1 root root 3, 15 Mar 17 08:59 ttypf
crw-rw---- 1 root dialout 4, 64 Mar 17 08:59 ttyS0
crw-rw---- 1 root dialout 4, 65 Mar 17 08:59 ttyS1
crw-rw---- 1 root dialout 4, 66 Mar 17 08:59 ttyS2
crw-rw---- 1 root dialout 4, 67 Mar 17 08:59 ttyS3
crw------- 1 root root 10, 239 Mar 17 08:59 uhid
crw------- 1 root root 10, 223 Mar 17 08:59 uinput
crw-rw-rw- 1 root root 1, 9 Mar 17 08:59 urandom
crw------- 1 root root 10, 240 Mar 17 08:59 userio
drwxr-xr-x 3 root root 60 Mar 17 08:59 v4l
crw-rw---- 1 root tty 7, 0 Mar 17 08:59 vcs
crw-rw---- 1 root tty 7, 1 Mar 17 08:59 vcs1
crw-rw---- 1 root tty 7, 2 Mar 17 08:59 vcs2
crw-rw---- 1 root tty 7, 3 Mar 17 08:59 vcs3
crw-rw---- 1 root tty 7, 4 Mar 17 08:59 vcs4
crw-rw---- 1 root tty 7, 5 Mar 17 08:59 vcs5
crw-rw---- 1 root tty 7, 6 Mar 17 08:59 vcs6
crw-rw---- 1 root tty 7, 128 Mar 17 08:59 vcsa
crw-rw---- 1 root tty 7, 129 Mar 17 08:59 vcsa1
crw-rw---- 1 root tty 7, 130 Mar 17 08:59 vcsa2
crw-rw---- 1 root tty 7, 131 Mar 17 08:59 vcsa3
crw-rw---- 1 root tty 7, 132 Mar 17 08:59 vcsa4
crw-rw---- 1 root tty 7, 133 Mar 17 08:59 vcsa5
crw-rw---- 1 root tty 7, 134 Mar 17 08:59 vcsa6
crw-rw---- 1 root tty 7, 64 Mar 17 08:59 vcsu
crw-rw---- 1 root tty 7, 65 Mar 17 08:59 vcsu1
crw-rw---- 1 root tty 7, 66 Mar 17 08:59 vcsu2
crw-rw---- 1 root tty 7, 67 Mar 17 08:59 vcsu3
crw-rw---- 1 root tty 7, 68 Mar 17 08:59 vcsu4
crw-rw---- 1 root tty 7, 69 Mar 17 08:59 vcsu5
crw-rw---- 1 root tty 7, 70 Mar 17 08:59 vcsu6
drwxr-xr-x 2 root root 60 Dec 31 1969 vfio
crw------- 1 root root 10, 137 Mar 17 08:59 vhci
crw-rw----+ 1 root video 81, 0 Mar 17 08:59 video0
crw------- 1 root root 10, 130 Mar 17 08:59 watchdog
crw------- 1 root root 247, 0 Mar 17 08:59 watchdog0
crw-rw-rw- 1 root root 1, 5 Mar 17 08:59 zero

a diff between those looks like:

diff before2 cur
7c7
< drwxr-xr-x 2 root root 3320 Mar 17 09:14 char

drwxr-xr-x 2 root root 3340 Mar 17 09:16 char
23a24
crw-rw---- 1 root i2c 89, 1 Mar 17 09:16 i2c-1
48c49
< crw-rw-rw- 1 root tty 5, 2 Mar 17 09:15 ptmx


crw-rw-rw- 1 root tty 5, 2 Mar 17 09:40 ptmx
68c69
< drwxrwxrwt 2 root root 40 Aug 7 2022 shm


drwxrwxrwt 2 root root 40 Mar 17 09:31 shm

then i2detect:

$ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: – – – – – – – –
10: – – – – – – – – – – – – – – – –
20: – – – – – – – – – – – – – – – –
30: – – – – – – – – – – – – 3c – – –
40: – – – – – – – – – – – – – – – –
50: – – – – – – – – – – – – – – – –
60: – – – – – – – – – – – – – – – –
70: – – – – – – – –

sudo i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: – – – – – – – –
10: – – – – – – – – – – – – – – – –
20: – – – – – – – – – – – – – – – –
30: 30 – – – – – – – – – – – – – – –
40: – – – – – – – – – – – – – – – –
50: – – – – – – – – – – – – – – – –
60: – – – – – – – – – – – – – – – –
70: – – – – – – – –

The relevant portion of the log file using ttyAML0:

I: 2023-03-17 13:50:32.458 Modem Parameters
I: 2023-03-17 13:50:32.458 Protocol: uart
I: 2023-03-17 13:50:32.458 UART Port: /dev/ttyAML0
I: 2023-03-17 13:50:32.458 UART Speed: 115200
I: 2023-03-17 13:50:32.458 RX Invert: no
I: 2023-03-17 13:50:32.458 TX Invert: yes
I: 2023-03-17 13:50:32.459 PTT Invert: no
I: 2023-03-17 13:50:32.459 TX Delay: 100ms
I: 2023-03-17 13:50:32.459 RX Offset: 0Hz
I: 2023-03-17 13:50:32.459 TX Offset: 0Hz
I: 2023-03-17 13:50:32.459 RX DC Offset: 0
I: 2023-03-17 13:50:32.459 TX DC Offset: 0
I: 2023-03-17 13:50:32.459 RF Level: 100.0%
I: 2023-03-17 13:50:32.459 DMR Delay: 0 (0.0ms)
I: 2023-03-17 13:50:32.459 RX Level: 50.0%
I: 2023-03-17 13:50:32.459 CW Id TX Level: 50.0%

M: 2023-03-17 13:51:53.144 Opening the MMDVM
E: 2023-03-17 13:51:53.144 Cannot open device - /dev/ttyAML0

Using i2c-0 as UART Port:

I: 2023-03-17 13:52:55.811 Modem Parameters
I: 2023-03-17 13:52:55.811 Protocol: uart
I: 2023-03-17 13:52:55.811 UART Port: /dev/i2c-0
I: 2023-03-17 13:52:55.811 UART Speed: 115200
I: 2023-03-17 13:52:55.811 RX Invert: no
I: 2023-03-17 13:52:55.811 TX Invert: yes
I: 2023-03-17 13:52:55.811 PTT Invert: no
I: 2023-03-17 13:52:55.811 TX Delay: 100ms
I: 2023-03-17 13:52:55.811 RX Offset: 0Hz
I: 2023-03-17 13:52:55.811 TX Offset: 0Hz
I: 2023-03-17 13:52:55.811 RX DC Offset: 0
I: 2023-03-17 13:52:55.811 TX DC Offset: 0
I: 2023-03-17 13:52:55.811 RF Level: 100.0%
I: 2023-03-17 13:52:55.811 DMR Delay: 0 (0.0ms)
I: 2023-03-17 13:52:55.811 RX Level: 50.0%
I: 2023-03-17 13:52:55.811 CW Id TX Level: 50.0%
I: 2023-03-17 13:52:55.811 D-Star TX Level: 50.0%
I: 2023-03-17 13:52:55.811 DMR TX Level: 50.0%
I: 2023-03-17 13:52:55.811 YSF TX Level: 50.0%
I: 2023-03-17 13:52:55.811 P25 TX Level: 50.0%
I: 2023-03-17 13:52:55.811 NXDN TX Level: 50.0%
I: 2023-03-17 13:52:55.811 M17 TX Level: 50.0%
I: 2023-03-17 13:52:55.811 POCSAG TX Level: 50.0%
I: 2023-03-17 13:52:55.811 FM TX Level: 50.0%
I: 2023-03-17 13:52:55.811 AX.25 TX Level: 50.0%
I: 2023-03-17 13:52:55.811 TX Frequency: 441000000Hz (441000000Hz)
I: 2023-03-17 13:52:55.811 Use COS as Lockout: no

M: 2023-03-17 13:52:55.813 Opening the MMDVM
E: 2023-03-17 13:52:57.813 Error returned from write(), errno=5

Same using i2c-1:

I: 2023-03-17 13:54:19.251 Modem Parameters
I: 2023-03-17 13:54:19.251 Protocol: uart
I: 2023-03-17 13:54:19.251 UART Port: /dev/i2c-1
I: 2023-03-17 13:54:19.251 UART Speed: 115200
I: 2023-03-17 13:54:19.251 RX Invert: no
I: 2023-03-17 13:54:19.251 TX Invert: yes
I: 2023-03-17 13:54:19.251 PTT Invert: no
I: 2023-03-17 13:54:19.251 TX Delay: 100ms
I: 2023-03-17 13:54:19.251 RX Offset: 0Hz
I: 2023-03-17 13:54:19.251 TX Offset: 0Hz
I: 2023-03-17 13:54:19.251 RX DC Offset: 0
I: 2023-03-17 13:54:19.251 TX DC Offset: 0
I: 2023-03-17 13:54:19.251 RF Level: 100.0%
I: 2023-03-17 13:54:19.251 DMR Delay: 0 (0.0ms)
I: 2023-03-17 13:54:19.251 RX Level: 50.0%
I: 2023-03-17 13:54:19.251 CW Id TX Level: 50.0%
I: 2023-03-17 13:54:19.251 D-Star TX Level: 50.0%
I: 2023-03-17 13:54:19.251 DMR TX Level: 50.0%
I: 2023-03-17 13:54:19.251 YSF TX Level: 50.0%
I: 2023-03-17 13:54:19.251 P25 TX Level: 50.0%
I: 2023-03-17 13:54:19.251 NXDN TX Level: 50.0%
I: 2023-03-17 13:54:19.251 M17 TX Level: 50.0%
I: 2023-03-17 13:54:19.251 POCSAG TX Level: 50.0%
I: 2023-03-17 13:54:19.251 FM TX Level: 50.0%
I: 2023-03-17 13:54:19.251 AX.25 TX Level: 50.0%
I: 2023-03-17 13:54:19.252 TX Frequency: 441000000Hz (441000000Hz)
I: 2023-03-17 13:54:19.252 Use COS as Lockout: no

M: 2023-03-17 13:54:19.252 Opening the MMDVM
E: 2023-03-17 13:54:21.253 Error returned from write(), errno=6

Again, apologies for the length of this post. The time of anyone reading this is worth more than a few beers, but I owe you more than a few just for having helped me already. Stay well, man.

Interesting what the 3C device is under I2C detect? Do you still see it with the hat removed ?

As per original thoughts, there are probably easier solutions such as your interface board, but as an ongoing education then perhaps its worth pursuing for you ?

I would start from the basics you have 2 banks of 5X2 headers on the Hat. You need to find exactly which pins are used for what on the hat. My thinking (that’s seem to tie in with the software) is there’s Vin,GND, an I2C connection, a UART connection and some GPIO.

I would then try to connect the hat using just the VIN,GND,SDA & SCL pins with connector cables after enabling i2c-ao and see if you can see your Hat @ 22 and report back on results.

PS What do you recommend as a Cheap radio to connect to the Hotspot for a beginner ?

I did want to learn more from doing this, but yeah, sometimes the investment in time doesn’t pay off, and this was starting to be more of an Advil moment than it was worth, so I just set it back up with the UART board. That doesn’t even require an overlay, you just plug the intermediary board into the Libre pins like it was the hat, then you plug the actual MMDVM hat into the board, and bingo, /dev/ttyUSB0 is suddenly there. Learning is awesome, but life is too short to play Sisyphus. MMDVMHost, DMRGateway, DAPNETGateway and YSFGateway are all running smoothly, so now, it is all about the presentation. I went with DG9VH’s Websockets interface, and am using AdminLTE to add some new bells and whistles, like a local scaled-down version of Brandmeister’s Halligan. After that, if there is any horsepower left over in this tiny but effective SBC, I’ll stick Grafana on it and grab some space weather data from NOAA, heh. It is digital radio using mostly IRLP type protocols, so weather has practically nothing to do with propagation, but meh, it is still phun :slight_smile:

I have build four hotspots so far, two duplex and two older simplex, and I’d say that if you just want to use DMR, get a simplex board and use whatever spare RasPi or OrangePi or Libre board you have laying around. You can get the MMDVM for about $40 nowadays on Amazon, or half that if you are willing to wait a month to get it from AliExpress. If you have an always-on PC in your environment already, you could just pick up the intermediary board and an MMDVM and run it on a PC. BlueDV runs perfectly fine on Windows, or you could just compile MMDVMHost etc.

For the actual radio, you can certainly get a TYT 380 for well under $100 used. It is a decent radio, and there is an open source firmware project for it, so that opens up some cool possibilities. I had the “big brother” of the 380, the MD 2017, but I sorta outgrew it and gifted it to a friend when he got his tech license. If you are willing to spend a little more dough to get one of the better models, get the Anytone 878. They are about $250-$300 used, but they are stellar radios for the money. And that is still half what you would pay for one of the “big three” (Kenwood Icom and Yaesu) handheld digitals.

DMR and the other similar digital modes are really amazing, but for me personally, it is about the technology. You are using a global series of RF repeaters and IP routers to talk around the world with a few watts, and that is just jaw-dropping to me. But it is about the tech, I can’t even recall the last time I had a real conversation on DMR, lol. HF is more suited for that, IMHO.

So anyway, the TLDR is that you can set yourself with a really nice digital DMR setup for maybe $300, or with a perfectly functional one for half that. Just for the love of cripes, don’t buy a hotspot off the shelf. Some of those shiny proprietary gadgets will set you back upwards of $300, and they are no more powerful than what you can build in an afternoon with a Pi Zero, a MMDVM board and a few hours of time. It is mind blowing what folks will pay for things we don’t need. :slight_smile:

Thanks again for all the help. If you are just getting into ham, then welcome to the most fun that you can have with your clothes on!