What's new
Van's Air Force

Don't miss anything! Register now for full access to the definitive RV support community.

SL30 Protocol

FinnFlyer

Well Known Member
Haven't found a way to get a copy of the Microair M760Q Frequency Compiler software, so decided to write my own program.

Can anyone point me to the specs for the Garmin SL30 comm protocol?
(not the serial port settings, the command and data formats)

Finn
 
Could use help from someone that knows these protocols......

I got a radio/tuner head combo complete with a professionally made wiring bundle so I can hopefully rule out some sources of error... (My ultimate goal is to roll my own remote head).

So through a MAX3232 chip, this is what I can see on the RS-232 circuit off my tuner head. (The tuner-radio connection is made via CAN ) I combed through the aforementioned documentation but there appears to be a difference between the documentation examples and what I am observing.

1. Is there a more thorough (practical) reference than the typical manual "appendixes"

2. Any suggestions with what is wrong with this code/what I'm missing/ better methods is appreciated!
 

Attachments

  • Signal.png
    Signal.png
    45.8 KB · Views: 67
I got a radio/tuner head combo complete with a professionally made wiring bundle so I can hopefully rule out some sources of error... (My ultimate goal is to roll my own remote head).

So through a MAX3232 chip, this is what I can see on the RS-232 circuit off my tuner head. (The tuner-radio connection is made via CAN ) I combed through the aforementioned documentation but there appears to be a difference between the documentation examples and what I am observing.

1. Is there a more thorough (practical) reference than the typical manual "appendixes"

2. Any suggestions with what is wrong with this code/what I'm missing/ better methods is appreciated!

The code and output look fine to me -- the unit is just idling and returning a response to the last command (or default power up response) that was sent to it.

Did you write any code to send a command to the radio?
 
At my wits end with getting anything to write to the RS-232 line

Did you write any code to send a command to the radio?

I did try to send a known "example message" without success. It is quite possible I am making a syntax error as I am very new to working with this protocol.

*Looks* like everything working in "read only" mode, however. Though I will have to translate the data.

Oscilloscope is showing +/-6V pulses on the RS-232 to the Max3232" wire and 0V from the Max3232 to RS-232 even when trying to send. Have 2 open serials in an attempt prevent messages from stepping on each other - Also tried every combination of shared ground/floating between equipment/Max3232/Arduino... .

If you see something obvious, let me know! As an aside, the bench tests of the actual comm system are working perfectly fine- just having trouble figuring out why my interfacing to the RS-232 is unidirectional.
 

Attachments

  • Signal2.png
    Signal2.png
    130.7 KB · Views: 56
<CR> in string is wrong, should be \r\n

Or could remove it and do this before your write delay:
serial.write(13);
serial.write(10);

chksum appears to be incorrect.
 
Last edited:
Bob's right of course. I'd also do readcommnetwork() differently - with a while loop, since you might not get all the data in one read.
 
Issue appears almost solved....

Thanks for the input!

Update: A couple issues solved- main one being that the order that power is applied to which device appears to have a significant effect on the conversion chip performance(I will buy some with a different breakout board). Now I am seeing +8/-8V on the RS-232 when the transmit pin is grounded.:)

This makes me believe that the final issue is that whatever is being transmitted, is not understood by the radio head. In other words, I think the problem is with the line of code below (which may contain some rookie mistakes)

RS232serial.write("$PMMRC00G4N29\r\n");

I tried RS232serial.print, also adding ,DEC, HEX, BIN, OCT. Also tried declaring it as a byte, String, char, and placing the variable in the command instead.



<CR> in string is wrong, should be \r\n

Or could remove it and do this before your write delay:
serial.write(13);
serial.write(10);

chksum appears to be incorrect.

Thanks- I corrected <cr>

FWIW this code also sends *something* to the RS232 (according to the oscilloscope), but the expected frequency change is not occuring:
(RS232serial.write(uplink),13);delay(100);


Bob's right of course. I'd also do readcommnetwork() differently - with a while loop, since you might not get all the data in one read.

Thanks, I noted that rather than spitting out scrambled characters on Serial1 while transmitting on Serial2, the "status messages" seem to get buffered and as soon as I am done with the transmit, the missing messages show up without any scrambling almost every time now. :)
 
You arent calculating and setting the sending chksum. The radio ignores the the message as the chksum is incorrect. Its all in the SL30 protocol spec.
 
Thanks for the help!

You arent calculating and setting the sending chksum. The radio ignores the the message as the chksum is incorrect. Its all in the SL30 protocol spec.

The checksum is part of the example message(thankfully, as I have to learn how to apply that concept in addition to writing something to translate to human readable numbers back and forth)

Needed a fresh set of eyes to spot the typo- made the change from $PMMRC to $PMRRC. Tried 2 different example codes from the Arduino, both frequency changes(active and standby) worked perfectly.

From here, it is just a matter of tedium to get the rest I think... :)
 
Back
Top