Skip to content

About

Vonode 节点软件:安装包下载、安装指南与 Wiki(仅发布文件,不含源码)|Vonode node software: releases, install guides and wiki. Release files only, no source code.

Topics

Resources

Stars

24 stars

Watchers

0 watching

Forks

Repository files navigation

English · 简体中文 · 繁體中文

Vonode logo

Vonode node

Keep your SIMs at home. Take your numbers anywhere.
Release downloads, install guides and wiki for the Vonode node software.

One-click install

On 64-bit Linux (amd64 or arm64) with Docker installed, one command installs the Vonode node with Docker Compose. Run the same command again to upgrade.

curl -fsSL https://vonode.cc/install/compose.sh | sudo sh

Options, a dry run and how the script verifies the release: Docker Compose one-click. Other ways to install: systemd package (recommended) · Docker Compose step by step · install guide on vonode.cc

Latest release Install guide Platform App Telegram

Vonode turns a Linux computer with cellular modules into a private node. The Vonode app for iPhone and iPad reads and sends SMS, makes and answers calls, switches eSIM profiles and turns on Wi-Fi calling, all through hardware you run yourself.

This repository holds release files and documentation only. It contains no source code. The node software is proprietary software of VONODE LLC.

Version v1.3.0 was briefly published and then withdrawn; it is not supported. Install v1.4.0 or later.

Contents

Features

Feature What it does
Messages Read and send SMS for every number on the node. Junk is sorted automatically, and a reply goes out from the number that received the thread.
Calls Make and answer calls through your node over Wi-Fi calling. Incoming calls ring on your iPhone through CallKit, even when the app is in the background.
Wi-Fi Calling Turn Wi-Fi calling (VoWiFi) on per SIM; calls run over Wi-Fi calling. The node reaches your carrier over the internet; your plan must support it.
SIM and eSIM Switch eSIM profiles on a removable eUICC card; downloading, renaming and deleting are in the app but not yet verified on hardware. Physical SIMs work as they are.
Check network A plain-language check of SIM, carrier, mobile data, SMS and calling service, with technical details one tap away.
Notifications SMS and call alerts through Apple push. Optional message previews are encrypted by your node and decrypted only on your phone.
And the rest Carrier codes (USSD), automations, proxies, backups and moving to a new phone, all in the same app.

There is no Vonode cloud between you and your numbers. The app talks to your node directly over encrypted SSH and pins the node's host key. Messages, call history and settings stay on the node you operate. A small relay run by VONODE LLC delivers Apple notifications and confirms purchases; it does not store plaintext message content, and it sees only notification metadata such as the type and time of a notification. Details are in the Privacy Policy.

The node has no web interface: install it once, pair it with the app, and manage everything from the app.

Requirements

Check the full list on the hardware page before you buy anything.

Item Requirement
Host computer 64-bit x86 (amd64) or 64-bit ARM (arm64) Linux: Debian 12, Ubuntu 22.04 or later, or Fedora, with systemd for the install package or Docker Engine with Compose v2 for Docker. Root access; the systemd package also needs the full iproute2 package (the Docker image brings its own). An Intel N100 mini PC, a used thin client or a NUC works well. From v1.4.2, arm64 ships alongside amd64 as a regular release: a Raspberry Pi 4 or 5 works with a 64-bit OS (for example Raspberry Pi OS 64-bit); a 32-bit OS does not. 2 GB RAM and 4 GB disk are enough for the node. Verified platform: Ubuntu 22.04, amd64.
Cellular module A Qualcomm-based Quectel module with USB serial (AT) and QMI ports. Tested: the DJI Cellular module (Quectel EG25-G inside, after a one-time USB identity switch described on the hardware page). EG25-G, EC25, EC20, EC21/EG21, EM05/EM06/EG06 and RM500Q are supported by the code but not tested yet. Up to four modules per node (from node v1.4.5, at most four physical SIM sources per node, modems and card-reader lines together).
Antennas and power Attach both antennas (main and diversity). Use a powered USB hub when you connect more than one module.
SIM and network A SIM with its PIN removed, or a removable eUICC card for eSIM. Wi-Fi calling enabled on the plan by your carrier. TCP port 2222 reachable from the phone, through a port forward or a VPN such as WireGuard or Tailscale.
App Vonode for iPhone and iPad, version 1.4.0 or later, iOS and iPadOS 17 or later. Free download on the App Store. The Vonode app is available on the App Store in all countries and regions except mainland China.

Not supported yet: 32-bit ARM (armv7) hosts and 32-bit operating systems, OpenWrt routers, Docker Desktop on macOS or Windows, virtual machines without USB pass-through, and USB dongles that only present a network card (HiLink, RNDIS-only or ECM-only firmware). Calls over the cellular network have not been confirmed on any module yet; calls work over Wi-Fi calling.

Supported carriers (Wi-Fi Calling)

Vonode places Wi-Fi Calling (VoWiFi) calls and texts with the SIM in your node. This list is generated from the node's carrier settings: 428 entries for 423 network codes in 109 countries and regions. Search it on the website: https://vonode.cc/docs/carriers/

  • Wi-Fi Calling may need to be enabled on your plan by your carrier.
  • Some carriers check a Wi-Fi Calling entitlement for the line (TS.43; T-Mobile US and AT&T, for example), and some carriers only allow certified devices. Vonode never changes the IMEI.
  • Mainland China (MCC 460/461) and India (MCC 404/405/406) SIMs: Wi-Fi Calling is not offered (92 network codes). From node v1.4.5, China mainland numbers (MCC 460/461 or ICCID 8986) are not supported at all; Indian SIMs keep calls and SMS over the mobile network.
  • Rows that are not marked “Tested by us” have not been tested by us — results depend on the carrier.
  • Carriers that are not listed still get the standard 3GPP settings and may work; results depend on the carrier.
  • Tried a carrier? Tell us at support@vonode.cc or in the Telegram group https://t.me/vonode_group.
Status Entries Notes
Tested by us 5 A real SIM of this carrier registered for Wi-Fi Calling on our own hardware with the current node software.
Reported working 7 Users told us it works. We have not verified it on our own hardware yet.
Configured 51 The node has settings made for this carrier's network.
Configured from vendor data 190 Settings built from phone makers' published carrier configuration, from node v1.4.2.
Automatic (best effort) 175 The node starts from standard 3GPP settings plus hints from vendor data and adapts automatically.

Tested and reported carriers

Country or region Carrier MCC-MNC Status Settings Notes
United Kingdom giffgaff (O2) 234-10 Tested by us Built in Tested with a giffgaff SIM on the O2 network.
United Kingdom Vodafone UK 234-15 Tested by us Built in Tested with a Vodafone UK SIM.
United Kingdom CMLink UK (EE) 234-33 Tested by us Built in Tested with a CMLink UK SIM on the EE network.
United Kingdom CTExcel (EE) 234-33 Tested by us Built in Tested with a CTExcel SIM on the EE network.
United States Red Pocket (AT&T) 310-280 Tested by us Built in Tested with a Red Pocket SIM on the AT&T network.
Philippines DITO 515-66 Reported working From node v1.4.2 Reported working by users; not tested by us.
Taiwan Far EasTone 遠傳電信 466-01 Reported working From node v1.4.2 Reported working by users; not tested by us.
Taiwan Chunghwa Telecom 中華電信 466-92 Reported working From node v1.4.2 Reported working by users; not tested by us.
Taiwan Taiwan Mobile 台灣大哥大 466-97 Reported working From node v1.4.2 Reported working by users; not tested by us.
Thailand AIS 520-01 Reported working From node v1.4.2 Reported working by users; not tested by us.
Thailand AIS 520-03 Reported working From node v1.4.2 Reported working by users; not tested by us.
United Kingdom Lebara UK 204-04 Reported working From node v1.4.2 Reported working by users; not tested by us. Lebara UK SIMs use the network code 204-04 (Vodafone Netherlands range).

