Dan Porter (AI2M)

Hi Anna,

I noticed several recent GitHub updates. Am I missing something obvious or are there still some things to be worked out?

When I start MMDVM-UDRC it appears ok…

pi@udrc:~/MMDVM-UDRC $ sudo ./MMDVM
Virtual pty: /dev/pts/2 <> /dev/ttyMMDVM0
Opened hw:CARD=udrc,DEV=0 hw:CARD=udrc,DEV=0 Rate 48000

But MMDVMHost fails like this:

pi@udrc:~/MMDVMHost $ sudo ./MMDVMHost MMDVM.ini
I: 2018-12-29 19:38:11.296 This software is for use on amateur radio 
networks only,
I: 2018-12-29 19:38:11.297 it is to be used for educational purposes 
only. Its use on
I: 2018-12-29 19:38:11.297 commercial networks is strictly prohibited.
I: 2018-12-29 19:38:11.297 Copyright(C) 2015-2018 by Jonathan Naylor, 
G4KLX and others
M: 2018-12-29 19:38:11.297 MMDVMHost-20180916 is starting
M: 2018-12-29 19:38:11.297 Built 11:47:45 Dec 29 2018 (GitID #5de3bee)
I: 2018-12-29 19:38:11.298 General Parameters
I: 2018-12-29 19:38:11.298     Callsign: AI2M
I: 2018-12-29 19:38:11.298     Id: xxxxxxx04
I: 2018-12-29 19:38:11.298     Duplex: no
I: 2018-12-29 19:38:11.298     Timeout: 180s
I: 2018-12-29 19:38:11.298     D-Star: enabled
I: 2018-12-29 19:38:11.299     DMR: disabled
I: 2018-12-29 19:38:11.299     YSF: disabled
I: 2018-12-29 19:38:11.299     P25: disabled
I: 2018-12-29 19:38:11.299     NXDN: disabled
I: 2018-12-29 19:38:11.299     POCSAG: disabled
I: 2018-12-29 19:38:11.299 Modem Parameters
I: 2018-12-29 19:38:11.300     Port: /dev/ttyMMDVM0
I: 2018-12-29 19:38:11.300     Protocol: uart
I: 2018-12-29 19:38:11.300     RX Invert: no
I: 2018-12-29 19:38:11.300     TX Invert: yes
I: 2018-12-29 19:38:11.300     PTT Invert: no
I: 2018-12-29 19:38:11.300     TX Delay: 100ms
I: 2018-12-29 19:38:11.300     RX Offset: 0Hz
I: 2018-12-29 19:38:11.301     TX Offset: 0Hz
I: 2018-12-29 19:38:11.301     RX DC Offset: 0
I: 2018-12-29 19:38:11.301     TX DC Offset: 0
I: 2018-12-29 19:38:11.301     RF Level: 100.0%
I: 2018-12-29 19:38:11.301     DMR Delay: 0 (0.0ms)
I: 2018-12-29 19:38:11.301     RX Level: 50.0%
I: 2018-12-29 19:38:11.301     CW Id TX Level: 50.0%
I: 2018-12-29 19:38:11.301     D-Star TX Level: 50.0%
I: 2018-12-29 19:38:11.301     DMR TX Level: 50.0%
I: 2018-12-29 19:38:11.302     YSF TX Level: 50.0%
I: 2018-12-29 19:38:11.302     P25 TX Level: 50.0%
I: 2018-12-29 19:38:11.302     NXDN TX Level: 50.0%
I: 2018-12-29 19:38:11.302     POCSAG TX Level: 50.0%
I: 2018-12-29 19:38:11.302     RX Frequency: 145650000Hz (145650000Hz)
I: 2018-12-29 19:38:11.302     TX Frequency: 146650000Hz (146650000Hz)
M: 2018-12-29 19:38:11.303 Opening the MMDVM
E: 2018-12-29 19:38:11.303 Cannot get the control attributes for 

Followed by this in MMDVM-UDRC:

Slave disconnected, reopening master
Virtual pty: /dev/pts/2 <> /dev/ttyMMDVM0

This is on a working DStarRepeater system with the dstarrepeaterd service disabled.

I’m just fooling around with it in my spare time out of curiosity. I don’t have a real need for it otherwise.

I’ll admit I don’t understand the Pseudo TTY part very well.

Thanks, Dan - AI2M

On 7 Dec 2018, at 1:01, Annaliese McDermond wrote:

Dan --

Because I’m trying to get my repeater up and running again, and would like to use MMDVM-UDRC to do so, I’ve been doing some work on getting MMDVM-UDRC to work. My code is in the nwdigitalradio github account at:

You’re welcome to play with it with the understanding that it’s development code, may not work at all. I’m getting close to having things possibly working acceptably.

An issue you’ll have to deal with is that mmdvm-udrc expects a 24000 sample rate. The UDRC hardware doesn’t support this and if you try to use hw:CARD=udrc,DEV=0 it will fail complaining on not being able to send sample rate. You might try using plughw:CARD=udrc,DEV=0 instead. I’m using a custom asound.conf to support it.

More as I get things worked out.

-- Annaliese McDermond (NH6Z) nh6z@...

On Dec 6, 2018, at 4:51 AM, Dan Porter (AI2M) groups@... wrote:

Hi Rich,

Did you eventually manage to get it working? I was thinking of trying again with my UDRC.

73, Dan - AI2M

On Jul 6, 2018, at 3:05 PM, Rich KR4PI rich.schnieders@... wrote:

Thanks John, that helped but there were still a few errors along the way:

g++ -g -O3 -Wall -std=c++0x -pthread -c -o Biquad.o Biquad.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o CalDMR.o CalDMR.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o CalDStarRX.o CalDStarRX.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o CalDStarTX.o CalDStarTX.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o CalNXDN.o CalNXDN.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o CalP25.o CalP25.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o CWIdTX.o CWIdTX.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o DMRDMORX.o DMRDMORX.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o DMRDMOTX.o DMRDMOTX.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o DMRSlotType.o DMRSlotType.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o DStarRX.o DStarRX.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o DStarTX.o DStarTX.cpp DStarTX.cpp: In member function ‘void CDStarTX::txHeader(const uint8_t, uint8_t) const’: DStarTX.cpp:382:7: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation] if (d & 0x08U) ^~ DStarTX.cpp:384:9: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘if’ i++; ^ g++ -g -O3 -Wall -std=c++0x -pthread -c -o FIR.o FIR.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o FIRInterpolator.o FIRInterpolator.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o IO.o IO.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o IOUDRC.o IOUDRC.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o MMDVM.o MMDVM.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o NXDNRX.o NXDNRX.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o NXDNTX.o NXDNTX.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o P25RX.o P25RX.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o P25TX.o P25TX.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o POCSAGTX.o POCSAGTX.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o SampleRB.o SampleRB.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o SerialController.o SerialController.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o SerialPort.o SerialPort.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o SerialRB.o SerialRB.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o SoundCardReaderWriter.o SoundCardReaderWriter.cpp SoundCardReaderWriter.cpp: In member function ‘virtual void CSoundCardWriter::entry()’: SoundCardReaderWriter.cpp:479:85: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] le ((ret = ::snd_pcm_writei(m_handle, m_samples + offset, nSamples - offset)) != (nSamples - offset)) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~ g++ -g -O3 -Wall -std=c++0x -pthread -c -o Thread.o Thread.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o Utils.o Utils.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o YSFRX.o YSFRX.cpp g++ -g -O3 -Wall -std=c++0x -pthread -c -o YSFTX.o YSFTX.cpp g++ Biquad.o CalDMR.o CalDStarRX.o CalDStarTX.o CalNXDN.o CalP25.o CWIdTX.o DMRDMORX.o DMRDMOTX.o DMRSlotType.o DStarRX.o DStarTX.o FIR.o FIRInterpolator.o IO.o IOUDRC.o MMDVM.o NXDNRX.o NXDNTX.o P25RX.o P25TX.o POCSAGTX.o SampleRB.o SerialController.o SerialPort.o SerialRB.o SoundCardReaderWriter.o Thread.o Utils.o YSFRX.o YSFTX.o -g -lpthread -lasound -lwiringPi -o MMDVM

it did complete the compile. When I attempt ./MMDVM is receive the following:

Link does not exist: /dev/pts/1 <> ttyMMDVM0 Error creating symlink from /dev/pts/1 to ttyMMDVM0 Unable to open serial port on vpty: ttyMMDVM0

I am assuming this indicates that it is not properly configured for the UDRC. That is what I will be exploring next.

Thanks for the help Rich, KR4PI

Join to automatically receive all group messages.