Skip to main content

Python library and command line tool to get Information about a Radio Frequency

Project description

rf-info

https://img.shields.io/github/v/release/cosmicc/rf_info.svg?include_prereleases https://img.shields.io/pypi/v/rf_info.svg https://img.shields.io/github/license/cosmicc/rf_info.svg https://coveralls.io/repos/github/cosmicc/rf_info/badge.svg?branch=master https://github.com/cosmicc/rf_info/actions/workflows/ci.yml/badge.svg Documentation Status

Command line & Python library for obtaining details about a radio frequency

  • Free software: MIT license

  • Documentation: https://rf-info.readthedocs.io.

  • Python 3.10 through 3.14 tested. Not compatible with Python 2.x

  • Linux & Windows with color, json output, and interactive terminal support

Features

Returns information about a radio frequency.

  • “Radio Display” format (Dotted notaton)

  • hz, khz, Mhz and Ghz representations of the frequency

  • Frequency Wavelength

  • ITU Band Description

  • ITU Band Abbreviation

  • ITU Band Number

  • ISM Band Type & Description

  • IEEE Band Name

  • NATO Band Name

  • Waveguide Band Name

  • Microwave Band Name & Description

  • Fixed Station & Mobile Station Designations

  • IEEE Primary Band Allocations

  • IEEE Secondary Band Allocations

  • Detailed IEEE footnotes for each band allocation

  • Active, unknown, deep-space, weather, and upcoming satellite frequency records from the JE9PEL list (1,309 indexed records as of 2026-04-26)

  • Amateur Radio Modes, License Class, Max Power (US Only)

  • Broadcasting Band Number & Details (US Only)

  • Wi-Fi Frequency Details, including 6 GHz Wi-Fi 6E/7 ranges (US Only)

  • Other Services CB, GMRS, Aircraft Band, Etc (US Only)

Currently supported band allocations for countries: United States (US), Canada (CA), Brazil (BR), Spain (ES), United Kingdom (GB), Russian Federation (RU), Ukraine (UA), Japan (JP), India (IN), Korea, Republic of (KR), Thailand (TH), Switzerland (CH), Chile (CL), Denmark (DK), Finland (FI), France (FR), Hungary (HU), Indonesia (ID), Iceland (IS), Italy (IT), Mexico (MX), Netherlands (NL), New Zealand (NZ), Norway (NO), Poland (PL), South Africa (ZA), Sweden (SE), Venezuela (VE), Australia (AU), Slovenia (SI), Ireland (IE), Belgium (BE), Austria (AT), Argentina (AR), Israel (IL), Romania (RO), China (CN), Uruguay (UY), Greece (GR), Panama (PA), Peru (PE)

I can easily add support for more countries upon request

Includes man pages and texinfo documentation

Data Sources

Satellite data is generated from the JE9PEL satellite list. US Wi-Fi, 5.9 GHz ITS/C-V2X, mobile broadband, and broadcast TV ranges are aligned with current FCC/eCFR band definitions. International allocation tables are stored by ITU region and can be regenerated from CSV exports with tools/parse_allocations.py.

Install

$ pip install rf-info

Command Line Usage

$ rf-info <frequency> [<units>] [<country>]

Frequency format examples:

$ rf-info 89910000
$ rf-info 23,450,000
$ rf-info 12,634.534
$ rf-info 12_000_000
$ rf-info 344_500.100

Also supports “Radio Display” frequency representation (Dotted notation):

$ rf-info 124.125.000
$ rf-info 1.500.125.000
$ rf-info 000.012.500

Unit examples: hz, khz, Mhz, Ghz (Case Insensitive):

$ rf-info 123.100 mhz
$ rf-info 4.5 ghz

Country examples (2 digit abbriviation, 3 digit abbriviation, 3 digit number, or full name) US, USA, 040, JPN, Spain (Case Insensitive):

$ rf-info 144.400.000 hz US
$ rf-info 88 mhz JPN

Python Library Usage

>>> from rf_info import Frequency
>>> freq = Frequency('144.890.000')
>>> freq.details()

Returns a dictionary with normalized fields:

>>> details = freq.details()
>>> details['display']
'144.890.000'
>>> details['amateur']['details']
({'modes': 'CW, Phone, Image, RTTY/Data', 'license': 'Tech, General, Extra', 'power': 'MAX'}, {'modes': 'FM repeater inputs', 'license': 'Tech, General, Extra', 'power': 'MAX'})
>>> details['ieee_allocation']['primary']
('Amateur', 'Amateur-Satellite')

Or you can get individual items directly:

