df8oe / RS41HUP

RS41HUP - Firmware for Vaisala's RS41 for Amateur Radio use
GNU General Public License v2.0
43 stars 15 forks source link

APRS modulation #13

Open iddq opened 4 years ago

iddq commented 4 years ago

Hello,

What modulation is supported by this firmware for APRS?

df8oe commented 4 years ago

it is NFM.

iddq commented 4 years ago

Sorry, I mean is it standard AFSK 1200/2200, bell 202?

df8oe commented 4 years ago

Yes - it is standard and can be decoded out-of-the-box with software like direwolf.

iddq commented 4 years ago

I don't find AFSK as supported modulation in Si4030/31/32-B1 datasheet this is why my question is how can it work?

mikaelnousiainen commented 4 years ago

I've done some tinkering on the RS41 firmware (will probably publish my experiments in a few weeks) and Si4032 seems to support a certain type of FSK, where one can define two frequencies (on a 625 Hz granularity IIRC) that can be toggled by a register change. Because of the granularity, this mechanism cannot be directly used to generate Bell 202 tones.

The way Bell 202 AFSK is implemented for Si4032 is kind of a hack, where the code toggles these two frequencies at a rate of 1200 and 2200 Hz, which produces the two Bell 202 tones even though the actual frequencies are something else.

Additionally, the timing of 1200/2200 Hz is done by using experimentally determined delays (and by disabling all interrupts, so they won't interfere with the timings).

I attempted to implement Bell 202 frequency generation using DMA / Timers, but have failed to generate correct frequencies that other APRS equipment are able to decode.

df8oe commented 4 years ago

I have not written the APRS code block - it worked perfectly as I forked the project so there was no need to think about anything. You know RTTY is also implemented and it HAS FSK and works, too. So this code block is "finished" for me. Next I want to implement is to get informations from the sensors - but that is not as easy.

z3r0l1nk commented 4 years ago

I've done some tinkering on the RS41 firmware (will probably publish my experiments in a few weeks) and Si4032 seems to support a certain type of FSK, where one can define two frequencies (on a 625 Hz granularity IIRC) that can be toggled by a register change. Because of the granularity, this mechanism cannot be directly used to generate Bell 202 tones.

The way Bell 202 AFSK is implemented for Si4032 is kind of a hack, where the code toggles these two frequencies at a rate of 1200 and 2200 Hz, which produces the two Bell 202 tones even though the actual frequencies are something else.

Additionally, the timing of 1200/2200 Hz is done by using experimentally determined delays (and by disabling all interrupts, so they won't interfere with the timings).

I attempted to implement Bell 202 frequency generation using DMA / Timers, but have failed to generate correct frequencies that other APRS equipment are able to decode.

Hi, Any progress with the experiment? :-)

mikaelnousiainen commented 4 years ago

@z3r0l1nk I've published my (mostly undocumented and partially broken) code here: https://github.com/mikaelnousiainen/RS41ng -- I'll probably try to finish the Si5351-based parts by writing the scheduling code that uses GPS to trigger digital mode beacons (e.g. WSPR / FT8) at correct times. DMA/Timer-based APRS is broken because of the timing issues I described above, so anyone is welcome to take a look and see what could be causing the issues...