All carriers by country

Full table with notes: CARRIERS.md · Website with search: https://vonode.cc/docs/carriers/

Albania (1)
  • Vodafone 276-02 · Configured from vendor data · From node v1.4.2
Argentina (7)
  • Movistar 722-007 · Automatic (best effort)
  • Telecom Personal S.A. 722-034 · Configured from vendor data · From node v1.4.2
  • Nuestro 722-036 · Automatic (best effort)
  • Claro AR 722-310 · Configured from vendor data · From node v1.4.2
  • Compañía de Telefonos del Interior Norte S.A. 722-320 · Automatic (best effort)
  • Compañía de Telefonos del Interior S.A. 722-330 · Automatic (best effort)
  • Telecom Personal S.A. 722-341 · Automatic (best effort)
Armenia (1)
  • K Telecom CJSC 283-05 · Configured from vendor data · From node v1.4.2
Australia (7)
  • Telstra 505-01 · Configured from vendor data · From node v1.4.2
  • Optus 505-02 · Configured from vendor data · From node v1.4.2
  • Vodafone 505-03 · Configured from vendor data · From node v1.4.2
  • AAPT Ltd. 505-14 · Automatic (best effort)
  • Telstra 505-71 · Configured from vendor data · From node v1.4.2
  • Telstra 505-72 · Configured from vendor data · From node v1.4.2
  • Optus 505-90 · Automatic (best effort)
Austria (9)
  • A1 232-01 · Configured from vendor data · From node v1.4.2
  • A1 232-02 · Automatic (best effort)
  • Magenta Telekom 232-03 · Configured from vendor data · From node v1.4.2
  • Drei 232-05 · Automatic (best effort)
  • Magenta Telekom 232-07 · Configured from vendor data · From node v1.4.2
  • Drei 232-10 · Configured from vendor data · From node v1.4.2
  • A1 232-11 · Automatic (best effort)
  • A1 232-12 · Automatic (best effort)
  • Spusu AT 232-17 · Configured from vendor data · From node v1.4.2
Azerbaijan (2)
  • Azercell 400-01 · Automatic (best effort)
  • Bakcell 400-02 · Automatic (best effort)
Bahamas (1)
  • BTC 364-039 · Automatic (best effort)
Bahrain (2)
  • Batelco 426-01 · Configured from vendor data · From node v1.4.2
  • stc BH 426-04 · Configured from vendor data · From node v1.4.2
Bangladesh (1)
  • Grameenphone 470-01 · Configured from vendor data · From node v1.4.2
Barbados (1)
  • Cable & Wireless (Barbados) Ltd. 342-600 · Automatic (best effort)
Belarus (2)
  • A1 BY 257-01 · Configured from vendor data · From node v1.4.2
  • MTS 257-02 · Configured from vendor data · From node v1.4.2
Belgium (4)
  • Proximus 206-01 · Configured from vendor data · From node v1.4.2
  • Telenet 206-05 · Configured from vendor data · From node v1.4.2
  • Orange 206-10 · Configured from vendor data · From node v1.4.2
  • BASE 206-20 · Configured from vendor data · From node v1.4.2
Bhutan (1)
  • Bhutan Telecom Ltd 402-11 · Automatic (best effort)
Brazil (8)
  • Claro BR 724-05 · Configured from vendor data · From node v1.4.2
  • Vivo 724-06 · Configured from vendor data · From node v1.4.2
  • Vivo 724-10 · Configured from vendor data · From node v1.4.2
  • Vivo 724-11 · Configured from vendor data · From node v1.4.2
  • Americel 724-12 · Automatic (best effort)
  • Vivo 724-23 · Configured from vendor data · From node v1.4.2
  • Claro BR 724-38 · Automatic (best effort)
  • Brisanet 724-77 · Automatic (best effort)
Brunei (2)
  • B-Mobile 528-02 · Automatic (best effort)
  • DST Com 528-11 · Automatic (best effort)
Bulgaria (2)
  • A1 284-01 · Automatic (best effort)
  • VIVACOM 284-03 · Automatic (best effort)
Cambodia (3)
  • Smart 456-02 · Automatic (best effort)
  • Smart 456-05 · Configured from vendor data · From node v1.4.2
  • Smart 456-06 · Configured from vendor data · From node v1.4.2
Canada (12)
  • TELUS 302-220 · Configured from vendor data · From node v1.4.2
  • TELUS 302-221 · Configured from vendor data · From node v1.4.2
  • EastLink 302-270 · Automatic (best effort)
  • Fido 302-370 · Configured from vendor data · From node v1.4.2
  • Freedom Mobile 302-490 · Automatic (best effort)
  • Videotron 302-500 · Configured from vendor data · From node v1.4.2
  • Bell Mobility 302-610 · Configured from vendor data · From node v1.4.2
  • Bell Mobility 302-630 · Automatic (best effort)
  • Bell Mobility 302-640 · Automatic (best effort)
  • Bell 302-690 · Automatic (best effort)
  • Rogers 302-720 · Automatic (best effort)
  • Sask Tel Mobility 302-780 · Configured from vendor data · From node v1.4.2
Chile (6)
  • Entel 730-01 · Configured from vendor data · From node v1.4.2
  • Movistar 730-02 · Configured from vendor data · From node v1.4.2
  • Claro CL 730-03 · Configured from vendor data · From node v1.4.2
  • Movistar 730-07 · Automatic (best effort)
  • WOM 730-09 · Configured from vendor data · From node v1.4.2
  • Entel 730-10 · Automatic (best effort)
Colombia (3)
  • Claro CO 732-101 · Configured from vendor data · From node v1.4.2
  • Movistar 732-123 · Automatic (best effort)
  • WOM 732-360 · Configured from vendor data · From node v1.4.2
Costa Rica (1)
  • Claro CR 712-03 · Configured from vendor data · From node v1.4.2
Croatia (3)
  • Hrvatski Telekom 219-01 · Configured from vendor data · From node v1.4.2
  • A1/Tomato 219-10 · Configured from vendor data · From node v1.4.2
  • Hrvatski Telekom 219-20 · Automatic (best effort)
Cyprus (3)
  • CYTA 280-01 · Automatic (best effort)
  • epic 280-10 · Configured from vendor data · From node v1.4.2
  • PrimeTel 280-20 · Configured from vendor data · From node v1.4.2
Czechia (4)
  • T-Mobile 230-01 · Configured from vendor data · From node v1.4.2
  • O2 230-02 · Configured from vendor data · From node v1.4.2
  • Vodafone 230-03 · Configured from vendor data · From node v1.4.2
  • Vodafone 230-99 · Automatic (best effort)
Denmark (5)
  • TDC Mobil 238-01 · Configured from vendor data · From node v1.4.2
  • Telenor 238-02 · Configured from vendor data · From node v1.4.2
  • 3 238-06 · Configured from vendor data · From node v1.4.2
  • Telia 238-20 · Configured from vendor data · From node v1.4.2
  • Telia 238-30 · Automatic (best effort)
Dominican Republic (2)
  • Altice Dominicana 370-01 · Configured from vendor data · From node v1.4.2
  • Claro RD 370-02 · Configured from vendor data · From node v1.4.2
