Skip to main content
A Mark Parker project — see more at markparker.me Did this solve your problem? If it saved your time, you owe me a coffee

rpi-networking

Control wifi, hotspot and hostname of Raspberry Pi

Requirments

Python3.10+

Installation

Using pip:

pip3 install rpi-networking 

Using poetry

poetry add rpi-networking

Prepare system

Automatically

Via curl

sh -c "$(curl -fsSL https://raw.githubusercontent.com/MarkParker5/rpi-networking/master/setup.sh)"

Or via wget

sh -c "$(wget https://raw.githubusercontent.com/MarkParker5/rpi-networking/master/setup.sh -O -)"

Manually

Dependencies

sudo apt update ; \
sudo apt upgrade -y ; \
sudo apt install dnsmasq hostapd dhcpd -y

Give permissions to edit configuration files (optional)

Give user permission to edit configuration files so python doesn't have to be run as root (sudo)

files=(
  "/etc/dnsmasq.conf"
  "/etc/hosts"
  "/etc/default/hostapd"
  "/etc/hostapd/hostapd.conf"
  "/etc/network/interfaces"
  "/etc/network/interfaces.d"
  "/etc/wpa_supplicant/wpa_supplicant.conf"
)

for file in "${files[@]}"; do
  sudo chown "$USER" "$file"
  sudo chmod 644 "$file"
done;

Docs

Configuration

There are functions for initial configuration setup.

# rpi_networking.configuraion

def write_interfaces():

def write_default_hostapd():

def write_hostapd_conf():

def write_dnsmasq_conf():

def write_wpa_supplicant(country: str = "GB"):

def write_hosts():

def write_all(): # calls all functions above

In most cases you only need to call write_all() once to setup all configuration files.

Hostname

# rpi_networking.hostname

def set_hostname(hostname: str):
    
def restart_interfaces():  # apply new hostname without reboot

Hotspot

# rpi_networking.hotspot

def is_hotspot_up() -> bool:

def start_hotspot() -> bool:
    
def stop_hotspot() -> bool:

The bool return value is True if function finished without errors (exit code 0), else False

Status

# rpi_networking.status

def is_wlan_connected() -> bool:

def is_eth_connected() -> bool:

def is_wlan_global_connected() -> bool: # 'global' means internet access

def is_eth_global_connected() -> bool:

def is_wps_running() -> bool:

WiFi

# rpi_networking.wifi

country: str = 'GB' # country code for wpa_supplicant

class InterfaceBusyException(Exception): 
    pass

class Cell:
    ssid: str
    quality: float
    frequency: str
    encrypted: bool

class Network:
    ssid: str
    psk: str
    id_str: str

# Functions

def read_networks() -> list[Network]:

def write_networks(networks: list[Network]):

def add_network(ssid: str, psk: str):

def reconnect() -> bool: # connect to the best available network

def scan() -> Generator[Cell, None, None]:

def start_wps() -> bool:

Download files

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

Source Distribution

rpi_networking-0.1.10.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

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

rpi_networking-0.1.10-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file rpi_networking-0.1.10.tar.gz.

File metadata

  • Download URL: rpi_networking-0.1.10.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rpi_networking-0.1.10.tar.gz
Algorithm Hash digest
SHA256 8cc66c862ea25ed4f81a2f7def0faad238d6e534290e63f485a8a7bd009c3c34
MD5 f87a3a6f82a1e83ac9fb045eacc97b02
BLAKE2b-256 275d4c5cc3935a3921ab9fda13ea7586bbf4d68227cbdec738a5c94e523de877

See more details on using hashes here.

File details

Details for the file rpi_networking-0.1.10-py3-none-any.whl.

File metadata

File hashes

Hashes for rpi_networking-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 5945337a39d111e9645f2d54648ec55d38f22591835844c02f3e75ff6110c50e
MD5 a7f5378d41f55d71e2789fba6f1db6d7
BLAKE2b-256 546e1142b91bfc8c1261cdcc6e28b777cf3d02e5bcf183b6acc069048679f97e

See more details on using hashes here.

Supported by

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