Sony Camera IP Setup
Unofficial RM-IP Setup alternative for macOS and Linux.
Discover Sony SRG/BRC PTZ cameras on the LAN and set their IP address, subnet mask, gateway, and name. This is a Python implementation of Sony's Camera IP Setting Command — the same UDP protocol used by the Windows-only RM-IP Setup Tool. It is not affiliated with Sony.
The command-line tool is installed as sony-camera-ip-setup.
Why
Sony's official tool is Windows-only. The cameras themselves speak a UDP broadcast protocol on port 52380, so a small Python CLI is enough.
Install
Python 3.9 or newer is required. No third-party packages are needed.
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
After that the sony-camera-ip-setup command is available.
You can also run the module without installing:
PYTHONPATH=src python3 -m sony_camera_ip_setup discover
Usage
List cameras:
sony-camera-ip-setup discover
Change IP address, mask, gateway, and/or name:
sony-camera-ip-setup set --mac AA-BB-CC-DD-EE-FF --ip 192.168.42.52 --mask 255.255.255.0 --gateway 192.168.42.1 --name CAM1
If you only want to rename a camera, pass its current IP as --ip and add --name:
sony-camera-ip-setup set --mac AA-BB-CC-DD-EE-FF --ip 192.168.0.100 --name STUDIO1
Show the packet without sending it:
sony-camera-ip-setup set --mac AA-BB-CC-DD-EE-FF --ip 192.168.42.52 --name CAM1 --dry-run
Print raw TX/RX hex dumps with -v. Bind to a specific local address with --bind 192.168.0.10.
Camera name rules
Sony limits the name to 8 characters: letters, digits, and spaces.
Important notes
- The camera must be in LAN mode (VISCA/LAN switch ON).
- Network settings can only be changed while the inquiry reply shows WRITE:on.
- WRITE turns off automatically about 20 minutes after power-on. Power-cycle the camera and retry.
- Factory defaults are typically
192.168.0.100 / 255.255.255.0 / CAM1. - Discovery and IP changes use UDP broadcast to
255.255.255.255:52380. The Mac or PC must share the same Ethernet segment (same switch or VLAN) as the camera. The IP subnet does not have to match: a host on192.168.42.0/24can still find a camera at the factory address192.168.0.100. - A temporary address alias is only needed if broadcasts are filtered or you want unicast access (for example VISCA on port 52381) before the camera is moved onto your subnet:
sudo ifconfig en0 alias 192.168.0.10 netmask 255.255.255.0
Protocol
Sony frames the setup messages as:
STX (0x02) + ASCII field + 0xFF + ... + ETX (0x03)
Inquiry:
ENQ:network
Inquiry reply includes MAC, MODEL, SOFTVERSION, IPADR, MASK, GATEWAY, NAME, and WRITE.
A change is accepted only when the MAC in the setting packet matches the camera. Success is ACK:<mac>, failure is NAK:<mac>.
Documented in Sony command lists such as the SRG-300H technical manual (IP Related Setting Command) and later SRG command lists (Camera IP Setting Command).
VISCA camera control (pan/tilt/zoom) uses a different port, 52381, and is out of scope here.
Tests
source .venv/bin/activate
PYTHONPATH=src python3 -m unittest discover -s tests
Publishing to PyPI
Releases are published by GitHub Actions when you create a GitHub Release. No PyPI token is stored in the repository. Authentication uses Trusted Publishing.
One-time setup on pypi.org:
- Add a pending trusted publisher (the project does not have to exist yet).
- PyPI project name:
sony-camera-ip-setup - Owner:
saschaludwig - Repository:
Sony-Camera-IP-Setup - Workflow:
publish.yml - Environment:
pypi
In the GitHub repo, create an environment named pypi (Settings → Environments).
Optional but recommended: restrict it to the main branch.
To publish a new version:
- Bump
versioninpyproject.tomland__version__insrc/sony_camera_ip_setup/__init__.py. - Commit and push to
main. - Create a GitHub Release (for example tag
v1.0.1). - The Publish workflow runs tests, builds the package, and uploads it to PyPI.
License
Release files for sony-camera-ip-setup 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sony_camera_ip_setup-1.0.0.tar.gz | 15.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sony_camera_ip_setup-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.6 kB
Release files / sony_camera_ip_setup-1.0.0.tar.gz
| Download URL | sony_camera_ip_setup-1.0.0.tar.gz |
|---|---|
| Size | 15.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4048a1d1c5a83a8a6cfb5e446262fbfd0775db378e80e429a1e648cf6a02e16f
|
|
BLAKE2b-256 checksum How to use checksums |
6c69b51f127b4d93755211dbde74a68bc1a9d62da9d48843cfd858fd1b953156
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.
Transparency logRelease files / sony_camera_ip_setup-1.0.0-py3-none-any.whl
| Download URL | sony_camera_ip_setup-1.0.0-py3-none-any.whl |
|---|---|
| Size | 13.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
19200838481587b6f3b2b9d4675b4e9687f250897f42d1c71b076b92128ab07a
|
|
BLAKE2b-256 checksum How to use checksums |
ba9c3e898264df72092d5a313748afd10ce7fe2ef89d9865a0ab20f9b1b12443
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.
Transparency log