Ecuador (2)
  • Claro EC 740-01 · Configured from vendor data · From node v1.4.2
  • Telecsa S.A. 740-02 · Automatic (best effort)
Egypt (2)
  • Vodafone 602-02 · Automatic (best effort)
  • Etisalat 602-03 · Automatic (best effort)
El Salvador (1)
  • Claro SV 706-01 · Automatic (best effort)
Estonia (3)
  • Telia 248-01 · Configured from vendor data · From node v1.4.2
  • Elisa 248-02 · Automatic (best effort)
  • Tele2 248-03 · Automatic (best effort)
Finland (4)
  • Elisa 244-05 · Configured from vendor data · From node v1.4.2
  • DNA 244-12 · Automatic (best effort)
  • Elisa 244-21 · Automatic (best effort)
  • Telia 244-91 · Configured from vendor data · From node v1.4.2
France (12)
  • Orange 208-01 · Configured from vendor data · From node v1.4.2
  • Orange 208-02 · Configured from vendor data · From node v1.4.2
  • SFR 208-09 · Automatic (best effort)
  • SFR 208-10 · Configured from vendor data · From node v1.4.2
  • SFR 208-11 · Automatic (best effort)
  • SFR 208-13 · Automatic (best effort)
  • Free Mobile 208-15 · Automatic (best effort)
  • Bouygues Telecom 208-20 · Configured from vendor data · From node v1.4.2
  • Bouygues Telecom 208-21 · Automatic (best effort)
  • EURO INFORMATION TELECOM 208-26 · Configured from vendor data · From node v1.4.2
  • Coriolis 208-27 · Configured from vendor data · From node v1.4.2
  • Bouygues Telecom 208-88 · Automatic (best effort)
French Antilles (1)
  • Orange Caraïbe Mobiles 340-01 · Automatic (best effort)
French Polynesia (1)
  • Viti 547-05 · Automatic (best effort)
Germany (9)
  • Telekom 262-01 · Configured from vendor data · From node v1.4.2
  • Vodafone 262-02 · Configured from vendor data · From node v1.4.2
  • O2 262-03 · Configured
  • Telekom 262-06 · Configured from vendor data · From node v1.4.2
  • O2 262-07 · Configured
  • O2 262-11 · Configured
  • 1&1 262-23 · Configured from vendor data · From node v1.4.2
  • Truphone 262-42 · Automatic (best effort)
  • Airbus DE 262-98 · Automatic (best effort)
Ghana (1)
  • MTN 620-01 · Automatic (best effort)
Greece (4)
  • COSMOTE 202-01 · Configured from vendor data · From node v1.4.2
  • Vodafone 202-05 · Configured from vendor data · From node v1.4.2
  • Info Quest S.A. 202-09 · Automatic (best effort)
  • Telestet 202-10 · Configured from vendor data · From node v1.4.2
Guatemala (2)
  • Claro GT 704-01 · Configured from vendor data · From node v1.4.2
  • Movistar 704-03 · Automatic (best effort)
Honduras (1)
  • Claro HN 708-001 · Automatic (best effort)
Hong Kong (13)
  • csl / 1O1O 454-00 · Configured
  • 3 Hong Kong 454-03 · Configured
  • Hutchison 2G 454-04 · Automatic (best effort)
  • SmarTone HK 454-06 · Configured from vendor data · From node v1.4.2
  • MVNO/Trident 454-08 · Automatic (best effort)
  • China Mobile Hong Kong 中國移動香港 454-12 · Configured from vendor data · From node v1.4.2
  • SmarTone HK 454-15 · Automatic (best effort)
  • PCCW 454-16 · Automatic (best effort)
  • SmarTone HK 454-17 · Automatic (best effort)
  • csl / 1O1O 454-19 · Configured
  • Public Mobile Networks/Reserved 454-20 · Automatic (best effort)
  • Public Mobile Networks/Reserved 454-30 · Automatic (best effort)
  • Public Mobile Networks/Reserved 454-31 · Automatic (best effort)
Hungary (3)
  • Yettel 216-01 · Configured from vendor data · From node v1.4.2
  • Magyar Telekom 216-30 · Configured from vendor data · From node v1.4.2
  • Vodafone 216-70 · Configured from vendor data · From node v1.4.2
Iceland (2)
  • Tal hf 274-02 · Configured from vendor data · From node v1.4.2
  • Nova 274-11 · Automatic (best effort)
Indonesia (3)
  • Smartfren 510-09 · Configured from vendor data · From node v1.4.2
  • Telkomsel 510-10 · Automatic (best effort)
  • Smartfren 510-28 · Configured from vendor data · From node v1.4.2
International (1)
  • AT&T Mobility (Wireless Maritime Services) 901-18 · Automatic (best effort)
Iraq (1)
  • Asiacell 418-05 · Automatic (best effort)
Ireland (4)
  • Vodafone 272-01 · Automatic (best effort)
  • 3 272-02 · Automatic (best effort)
  • Meteor Mobile Communications Ltd. 272-03 · Configured from vendor data · From node v1.4.2
  • Sky IE 272-25 · Automatic (best effort)
Israel (5)
  • Partner Communications Co. Ltd. 425-01 · Configured from vendor data · From node v1.4.2
  • Cellcom Israel Ltd. 425-02 · Configured from vendor data · From node v1.4.2
  • Pelephone Communications Ltd. 425-03 · Configured from vendor data · From node v1.4.2
  • Hot Mobile 425-07 · Configured from vendor data · From node v1.4.2
  • Partner Communications Co. Ltd. 425-10 · Automatic (best effort)
Italy (6)
  • TIM 222-01 · Configured from vendor data · From node v1.4.2
  • Kena 222-07 · Automatic (best effort)
  • Vodafone 222-10 · Automatic (best effort)
  • Spusu IT 222-56 · Automatic (best effort)
  • WINDTRE 222-88 · Automatic (best effort)
  • WINDTRE 222-99 · Automatic (best effort)
Jamaica (1)
  • Cable & Wireless 338-180 · Automatic (best effort)
Japan (5)
  • Rakuten Mobile(MNO) 440-11 · Automatic (best effort)
  • au (KDDI) 440-50 · Automatic (best effort)
  • au (KDDI) 440-51 · Configured from vendor data · From node v1.4.2
  • au 440-52 · Automatic (best effort)
  • au (KDDI) 440-54 · Automatic (best effort)
Jordan (2)
  • Fastlink 416-01 · Automatic (best effort)
  • Umniah 416-03 · Configured from vendor data · From node v1.4.2
Kazakhstan (1)
  • Beeline 401-01 · Configured from vendor data · From node v1.4.2
Kenya (2)
  • Safaricom 639-02 · Configured from vendor data · From node v1.4.2
  • Airtel Kenya 639-03 · Configured from vendor data · From node v1.4.2
Kuwait (3)
  • Zain 419-02 · Automatic (best effort)
  • Ooredoo 419-03 · Configured from vendor data · From node v1.4.2
  • STC 419-04 · Configured from vendor data · From node v1.4.2
Laos (1)
  • Unitel 457-03 · Automatic (best effort)
Latvia (1)
  • Tele2/ZZ 247-02 · Automatic (best effort)
Liechtenstein (2)
  • Telecom FL AG 295-01 · Automatic (best effort)
  • Mobilkom Liechtenstein 295-05 · Automatic (best effort)
Lithuania (2)
  • Telia 246-01 · Automatic (best effort)
  • Tele2 246-03 · Automatic (best effort)
Luxembourg (3)
  • P&T Luxembourg 270-01 · Configured from vendor data · From node v1.4.2
  • Tango 270-77 · Configured from vendor data · From node v1.4.2
  • Orange 270-99 · Configured from vendor data · From node v1.4.2