>>> freq.itu
>>> freq.itu['band']
>>> freq.wavelength
>>> freq.ieee_allocation['primary']

Also supports adding and subtracting frequencies. Either a frequency object, int, or string representation of a frequency, returns a new frequency object:

>>> new_freq_object = Frequency('001.123.000') + Frequency('7', 'khz')  # Adds 7 khz to 1.123 mhz
>>> new_freq_object = Frequency('1', 'mhz') + 15000  # Adds 15 khz to 1 mhz
>>> new_freq_object = Frequency('123,000') - '000.007.000'  # Subtracts 7 khz from 123 khz

Output Example

$ rf-info 435.890.000 hz US

 Display: 435.890.000
 Hz: 435,890,000
 Khz: 435,890
 Mhz: 435.89
 Ghz: 0.43589
 Wavelength: 68cm
 ITU Band: 9 - UHF (Ultra High Frequency)
 IEEE Band: UHF (Ultra High Frequency)
 NATO Band: B
 Waveguide Band: None
 Microwave Band: None
 Country: United States of America (US)
 Broadcasting: False
 Wifi: False
 Amateur: True
   Modes: Satellite only uplink/downlink
   License: Tech, General, Extra
   Power: MAX
 Satellite: True
   Name: JAS-2 (FO-29) [24278]
   Link: Downlink
   Modes: SSB CW (DigiTalker)
   Status: Active
 Fixed Station: False
 Mobile Station: False
 Primary Allocation:
   - Radiolocation
 Secondary Allocation:
   - Amateur
   - Earth Exploration-Satellite (Active) [5.279A]
 Allocation Notes:
   - [5.279A]: The use of the frequency band 432-438 MHz by sensors in the Earth exploration-satellite service (active) shall be in accordance with Recommendation ITU-R RS.1260-1. Additionally, the Earth exploration-satellite service (active) in the frequency band 432-438 MHz shall not cause harmful interference to the aeronautical radionavigation service in China. The provisions of this footnote in no way diminish the obligation of the Earth exploration-satellite service (active) to operate as a secondary service in accordance with Nos. 5.29 and 5.30. (WRC-15)

Todo

  • Keep ITU/FCC allocation data synced with current regulatory publications

Credits

M. Ian Perry (ianperry99@gmail.com) AD8DL

History

0.9.2 (2026-04-27)

  • Expanded parser, range lookup, CLI output, and frequency arithmetic test coverage.

0.9.1 (2026-04-26)

  • Added GitHub Actions publishing support for PyPI releases.

0.9.0 (2026-04-26)

  • Fixed overlapping frequency-range lookups so duplicate allocations and satellite records are preserved.

  • Refreshed satellite records from the current JE9PEL list and updated US Wi-Fi, broadcast TV, mobile broadband, C-V2X, and GPS service data.

  • Modernized Python packaging, dependency metadata, CI, and developer tooling.

  • Hardened data update scripts and fixed CLI parsing, country handling, and frequency display edge cases.

0.7.1b (2020-01-23)

  • First Stable Pre-release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rf_info-0.9.2.tar.gz (254.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rf_info-0.9.2-py3-none-any.whl (244.0 kB view details)

Uploaded Python 3

File details

Details for the file rf_info-0.9.2.tar.gz.

File metadata

  • Download URL: rf_info-0.9.2.tar.gz
  • Upload date:
  • Size: 254.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rf_info-0.9.2.tar.gz
Algorithm Hash digest
SHA256 f98342cc601cb52c40515c9597f9645061251e7556418a9ee5b4f8279d56522b
MD5 538e5dd110e2f369f27a419c69a4b727
BLAKE2b-256 3750ffab605c56371eab56abbe70183fccbe0fb9e327b8b147f126120e653ed2

See more details on using hashes here.

Provenance

The following attestation bundles were made for rf_info-0.9.2.tar.gz:

Publisher: publish.yml on cosmicc/rf_info

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rf_info-0.9.2-py3-none-any.whl.

File metadata

  • Download URL: rf_info-0.9.2-py3-none-any.whl
  • Upload date:
  • Size: 244.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rf_info-0.9.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e029151fbd8c82f4ffc74e810a0d7a0b08fd9bb64b2824d891300deb16acfe15
MD5 af4bfeec96f61f30b6672d2c1c29bf1f
BLAKE2b-256 52991ebe4fa37565221e26fe41af5cc5d60685296a52a5a95b78c455c2880e2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for rf_info-0.9.2-py3-none-any.whl:

Publisher: publish.yml on cosmicc/rf_info

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page