moonlighter
Joined 15 years ago
Karma
3,995
Submissions
363
Member since
Jul 2
Joined 15 years ago
For the adoption stage, UniFi cameras broadcast on UDP port 10001 using a proprietary TLV (Type-Length-Value) protocol. The Protect console listens on this port and picks up new cameras immediately. 4 bytes `\x01\x00\x00\x00` sent as UDP broadcast to `255.255.255.255:10001`
The response then contains these fields:
| Hex Code | Field | Data |
|----------|-------|------|
| `0x01` | MAC Address | 6-byte hardware address |
| `0x02` | MAC + IP | Combined MAC and IPv4 address |
| `0x03` | Firmware Version | String |
| `0x0B` | Hostname | String |
| `0x0C` | Platform (Short Model) | String |
| `0x0A` | Uptime | 64-bit integer |
| `0x13` | Serial | String |
| `0x14` | Model (Full) | String |
| `0x17` | Is Default | Boolean (adopted vs unmanaged) |
After discovery, the Protect console:
1. Connects to the camera via SSH (default credentials)
2. Configures the Inform URL (TCP 8080)
3. Camera registers with the controllerSo conceivably at step 2 you could use your own modified URL to point to your own NVR and then grab the FLV streams from there.
You can use MS to dry flowers in record time... and use it to quickly heat up baby food in a pinch if needed... just put a smaller container of food in a bigger pod filled with MS and pour water of the MS... it's ultra-rapid absorption of water creates heat as a byproduct.
Currently building LogRaker, a Swiss Army knife for server logs as a native macOS app - https://lograker.app
Boats, marine electronics, and making desktop apps that aren't Electron.