Macao (1)
  • Hutchison Telecom 455-03 · Configured from vendor data · From node v1.4.2
Malaysia (12)
  • Digi 502-10 · Automatic (best effort)
  • unifi mobile 502-11 · Automatic (best effort)
  • Maxis/Hotlink 502-12 · Configured from vendor data · From node v1.4.2
  • Celcom 502-13 · Automatic (best effort)
  • Digi 502-143 · Automatic (best effort)
  • Digi 502-146 · Automatic (best effort)
  • Yes 5G 502-152 · Configured from vendor data · From node v1.4.2
  • unifi mobile 502-153 · Configured from vendor data · From node v1.4.2
  • Digi 502-16 · Configured from vendor data · From node v1.4.2
  • TimeCel 502-17 · Automatic (best effort)
  • U Mobile 502-18 · Automatic (best effort)
  • Celcom 502-19 · Configured from vendor data · From node v1.4.2
Maldives (1)
  • Ooredoo 472-02 · Configured from vendor data · From node v1.4.2
Mexico (4)
  • Telcel 334-002 · Automatic (best effort)
  • Telcel 334-020 · Configured from vendor data · From node v1.4.2
  • AT&T MX 334-050 · Configured from vendor data · From node v1.4.2
  • AT&T MX 334-090 · Automatic (best effort)
Monaco (1)
  • MONACO TELECOM 212-10 · Configured from vendor data · From node v1.4.2
Montenegro (1)
  • Crnogorski Telekom 297-02 · Configured from vendor data · From node v1.4.2
Morocco (2)
  • Méditélécom 604-00 · Configured from vendor data · From node v1.4.2
  • Maroc 604-01 · Automatic (best effort)
Mozambique (1)
  • Vodacom 643-04 · Automatic (best effort)
Nepal (1)
  • Nepal Telecommunications 429-01 · Configured from vendor data · From node v1.4.2
Netherlands (5)
  • Vodafone NL 204-04 · Configured
  • KPN Mobiel 204-08 · Configured from vendor data · From node v1.4.2
  • Odido 204-16 · Configured from vendor data · From node v1.4.2
  • Truphone 204-33 · Automatic (best effort)
  • KPN Lab 204-69 · Automatic (best effort)
New Zealand (3)
  • Vodafone 530-01 · Configured
  • Spark 530-05 · Configured
  • 2degrees 530-24 · Configured
Nicaragua (1)
  • Claro NI 710-21 · Configured from vendor data · From node v1.4.2
North Macedonia (2)
  • Makedonski Telekom 294-01 · Automatic (best effort)
  • Nov Operator 294-03 · Automatic (best effort)
Norway (4)
  • Telenor 242-01 · Automatic (best effort)
  • Telia 242-02 · Configured from vendor data · From node v1.4.2
  • OneCall 242-05 · Configured from vendor data · From node v1.4.2
  • Ice Norway 242-14 · Configured from vendor data · From node v1.4.2
Oman (1)
  • Omantel 422-02 · Configured from vendor data · From node v1.4.2
Pakistan (3)
  • Jazz 410-01 · Configured from vendor data · From node v1.4.2
  • Telenor 410-06 · Automatic (best effort)
  • Jazz 410-07 · Automatic (best effort)
Panama (4)
  • Cable & Wireless Panama S.A. 714-01 · Configured from vendor data · From node v1.4.2
  • Movistar 714-02 · Automatic (best effort)
  • Movistar 714-020 · Configured from vendor data · From node v1.4.2
  • Claro PA 714-03 · Configured from vendor data · From node v1.4.2
Paraguay (1)
  • Claro PY 744-02 · Configured from vendor data · From node v1.4.2
Peru (3)
  • Movistar 716-06 · Configured from vendor data · From node v1.4.2
  • Claro PE 716-10 · Configured from vendor data · From node v1.4.2
  • Entel 716-17 · Automatic (best effort)
Philippines (3)
  • Globe Telecom 515-02 · Configured from vendor data · From node v1.4.2
  • Smart Communications 515-03 · Configured from vendor data · From node v1.4.2
  • DITO 515-66 · Reported working · From node v1.4.2
Poland (5)
  • Plus 260-01 · Automatic (best effort)
  • T-Mobile 260-02 · Configured from vendor data · From node v1.4.2
  • Orange 260-03 · Configured from vendor data · From node v1.4.2
  • IDEA (UMTS)/PTK Centertel sp. Z.o.o. 260-05 · Automatic (best effort)
  • PLAY 260-06 · Configured from vendor data · From node v1.4.2
Portugal (6)
  • NOS 268-03 · Configured from vendor data · From node v1.4.2
  • MEO 268-06 · Automatic (best effort)
  • NOS 268-93 · Automatic (best effort)
  • NOS 268-97 · Automatic (best effort)
  • NOS 268-98 · Automatic (best effort)
  • NOS 268-99 · Automatic (best effort)
Puerto Rico (1)
  • Claro PR 330-110 · Automatic (best effort)
Qatar (2)
  • Ooredoo 427-01 · Automatic (best effort)
  • Vodafone 427-02 · Automatic (best effort)
Romania (3)
  • Vodafone 226-01 · Configured from vendor data · From node v1.4.2
  • Digi.Mobil 226-05 · Automatic (best effort)
  • Orange 226-10 · Configured from vendor data · From node v1.4.2
Russia (6)
  • MTS (МТС) 250-01 · Configured from vendor data · From node v1.4.2
  • MegaFon 250-02 · Configured from vendor data · From node v1.4.2
  • Orensot 250-11 · Automatic (best effort)
  • Tele2 250-20 · Automatic (best effort)
  • Sberbank-Telecom 250-50 · Configured from vendor data · From node v1.4.2
  • Beeline (Билайн) 250-99 · Configured from vendor data · From node v1.4.2
Réunion (2)
  • Orange La Réunion 647-00 · Configured from vendor data · From node v1.4.2
  • Zeop 647-04 · Automatic (best effort)
Saudi Arabia (4)
  • STC 420-01 · Configured from vendor data · From node v1.4.2
  • Mobily 420-03 · Configured from vendor data · From node v1.4.2
  • Zain Saudi Arabia 420-04 · Configured from vendor data · From node v1.4.2
  • Virgin 420-05 · Automatic (best effort)
Senegal (1)
  • Sentel GSM 608-02 · Automatic (best effort)
Serbia (1)
  • A1 SRB 220-05 · Automatic (best effort)
Singapore (5)
  • Singtel 525-01 · Configured from vendor data · From node v1.4.2
  • Singtel 525-02 · Automatic (best effort)
  • M1 525-03 · Configured from vendor data · From node v1.4.2
  • StarHub 525-05 · Configured from vendor data · From node v1.4.2
  • SIMBA 525-10 · Automatic (best effort)
Slovakia (4)
  • Orange 231-01 · Configured from vendor data · From node v1.4.2
  • Slovak Telekom 231-02 · Automatic (best effort)
  • 4ka SK 231-03 · Configured from vendor data · From node v1.4.2
  • O2 231-06 · Configured from vendor data · From node v1.4.2
Slovenia (1)
  • Telekom Slovenije 293-41 · Configured from vendor data · From node v1.4.2
South Africa (4)
  • Vodacom 655-01 · Configured from vendor data · From node v1.4.2
  • Telkom 655-02 · Configured from vendor data · From node v1.4.2
  • Cell C (Pty) Ltd. 655-07 · Configured from vendor data · From node v1.4.2
  • MTN 655-10 · Configured from vendor data · From node v1.4.2
