miri_fm(1)

✨ miri_fm ✨

okay so bestie, you know miri_fm(1) from the User Commands corner of the manual? yeah. this is that. a whole lil program, and honestly? she's iconic. πŸ’…


🌸 NAME 🌸

miri_fm β€” a simple narrow band FM demodulator for Mirics based receivers πŸŽ€


πŸ¦‹ DESCRIPTION πŸ¦‹

So basically: this is software for the Mirics MSi2500 + MSi001 SDR platform. ✨

And the lore? The reason she exists at all? People literally could not do real time FM demod on Atom hardware with GNU radio based on rtl_sdr.c and rtl_tcp.c. So she got written. main character energy, no cap. πŸ‘‘


πŸ’œ USAGE πŸ’œ

This program captures information from a band of frequencies and outputs the data in a form useful to other software radio programs. that's the whole vibe, that's the whole job 🫢


⭐ SYNOPSIS ⭐

miri_fm [-f freq] [OPTIONS] [output file]

πŸ’– OPTIONS πŸ’–

  • -f frequency_to_tune_to [Hz] β€” pick the frequency, bestie. in Hertz.
    • use multiple -f for scanning (requires squelch) πŸ‘€
    • ranges supported, like -f 118M:137M:25k
  • -M modulation (default: fm) β€” choose your modulation flavor
    • fm, wbfm, raw, am, usb, lsb
    • wbfm == -M fm -s 170k -o 4 -A fast -r 32k -l 0 -E deemp (it's literally just a shortcut, slay)
    • raw mode outputs 2x16 bit IQ pairs
  • -s sample_rate (default: 24 kHz) β€” the sample rate, she's giving 24 kHz by default ✨
  • -d device_index (default: 0) β€” which device, index style
  • -T device_type device variant (default: 0) β€” tell her what kind of device you got
    • 0: Default
    • 1: SDRPlay
  • -g tuner_gain (default: automatic) β€” gain, and by default she's just gonna figure it out herself
  • -m sample format (default: auto) β€” the format of the samples, and yes these numbers matter
    • 504: S8 (fastest) πŸ”₯
    • 384: S10 +2bits
    • 252: S14
  • -e USB transfer mode (default: 1) β€” how the USB does its thing
    • 1: Isochronous (maximum 196.608 Mbit/s)
    • 2: Bulk (maximum 333Mbit/s, depends on controller type)
  • -i IF mode (default: ZERO) β€” intermediate frequency mode, pick your poison
    • 0: ZERO
    • 450000: 450 kHz
    • 1620000: 1620kHz
    • 2048000: 2048kHz
  • -w BW mode (default: 8MHz) β€” bandwidth mode, so many choices omg
    • 200000: 200kHz
    • 300000: 300kHz
    • 600000: 600kHz
    • 1536000: 1536kHz
    • 5000000: 5MHz
    • 6000000: 6MHz
    • 7000000: 7MHz
    • 8000000: 8MHz
  • -l squelch_level (default: 0/off) β€” squelch level, off unless you say otherwise
  • -o oversampling (default: 1, 4 recommended) β€” bestie, they literally recommend 4. just saying. πŸ’…
  • -p ppm_error (default: 0) β€” your ppm error, fix that clock drift
  • -E enable_option (default: none) β€” turn stuff on
    • use multiple -E to enable multiple options (stack 'em, queen)
    • edge: enable lower edge tuning
    • dc: enable dc blocking filter
    • deemp: enable de-emphasis filter
    • direct: enable direct sampling
    • offset: enable offset tuning
  • filename ('-' means stdout) β€” where the output goes
    • omitting the filename also uses stdout 🫢

🧚 EXPERIMENTAL OPTIONS 🧚

these ones are literally labeled experimental. proceed with the cute caution energy. πŸ™ˆ
  • -r resample_rate (default: none / same as -s) β€” resample rate, defaults to whatever -s is
  • -t squelch_delay (default: 10) β€” squelch delay
    • +values will mute/scan, -values will exit ⚠️ (yes the sign changes the whole behaviour, pay attention bestie)
  • -F fir_size (default: off) β€” enables low-leakage downsample filter
    • size can be 0 or 9. 0 has bad roll off 😭
  • -A std/fast/lut choose atan math (default: std) β€” pick how you wanna do your atan math

🌈 EXAMPLES 🌈

Produces signed 16 bit ints, use Sox or aplay to hear them. ✨

miri_fm ... | play -t raw -r 24k -es -b 16 -c 1 -V1 -
            | aplay -r 24k -f S16_LE -t raw -c 1
  • -M wbfm | play -r 32k ...
  • -s 22050 | multimon -t raw /dev/stdin
If the device can't be opened, make sure you have the appropriate rights to access the device (install udev-rules from the repository, or run it as root). 🫑

πŸ‘‘ SEE ALSO πŸ‘‘

miri_sdr(1)


πŸŽ€ AUTHOR πŸŽ€

This manual page was written by Maitland Bottoms for the Debian project (but may be used by others). πŸ’–


Copyright (c) 2023 A. Maitland Bottoms <bottoms@debian.org>

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.


okay that's the whole page bestie, and the vibe check at the very bottom is: MiriSDR version 2.0.0, filed under miri_fm(1). go demodulate something, you absolute icon πŸŒΈπŸ’…βœ¨

πŸ“¦ where this page comes from