Spain (7)
  • Vodafone 214-01 · Configured from vendor data · From node v1.4.2
  • Orange 214-03 · Configured from vendor data · From node v1.4.2
  • Movistar 214-05 · Automatic (best effort)
  • Euskaltel 214-06 · Automatic (best effort)
  • Movistar 214-07 · Configured from vendor data · From node v1.4.2
  • Digi Spain 214-22 · Configured from vendor data · From node v1.4.2
  • Truphone 214-27 · Automatic (best effort)
Sri Lanka (2)
  • Sri Lanka Telecom Mobitel 413-01 · Automatic (best effort)
  • Dialog Sri Lanka 413-02 · Configured from vendor data · From node v1.4.2
Sudan (1)
  • Sudani 634-07 · Automatic (best effort)
Sweden (4)
  • Telia Sverige AB 240-01 · Configured from vendor data · From node v1.4.2
  • 3 (Hi3G Access AB) 240-02 · Configured from vendor data · From node v1.4.2
  • Tele2/Comviq Sverige/Com Hem 240-07 · Configured from vendor data · From node v1.4.2
  • Telenor Sverige AB 240-08 · Automatic (best effort)
Switzerland (5)
  • Swisscom 228-01 · Configured from vendor data · From node v1.4.2
  • Sunrise 228-02 · Configured
  • Salt 228-03 · Configured from vendor data · From node v1.4.2
  • Sunrise 228-12 · Configured
  • UPC 228-53 · Configured from vendor data · From node v1.4.2
Taiwan (7)
  • Far EasTone 遠傳電信 466-01 · Reported working · From node v1.4.2
  • Far EasTone 遠傳電信 466-02 · Automatic (best effort)
  • Far EasTone 遠傳電信 466-03 · Automatic (best effort)
  • Far EasTone 遠傳電信 (former Asia Pacific Telecom) 466-05 · Configured from vendor data · From node v1.4.2
  • Chunghwa Telecom 中華電信 466-92 · Reported working · From node v1.4.2
  • Taiwan Mobile 台灣大哥大 466-97 · Reported working · From node v1.4.2
  • TransAsia Telecoms 466-99 · Automatic (best effort)
Thailand (6)
  • CAT CDMA 520-00 · Configured from vendor data · From node v1.4.2
  • AIS 520-01 · Reported working · From node v1.4.2
  • AIS 520-03 · Reported working · From node v1.4.2
  • TrueMove H 4G LTE 520-04 · Configured from vendor data · From node v1.4.2
  • dtac 520-05 · Automatic (best effort)
  • dtac 520-18 · Automatic (best effort)
Türkiye (4)
  • Turkcell 286-01 · Configured from vendor data · From node v1.4.2
  • Vodafone 286-02 · Configured from vendor data · From node v1.4.2
  • Türk Telekom 286-03 · Configured from vendor data · From node v1.4.2
  • Türk Telekom 286-04 · Configured from vendor data · From node v1.4.2
Uganda (1)
  • Airtel Uganda 641-01 · Automatic (best effort)
Ukraine (1)
  • Astelit 255-06 · Configured from vendor data · From node v1.4.2
United Arab Emirates (2)
  • e& UAE 424-02 · Configured from vendor data · From node v1.4.2
  • du 424-03 · Automatic (best effort)
United Kingdom (22)
  • Lebara UK 204-04 · Reported working · From node v1.4.2
  • Mapesbury Communications Ltd. 234-01 · Automatic (best effort)
  • FMS Solutions Ltd 234-04 · Automatic (best effort)
  • BT One Phone 234-08 · Automatic (best effort)
  • giffgaff (O2) 234-10 · Tested by us
  • O2 234-10 · Configured
  • Vodafone UK 234-15 · Tested by us
  • Three Mobile 234-20 · Configured
  • Truphone 234-25 · Automatic (best effort)
  • EE 234-30 · Configured
  • EE 234-31 · Configured
  • EE 234-32 · Configured
  • CMLink UK (EE) 234-33 · Tested by us
  • CTExcel (EE) 234-33 · Tested by us
  • EE 234-33 · Configured
  • Virgin 234-38 · Automatic (best effort)
  • Spusu GB 234-40 · Configured from vendor data · From node v1.4.2
  • Cable and Wireless Guernsey 234-55 · Automatic (best effort)
  • Sky 234-57 · Configured from vendor data · From node v1.4.2
  • EE 234-86 · Configured
  • Three Mobile 234-94 · Configured
  • Three Mobile 235-94 · Configured
United States (63)
  • T-Mobile - US 310-026 · Configured
  • AT&T 310-030 · Configured
  • AT&T 310-070 · Configured
  • AT&T Private 310-090 · Automatic (best effort)
  • Pacific Telecom Inc 310-110 · Automatic (best effort)
  • Sprint 310-120 · Configured from vendor data · From node v1.4.2
  • Cricket Wireless 310-150 · Configured from vendor data · From node v1.4.2
  • T-Mobile - US 310-160 · Configured
  • AT&T 310-170 · Configured
  • T-Mobile - US 310-200 · Configured
  • T-Mobile - US 310-210 · Configured
  • T-Mobile - US 310-220 · Configured
  • T-Mobile - US 310-230 · Configured
  • T-Mobile - US 310-240 · Configured
  • T-Mobile - US 310-250 · Configured
  • T-Mobile - US 310-260 · Configured
  • T-Mobile - US 310-270 · Configured
  • Red Pocket (AT&T) 310-280 · Tested by us
  • AT&T 310-280 · Configured
  • T-Mobile - US 310-300 · Configured
  • T-Mobile - US 310-310 · Configured
  • AT&T 310-380 · Configured
  • AT&T 310-410 · Configured
  • North East Cellular Inc. 310-450 · Automatic (best effort)
  • T-Mobile - US 310-490 · Configured
  • T-Mobile - US 310-530 · Configured
  • AT&T 310-560 · Configured
  • Verizon Wireless 310-590 · Automatic (best effort)
  • T-Mobile - US 310-640 · Configured
  • Jasper Wireless Inc. 310-650 · Automatic (best effort)
  • T-Mobile - US 310-660 · Configured
  • AT&T 310-680 · Configured
  • Sea Mobile 310-730 · Automatic (best effort)
  • T-Mobile - US 310-800 · Configured
  • Verizon Wireless 310-890 · Automatic (best effort)
  • AT&T 310-950 · Configured
  • AT&T 311-180 · Configured
  • U.S. Cellular 311-220 · Automatic (best effort)
  • C Spire 311-230 · Automatic (best effort)
  • Verizon Wireless 311-270 · Automatic (best effort)
  • GCI Communications Corp. 311-370 · Automatic (best effort)
  • Verizon Wireless 311-480 · Configured from vendor data · From node v1.4.2
  • Verizon Wireless 311-481 · Automatic (best effort)
  • T-Mobile - US 311-490 · Configured
  • U.S. Cellular 311-580 · Configured from vendor data · From node v1.4.2
  • U.S. Cellular 311-589 · Automatic (best effort)
  • United Wireless 311-650 · Automatic (best effort)
  • T-Mobile - Private 5G 311-660 · Configured from vendor data · From node v1.4.2
  • Cellcom 311-840 · Configured from vendor data · From node v1.4.2
  • T-Mobile - US 311-882 · Configured
  • T-Mobile - US 312-250 · Configured
  • strata 312-290 · Automatic (best effort)
  • NexTech Ota 312-420 · Automatic (best effort)
  • Sprint 312-530 · Configured from vendor data · From node v1.4.2
  • FirstNet (Lab) 312-670 · Configured from vendor data · From node v1.4.2
  • FirstNet 313-100 · Configured from vendor data · From node v1.4.2
  • FirstNet 313-110 · Automatic (best effort)
  • FirstNet 313-120 · Automatic (best effort)
  • FirstNet 313-130 · Automatic (best effort)
  • FirstNet 313-140 · Automatic (best effort)
  • Dish Wireless (Boost) 313-340 · Configured from vendor data · From node v1.4.2
  • Optimum 313-390 · Configured from vendor data · From node v1.4.2
  • Liberty Mobile 313-790 · Configured from vendor data · From node v1.4.2
Uruguay (1)
  • Claro UY 748-10 · Configured from vendor data · From node v1.4.2
Vietnam (4)
  • Mobifone 452-01 · Configured from vendor data · From node v1.4.2
  • Vinaphone 452-02 · Configured from vendor data · From node v1.4.2
  • Viettel Telecom 452-04 · Configured from vendor data · From node v1.4.2
  • Vietnamobile 452-05 · Automatic (best effort)
Zambia (2)
  • Airtel Zambia 645-01 · Automatic (best effort)
  • Telecel Zambia Ltd. 645-02 · Automatic (best effort)

Download and verify

From v1.4.0, every release is published on the Releases page. Set VERSION below to the release tag shown on that page (file names use the same tag).

File What it is
vonode_<version>_linux_<arch>_commercial.tar.gz The install package: node program, install.sh, systemd units, docker/ setup, guides, licenses, and SHA256SUMS with SHA256SUMS.sig, the release signature over the whole package
vonode_<version>_linux_<arch>_commercial.tar.gz.sha256 SHA-256 checksum of the install package
vonode_<version>_linux_<arch>_commercial and .sig The node program as a single file and its release signature, used by in-app software updates
vonode_<version>_linux_<arch>_commercial.THIRD_PARTY_NOTICES.txt Third-party components and their licenses
vonode_<version>_linux_<arch>_commercial.spdx.json Software bill of materials (SPDX)
vonode_<version>_linux_<arch>_commercial.sources.tar Corresponding source of the GPL and LGPL components
latest-commercial.json and latest-commercial.json.sig The signed release manifest (one for all architectures) that nodes and the Compose one-click script read, and its release signature
docker-compose.yml, docker-compose.yml.sha256 and docker-compose.yml.sig The Docker Compose file for this release, with the image pinned by digest, its checksum and (from v1.4.2) its release-key signature
compose-install.sh and compose-install.sh.sha256 The Docker Compose one-click script and its checksum
vonode-<version>-nas.tar.gz and .sha256 Ready-made files for NAS container apps (from v1.4.2) and their checksum
vonode-<version>-docker-alpine-sources.tar and .sha256 Corresponding source of the GPL, LGPL and MPL packages inside the Docker image

<arch> is amd64 for 64-bit x86 (uname -m prints x86_64) or, from v1.4.2, arm64 for 64-bit ARM (uname -m prints aarch64). The commands below use amd64; on an arm64 host write arm64 instead.

Checksum

VERSION=vX.Y.Z        # replace with the release tag
BASE=https://github.com/vonode/vonode-releases/releases/download/$VERSION
curl -fLO $BASE/vonode_${VERSION}_linux_amd64_commercial.tar.gz
curl -fLO $BASE/vonode_${VERSION}_linux_amd64_commercial.tar.gz.sha256
sha256sum -c vonode_${VERSION}_linux_amd64_commercial.tar.gz.sha256

sha256sum -c must print OK. Do not install a package that fails the check.

Release signature (optional)

The node program is signed with the Vonode update key (Ed25519). The node checks this signature itself at startup and before it installs an in-app update. To check it by hand, you need OpenSSL 3.0 or later. The signature covers the text vonode-binary-v1, a newline and the program's SHA-256 in hex.

cat > vonode-update-key.pem <<'EOF'
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEAnIDCyy4CJVQSC7a+p+OeQsF/NsPguVkmB+OL//k98OY=
-----END PUBLIC KEY-----
EOF

# Inside the extracted package the program is "vonode" with "vonode.sig".
# For the single-file download use vonode_<version>_linux_<arch>_commercial and its .sig.
BIN=vonode_${VERSION}_linux_amd64_commercial/vonode
printf 'vonode-binary-v1\n%s' "$(sha256sum "$BIN" | cut -d' ' -f1)" > vonode.msg
base64 -d "$BIN.sig" > vonode.sig.bin
openssl pkeyutl -verify -pubin -inkey vonode-update-key.pem -rawin -in vonode.msg -sigfile vonode.sig.bin

The last command must print Signature Verified Successfully. Each package also holds SHA256SUMS and SHA256SUMS.sig, a release-key signature over the checksums of every file in the package.

Install with the systemd package (recommended)

Recommended for this release. The package installs the node as two systemd services, without Docker.

1. Prepare the host

Install the Linux distribution, connect it to the network (wired Ethernet is recommended) and log in as a user who can use sudo. Update the system and stop ModemManager, which competes for the module's serial ports:

sudo apt update && sudo apt full-upgrade -y        # Debian and Ubuntu
sudo systemctl disable --now ModemManager

Plug in the module and check that Linux sees it:

lsusb | grep -i -E 'quectel|2c7c|qualcomm|05c6'
ls /dev/ttyUSB* /dev/cdc-wdm*

You should see one Quectel line, four ttyUSB ports and one cdc-wdm port per module. A DJI Cellular module needs its USB identity switched once first; the steps are on the hardware page.

2. Download, verify and extract

VERSION=vX.Y.Z        # replace with the release tag
BASE=https://github.com/vonode/vonode-releases/releases/download/$VERSION
curl -fLO $BASE/vonode_${VERSION}_linux_amd64_commercial.tar.gz
curl -fLO $BASE/vonode_${VERSION}_linux_amd64_commercial.tar.gz.sha256
sha256sum -c vonode_${VERSION}_linux_amd64_commercial.tar.gz.sha256
tar -xzf vonode_${VERSION}_linux_amd64_commercial.tar.gz

3. Run the installer

cd vonode_${VERSION}_linux_amd64_commercial
sudo ./install.sh

The installer:

  • puts the program in /opt/vonode/vonode and the configuration in /opt/vonode/config/config.yaml (an existing configuration and database are kept);
  • creates the system user vonode-gateway (UID and GID 10001);
  • installs and starts two systemd services: vonode, the core, and vonode-gateway, the encrypted SSH service the app connects to.

4. First start and the administrator password

Check that both services are active (running):

systemctl status vonode vonode-gateway

On first start the node creates a random administrator password and keeps only its hash in the configuration. The plain text is in /opt/vonode/config/initial-admin-password, readable by root only. You rarely need it; keep it somewhere safe.

5. Open the port and show the pairing QR code

Allow TCP 2222 through the host firewall and, if the phone will connect from outside your network, forward it on your router (or use a VPN):

sudo ufw allow 2222/tcp

Show the pairing QR code with the address the phone will use to reach the node: your DDNS name or public IP when you forward the port, or the host's VPN or LAN address. If the router forwards a different external port, give that port after -port.

sudo /opt/vonode/vonode pair -c /opt/vonode/config/config.yaml -host node.example.com -port 2222

The terminal shows the QR code as a block graphic. It is valid for five minutes and works once; run the command again for a new one. Continue with Pair the app.

Everyday operation

Task Command
Status systemctl status vonode vonode-gateway
Logs journalctl -u vonode -f
Restart sudo systemctl restart vonode (up to two minutes: the node de-registers Wi-Fi calling and closes its tunnels first)
New pairing code sudo /opt/vonode/vonode pair -c /opt/vonode/config/config.yaml -host <address> -port 2222
Lost administrator password sudo systemctl stop vonode, then sudo /opt/vonode/vonode reset-password -c /opt/vonode/config/config.yaml, then sudo systemctl start vonode. All phones are signed out and pair again.

Install with Docker Compose

Docker Compose runs the same node as two containers from the image vonode/vonode on Docker Hub (published from v1.4.0): vonode, the core, which talks to the modules, and vonode-gateway, the unprivileged SSH service the app connects to on TCP 2222. Pairing, plans and the app work exactly as with the systemd package. Image tags follow the release (1.4.0 for v1.4.0, plus latest). From v1.4.2 the image is multi-platform for 64-bit x86 (amd64) and 64-bit ARM (arm64) hosts, and Docker picks the right one. Each release also publishes a docker-compose.yml that pins its image by digest, signed with the Vonode release key from v1.4.2.

Use one install method per host: do not run the Docker setup next to the systemd package.

Docker Compose one-click

On a Linux host with Docker Engine and the Compose plugin (step 1 below), one command downloads the release's docker-compose.yml, verifies it, installs it in /opt/vonode-compose, starts both containers, waits until they are healthy and shows the pairing QR code:

curl -fsSL https://vonode.cc/install/compose.sh | sudo sh
  • Download and verify only, without changing anything: curl -fsSL https://vonode.cc/install/compose.sh | sh -s -- --dry-run
  • Options: --host <address the phone uses>, --port <port>, --dir <folder>, --version vX.Y.Z, --no-start, --no-pair. Run the command again to update.
  • The script is also the release asset compose-install.sh (the same bytes, SHA-256 ca1740be6b659dc44335775b712a9409f16a5592a5e00b8ba2bd8303540a4232, also in compose-install.sh.sha256). You can download it, read it and run sudo sh compose-install.sh instead of piping it.
  • Verification: the script finds the current release, v1.4.2, in the signed release manifest latest-commercial.json and checks docker-compose.yml against its signature docker-compose.yml.sig with the Vonode release key before it uses it. The image stays pinned by digest.
  • The same command works on amd64 and arm64 hosts; on arm64 it now installs the regular v1.4.2 release (no longer the experimental arm64 pre-release).
  • It does not disable ModemManager or change other services; when ModemManager is running it prints the command to disable it. It needs no account and sends no data.

Steps 1 to 4 below do the same by hand.

1. Prepare the host

The Linux, module and SIM requirements are the same as above. Docker Desktop on macOS or Windows cannot reach USB modules; use Docker Engine on Linux. Stop ModemManager, check that Linux sees the module, then install Docker Engine with the Compose plugin. Docker's convenience script works on Debian, Ubuntu and Fedora; the last command must print a Compose v2 version.

sudo systemctl disable --now ModemManager
lsusb | grep -i -E 'quectel|2c7c|qualcomm|05c6'
ls /dev/ttyUSB* /dev/cdc-wdm*
curl -fsSL https://get.docker.com | sh
sudo systemctl enable --now docker
docker compose version

The module's serial and QMI ports come from the host kernel's option and qmi_wwan drivers, which load automatically when a module is plugged in. If lsusb lists the module but /dev/ttyUSB* is missing, run sudo modprobe -a option qmi_wwan and plug the module in again.

Device access. The vonode container uses the host network, runs privileged and sees the host's whole /dev, because it drives the USB serial and QMI ports, creates TUN/XFRM interfaces for Wi-Fi calling and uses ALSA for call audio. Binding all of /dev means a module plugged in later, or one that comes back with other /dev/ttyUSB* numbers after a reset, appears without a restart. The vonode-gateway container runs as UID 10001 with a read-only file system and no capabilities, and only publishes TCP 2222.

2. Download the Compose file

mkdir -p ~/vonode && cd ~/vonode
VERSION=vX.Y.Z        # replace with the release tag
BASE=https://github.com/vonode/vonode-releases/releases/download/$VERSION
curl -fLO $BASE/docker-compose.yml
curl -fLO $BASE/docker-compose.yml.sha256
sha256sum -c docker-compose.yml.sha256

Optional settings go into a .env file in the same folder, for example TZ=Europe/London for the node's time zone (the default is UTC) or VONODE_SSH_PORT=2022 to publish the SSH service on another host port.

3. Start the node

sudo docker compose up -d
sudo docker compose ps

Docker pulls the pinned image and starts both containers; after about half a minute both show healthy. The node keeps its configuration, database and logs in config/, data/ and logs/ next to docker-compose.yml. On first start it creates a random administrator password; the plain text is in config/initial-admin-password, readable by root only.

4. Open the port and show the pairing QR code

Allow TCP 2222 through the host firewall and, if the phone will connect from outside your network, forward it on your router (or use a VPN). Then show the pairing QR code with the address the phone will use, and the port it connects to:

sudo ufw allow 2222/tcp
sudo docker compose exec vonode /app/vonode pair -c /app/config/config.yaml -host node.example.com -port 2222

The code is valid for five minutes and works once. Continue with Pair the app.

Everyday operation with Docker

Run these in the folder that holds docker-compose.yml.

Task Command
Status (both services healthy) sudo docker compose ps
Logs sudo docker compose logs -f vonode
New pairing code sudo docker compose exec vonode /app/vonode pair -c /app/config/config.yaml -host <address> -port 2222
Restart (up to two minutes) sudo docker compose restart vonode
Stop, keep data sudo docker compose down
Start again sudo docker compose up -d
Lost administrator password sudo docker compose stop vonode, sudo docker compose run --rm --no-deps vonode reset-password -c /app/config/config.yaml, sudo docker compose start vonode

Warning

Do not run docker compose down -v unless you want to delete the node. The vonode_gateway-private volume holds the SSH host key that paired phones pin; without it every phone must pair again.

Alternative: the setup script

The install package also contains a docker/ folder with setup.sh, which checks the host, lists the modules it finds, writes .env and a device override, starts both containers and prints the pairing QR code. Download and extract the package as in Download and verify, then:

cd vonode_${VERSION}_linux_amd64_commercial/docker
sudo ./setup.sh --host node.example.com --image vonode/vonode@sha256:<digest>

The release notes give the image as vonode/vonode@sha256:<digest>. --devices maps only the module device nodes present now instead of the whole /dev; ./setup.sh --help explains every option. Re-run sudo ./setup.sh after adding or moving a module in that mode; sudo ./setup.sh --uninstall stops the node and keeps its data.

NAS (Synology, QNAP, Unraid, TrueNAS)

Warning

Untested on real NAS hardware. These files follow the vendors' public documentation and have only been checked offline; nobody has run them on a Synology, QNAP, Unraid or TrueNAS box yet. Reports are welcome at support@vonode.cc. If you can, prefer a small Linux host with the systemd package or the one-click Compose command.

From v1.4.2 each release has a NAS package that runs the same two containers with the NAS's own container app, without setup.sh. Download vonode-1.4.2-nas.tar.gz and its .sha256 from the v1.4.2 release, check it with sha256sum -c vonode-1.4.2-nas.tar.gz.sha256 and extract it. Each folder has a README.md with the steps.

Folder NAS software How you install it
synology/ DSM 7.2 or later, Container Manager Container Manager › Project › Create, paste docker-compose.yml
qnap/ QTS / QuTS hero 5, Container Station 3 Container Station › Applications › Create, paste docker-compose.yml
unraid/ Unraid 6.12 or later, Docker enabled Copy vonode.xml and vonode-gateway.xml to the user template folder, add both containers
truenas/ TrueNAS SCALE 24.10 (Electric Eel) or later Apps › Discover Apps › ⋮ › Install via YAML, paste docker-compose.yml

Every file is pinned to the release's image digest, the same as in the release notes and docker-compose.yml. The image is multi-platform (amd64 and arm64) and Docker picks the right one; 32-bit ARM NAS models are not supported.

  • Host network and privileged core. The vonode container needs network_mode: host and privileged: true (Wi-Fi calling tunnels, USB modems); vonode-gateway stays unprivileged and publishes only TCP 2222.
  • Devices. The core gets the NAS's /dev, which includes /dev/bus/usb and /dev/net/tun. If the NAS refuses a /dev bind, list the devices one by one as the package README shows.
  • ModemManager must not grab the modems. Stock DSM, QTS and Unraid do not ship it; on TrueNAS SCALE run sudo systemctl disable --now ModemManager if it is active.
  • Kernel drivers. Containers cannot load drivers. Modems need option, qmi_wwan and cdc_wdm in the NAS kernel. Stock Synology DSM kernels usually lack them (DSM 7 dropped USB 3G/4G dongles), so expect the modem path not to work on stock DSM; check QNAP per model. A USB card reader with your SIM needs only /dev/bus/usb and is the more likely option there (Wi-Fi calling only; card-reader lines need Vonode Lifetime, not the free plan).
  • Never remove the named volumes when you delete or re-create the app: vonode_gateway-private holds the SSH host key that paired phones pin.

Pair over SSH with sudo docker exec -it vonode /app/vonode pair -c /app/config/config.yaml -host <NAS address> -port 2222. To upgrade, use the NAS package of the new release.

Pair the app

  1. Install Vonode from the App Store (free download) and open it.
  2. On the Connect your node screen, tap the scanner and point the camera at the QR code in the terminal.
  3. The app connects to the node over SSH, pins the node's host key and shows the node on its home screen with its numbers.

The app and the node must reach each other at the address in the code. If the app shows a connection error, check the port forward or VPN first, then create a fresh code. To pair a second phone later, use Move to a new phone in the app; it shows a one-time QR code.

Free plan or Lifetime

Without Vonode Lifetime the node runs the free plan: open the Numbers tab and choose the one number whose SMS you want to see. The choice cannot be changed later; a backup restore keeps it. The Messages tab then shows the SMS that number receives (from node v1.4.2 also over Wi-Fi Calling), and you can use Filtered, spam marking and sender rules.

Every other feature (calls, sending SMS, notifications, eSIM profiles, proxies, automations, more numbers) needs Vonode Lifetime for this node: a one-time In-App Purchase that does not renew. Open More › Subscription in the app. Subscriptions are no longer sold since 2026-10-21; an existing subscription keeps working until the end of its current period. Each Lifetime purchase unlocks one node. You can move it to another node in the app up to 3 times in 30 days; reinstalling the node software on new hardware or restoring a backup there also counts as a move. The node unlocks within seconds and restarts into full mode; then add your modules with Add Modem and switch Wi-Fi calling on per SIM.

Hardware, SIM plans, carrier charges and hosting are not included.

Upgrade

  • In the app: nodes installed with the systemd package offer signed updates under More › Software update. The node checks the update's signature before it installs it.
  • systemd package: download and verify the new package, extract it and run sudo ./install.sh from its top folder. Configuration, database and the SSH host key are kept.
  • Docker Compose: download the new release's docker-compose.yml and docker-compose.yml.sha256 into the same folder and check them, then run sudo docker compose pull and sudo docker compose up -d. Configuration, database and the SSH host key are kept, and both containers always run the same image. In-app updates do not replace the program inside a container; update the image instead. With the setup script, run sudo ./setup.sh --image vonode/vonode@sha256:<digest> with the new digest. Installed with the one-click command? Run it again.

Back up first: More › Backup & restore in the app. A backup carries messages, call history and the node's subscription or Lifetime binding; keep it private. To move to new hardware, create and download a backup on the old node, install and pair the new node, then import and restore the backup; this counts as one of the 3 moves in 30 days. Do not keep running the old node with the same data.

Uninstall

systemd package (this deletes your data and backups):

sudo systemctl disable --now vonode-gateway vonode
sudo rm /etc/systemd/system/vonode.service /etc/systemd/system/vonode-gateway.service /etc/tmpfiles.d/vonode.conf
sudo systemctl daemon-reload
sudo rm -rf /opt/vonode /var/lib/vonode-gateway

Docker Compose, in the folder with docker-compose.yml: sudo docker compose down stops the node and keeps everything. To delete the node and its data, run sudo docker compose down -v, then sudo rm -rf config data logs. With the setup script, sudo ./setup.sh --uninstall keeps the data and --uninstall --purge deletes it.

Troubleshooting

Problem What to do
ModemManager is running sudo systemctl disable --now ModemManager, then sudo systemctl restart vonode (with Docker, sudo docker compose restart vonode).
No module detected If lsusb shows nothing from Quectel (2c7c), try another cable and port, use a powered hub and check sudo dmesg | tail -n 30 for USB power errors. If lsusb lists the module but /dev/ttyUSB* is missing, run sudo modprobe -a option qmi_wwan, then unplug and replug.
The app cannot connect From a device outside your network, run nc -vz node.example.com 2222. No answer means the router forward or firewall is wrong, or your provider uses carrier-grade NAT; then use a VPN and pair with the host's VPN address.
Pairing code expired or used Codes last five minutes and work once. Run the pair command again.
Wi-Fi calling will not register The plan needs Wi-Fi calling enabled, the module must have registered on the cellular network at least once with that SIM, and the host needs working IPv6 or IPv4 to the carrier. The app's diagnostics page shows the current phase.

More in the wiki and the step-by-step guide.

Source code of GPL and LGPL components

The node software is proprietary, but it includes strongSwan (GPL-2.0-or-later) and statically linked glibc and GMP (LGPL). For every release:

  • the complete corresponding source of these components, with build scripts, is published as the release asset vonode_<version>_linux_amd64_commercial.sources.tar;
  • SOURCES.md in the install package lists the components and contains the written offer: the source is available for at least three years after the version is published, and a copy on physical media can be requested from support@vonode.cc for no more than the cost of the media and shipping;
  • the SPDX SBOM and THIRD_PARTY_NOTICES.txt list all third-party components and their licenses.

The Docker image also contains Alpine Linux packages under GPL, LGPL and MPL licenses; their corresponding source is published as the release asset vonode-<version>-docker-alpine-sources.tar, on the same terms (at least three years; physical copy from support@vonode.cc).

Support and legal

Vonode is not an emergency service. It depends on your hardware, carrier, network and Apple services; do not rely on it for emergency or life-safety communication. Use it only with SIMs, numbers and networks you are authorized to use, and follow your carrier's terms.

DJI is a trademark of SZ DJI Technology Co., Ltd.; Quectel is a trademark of Quectel Wireless Solutions Co., Ltd.; Apple, iPhone, iPad and App Store are trademarks of Apple Inc.; Docker is a trademark of Docker, Inc. Vonode is not affiliated with or endorsed by them.

© 2026 VONODE LLC. Vonode is a product of VONODE LLC.

About

Vonode 节点软件:安装包下载、安装指南与 Wiki(仅发布文件,不含源码)|Vonode node software: releases, install guides and wiki. Release files only, no source code.

Topics

Resources

Stars

24 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors