Heltec Wireless Stick V3 863-928
Heltec Wireless Stick V3 863-928.
- ESP32-S3FN8
- Xtensa 32-bit LX7 dual core processor, five stage pipeline rack Structure, main frequency up to 240MHz
- SX1262 LoRa node chip
- Onboard SH1.25-2 battery interface, integrated lithium battery management system
- Onboard 0.49-inch 64*32 dot matrix OLED display
- Integrated CP2102 USB to serial port chip
back to microcontrollers page.
Links
Heltec Wireless Stick V3, Github Heltec Automation ESP32_LoRaWAN, Heltec_ESP32, Meshtastic supported devices Heltec,
local links
History
2023-08-17: eb - meshtastic set region
tingo@kg-elitebook$ meshtastic --port /dev/cuaU0 --set lora.region EU_868 Connected to radio Set lora.region to EU_868 Writing modified preferences to device
try info again
tingo@kg-elitebook$ meshtastic --port /dev/cuaU0 --info Connected to radio Owner: Meshtastic b7d0 (b7d0) My info: { "myNodeNum": 1976481744, "rebootCount": 4, "minAppVersion": 20300 } Metadata: { "firmwareVersion": "2.1.23.04bbdc6", "deviceStateVersion": 20, "canShutdown": true, "hasWifi": true, "hasBluetooth": true, "positionFlags": 3, "hwModel": "HELTEC_WSL_V3" } Nodes in mesh: {"!75ceb7d0": {"num": 1976481744, "user": {"longName": "Meshtastic b7d0", "shortName": "b7d0", "macaddr": "dc:54:75:ce:b7:d0", "hwModel": "HELTEC_WSL_V3"}, "position": {}}} Preferences: { "device": { "serialEnabled": true, "nodeInfoBroadcastSecs": 10800 }, "position": { "positionBroadcastSecs": 900, "positionBroadcastSmartEnabled": true, "gpsEnabled": true, "gpsUpdateInterval": 120, "gpsAttemptTime": 900, "positionFlags": 3, "rxGpio": 34, "txGpio": 12, "broadcastSmartMinimumDistance": 100, "broadcastSmartMinimumIntervalSecs": 30 }, "power": { "waitBluetoothSecs": 60, "sdsSecs": 4294967295, "lsSecs": 300, "minWakeSecs": 10 }, "network": { "ntpServer": "0.pool.ntp.org" }, "display": { "screenOnSecs": 600 }, "lora": { "usePreset": true, "region": "EU_868", "hopLimit": 3, "txEnabled": true, "txPower": 27, "sx126xRxBoostedGain": true }, "bluetooth": { "enabled": true, "mode": "FIXED_PIN", "fixedPin": 123456 } } Module preferences: { "mqtt": { "address": "mqtt.meshtastic.org", "username": "meshdev", "password": "large4cats" }, "serial": {}, "externalNotification": {}, "rangeTest": {}, "telemetry": { "deviceUpdateInterval": 900, "environmentUpdateInterval": 900, "airQualityInterval": 900 }, "cannedMessage": {}, "audio": {}, "remoteHardware": {} } Channels: PRIMARY psk=default { "psk": "AQ==" } Primary channel URL: https://meshtastic.org/e/#CgMSAQESDAgBOANAA0gBUBtoAQ
2023-08-17: eb - try meshtastic
tingo@kg-elitebook$ PATH=${PATH}:${HOME}/.local/bin tingo@kg-elitebook$ export PATH
find it
tingo@kg-elitebook$ which meshtastic /home/tingo/.local/bin/meshtastic
parameters
tingo@kg-elitebook$ meshtastic --help usage: meshtastic [-h] [--configure CONFIGURE] [--export-config] [--port PORT] [--host HOST] [--seriallog SERIALLOG] [--info] [--get-canned-message] [--get-ringtone] [--nodes] [--qr] [--get GET] [--set SET SET] [--seturl SETURL] [--ch-index CH_INDEX] [--ch-add CH_ADD] [--ch-del] [--ch-enable] [--ch-disable] [--ch-set CH_SET CH_SET] [--ch-vlongslow] [--ch-longslow] [--ch-longfast] [--ch-medslow] [--ch-medfast] [--ch-shortslow] [--ch-shortfast] [--set-owner SET_OWNER] [--set-canned-message SET_CANNED_MESSAGE] [--set-ringtone SET_RINGTONE] [--set-owner-short SET_OWNER_SHORT] [--set-ham SET_HAM] [--dest DEST] [--sendtext SENDTEXT] [--sendping] [--traceroute TRACEROUTE] [--ack] [--reboot] [--reboot-ota] [--shutdown] [--device-metadata] [--begin-edit] [--commit-edit] [--factory-reset] [--reset-nodedb] [--reply] [--gpio-wrb GPIO_WRB GPIO_WRB] [--gpio-rd GPIO_RD] [--gpio-watch GPIO_WATCH] [--no-time] [--setalt SETALT] [--setlat SETLAT] [--setlon SETLON] [--pos-fields [POS_FIELDS ...]] [--debug] [--test] [--ble BLE] [--noproto] [--version] [--support] optional arguments: -h, --help show this help message and exit --configure CONFIGURE Specify a path to a yaml(.yml) file containing the desired settings for the connected device. --export-config Export the configuration in yaml(.yml) format. --port PORT The port the Meshtastic device is connected to, i.e. /dev/ttyUSB0. If unspecified, we'll try to find it. --host HOST The hostname/ipaddr of the device to connect to (over TCP) --seriallog SERIALLOG Log device serial output to either 'stdout', 'none' or a filename to append to. --info Read and display the radio config information --get-canned-message Show the canned message plugin message --get-ringtone Show the stored ringtone --nodes Print Node List in a pretty formatted table --qr Display the QR code that corresponds to the current channel --get GET Get a preferences field. Use an invalid field such as '0' to get a list of all fields. Can use either snake_case or camelCase format. (ex: 'ls_secs' or 'lsSecs') --set SET SET Set a preferences field. Can use either snake_case or camelCase format. (ex: 'ls_secs' or 'lsSecs') --seturl SETURL Set a channel URL --ch-index CH_INDEX Set the specified channel index. Channels start at 0 (0 is the PRIMARY channel). --ch-add CH_ADD Add a secondary channel, you must specify a channel name --ch-del Delete the ch-index channel --ch-enable Enable the specified channel --ch-disable Disable the specified channel --ch-set CH_SET CH_SET Set a channel parameter. To see channel settings available:'--ch-set all all --ch-index 0'. Can set the 'psk' using this command. To disable encryption on primary channel:'--ch-set psk none --ch-index 0'. To set encryption with a new random key on second channel:'--ch-set psk random --ch-index 1'. To set encryption back to the default:'--ch-set psk default --ch-index 0'. To set encryption with your own key: '--ch-set psk 0x1a1a1a1a2b2b2b2b1a1a1a1a2b2b2b2b1a1a1a1a2b2b2b2b1a1a1a1a2b2b2b2b --ch-index 0'. --ch-vlongslow Change to the very long-range and slow channel --ch-longslow Change to the long-range and slow channel --ch-longfast Change to the long-range and fast channel --ch-medslow Change to the med-range and slow channel --ch-medfast Change to the med-range and fast channel --ch-shortslow Change to the short-range and slow channel --ch-shortfast Change to the short-range and fast channel --set-owner SET_OWNER Set device owner name --set-canned-message SET_CANNED_MESSAGE Set the canned messages plugin message (up to 200 characters). --set-ringtone SET_RINGTONE Set the Notification Ringtone (up to 230 characters). --set-owner-short SET_OWNER_SHORT Set device owner short name --set-ham SET_HAM Set licensed Ham ID and turn off encryption --dest DEST The destination node id for any sent commands, if not set '^all' or '^local' is assumed as appropriate --sendtext SENDTEXT Send a text message. Can specify a destination '--dest' and/or channel index '--ch-index'. --sendping Send a ping message (which requests a reply) --traceroute TRACEROUTE Traceroute from connected node to a destination. You need pass the destination ID as argument, like this: '--traceroute !ba4bf9d0' Only nodes that have the encryption key can be traced. --ack Use in combination with --sendtext to wait for an acknowledgment. --reboot Tell the destination node to reboot --reboot-ota Tell the destination node to reboot into factory firmware --shutdown Tell the destination node to shutdown --device-metadata Get the device metadata from the node --begin-edit Tell the node to open a transaction to edit settings --commit-edit Tell the node to commit open settings transaction --factory-reset Tell the destination node to install the default config --reset-nodedb Tell the destination node clear its list of nodes --reply Reply to received messages --gpio-wrb GPIO_WRB GPIO_WRB Set a particular GPIO # to 1 or 0 --gpio-rd GPIO_RD Read from a GPIO mask (ex: '0x10') --gpio-watch GPIO_WATCH Start watching a GPIO mask for changes (ex: '0x10') --no-time Suppress sending the current time to the mesh --setalt SETALT Set device altitude (allows use without GPS) --setlat SETLAT Set device latitude (allows use without GPS) --setlon SETLON Set device longitude (allows use without GPS) --pos-fields [POS_FIELDS ...] Specify fields to send when sending a position. Use no argument for a list of valid values. Can pass multiple values as a space separated list like this: '--pos-fields POS_ALTITUDE POS_ALT_MSL' --debug Show API library debug log messages --test Run stress test against all connected Meshtastic devices --ble BLE BLE mac address to connect to (BLE is not yet supported for this tool) --noproto Don't start the API, just function as a dumb serial terminal. --version show program's version number and exit --support Show support info (useful when troubleshooting an issue)
2023-08-17: eb - install meshtastic prerequisites
tingo@kg-elitebook$ pip --version pip 23.1.2 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)
install pytap and meshtastic
tingo@kg-elitebook$ pip install --upgrade pytap2 Defaulting to user installation because normal site-packages is not writeable Collecting pytap2 Downloading pytap2-2.3.0-py3-none-any.whl (5.8 kB) Installing collected packages: pytap2 Successfully installed pytap2-2.3.0
meshtastic
tingo@kg-elitebook$ pip install --upgrade meshtastic Defaulting to user installation because normal site-packages is not writeable Collecting meshtastic Downloading meshtastic-2.2.0-py3-none-any.whl (89 kB) ---------------------------------------- 89.7/89.7 kB 4.7 MB/s eta 0:00:00 Requirement already satisfied: pyserial>=3.4 in /usr/local/lib/python3.9/site-packages (from meshtastic) (3.5) Collecting protobuf>=3.13.0 (from meshtastic) Downloading protobuf-4.24.0-py3-none-any.whl (175 kB) ---------------------------------------- 175.7/175.7 kB 7.7 MB/s eta 0:00:00 Collecting requests>=2.25.0 (from meshtastic) Downloading requests-2.31.0-py3-none-any.whl (62 kB) ---------------------------------------- 62.6/62.6 kB 9.5 MB/s eta 0:00:00 Collecting pypubsub>=4.0.3 (from meshtastic) Downloading Pypubsub-4.0.3-py3-none-any.whl (61 kB) ---------------------------------------- 61.4/61.4 kB 12.5 MB/s eta 0:00:00 Collecting dotmap>=1.3.14 (from meshtastic) Downloading dotmap-1.3.30-py3-none-any.whl (11 kB) Collecting pexpect>=4.6.0 (from meshtastic) Downloading pexpect-4.8.0-py2.py3-none-any.whl (59 kB) ---------------------------------------- 59.0/59.0 kB 12.1 MB/s eta 0:00:00 Collecting pyqrcode>=1.2.1 (from meshtastic) Downloading PyQRCode-1.2.1.zip (41 kB) ---------------------------------------- 41.9/41.9 kB 8.4 MB/s eta 0:00:00 Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Collecting tabulate>=0.8.9 (from meshtastic) Downloading tabulate-0.9.0-py3-none-any.whl (35 kB) Collecting timeago>=1.0.15 (from meshtastic) Downloading timeago-1.0.16-py3-none-any.whl (29 kB) Collecting pyyaml (from meshtastic) Downloading PyYAML-6.0.1.tar.gz (125 kB) ---------------------------------------- 125.2/125.2 kB 21.7 MB/s eta 0:00:00 Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Collecting ptyprocess>=0.5 (from pexpect>=4.6.0->meshtastic) Downloading ptyprocess-0.7.0-py2.py3-none-any.whl (13 kB) Collecting charset-normalizer<4,>=2 (from requests>=2.25.0->meshtastic) Downloading charset_normalizer-3.2.0-py3-none-any.whl (46 kB) ---------------------------------------- 46.7/46.7 kB 9.0 MB/s eta 0:00:00 Collecting idna<4,>=2.5 (from requests>=2.25.0->meshtastic) Downloading idna-3.4-py3-none-any.whl (61 kB) ---------------------------------------- 61.5/61.5 kB 12.1 MB/s eta 0:00:00 Collecting urllib3<3,>=1.21.1 (from requests>=2.25.0->meshtastic) Downloading urllib3-2.0.4-py3-none-any.whl (123 kB) ---------------------------------------- 123.9/123.9 kB 22.9 MB/s eta 0:00:00 Collecting certifi>=2017.4.17 (from requests>=2.25.0->meshtastic) Downloading certifi-2023.7.22-py3-none-any.whl (158 kB) ---------------------------------------- 158.3/158.3 kB 25.9 MB/s eta 0:00:00 Building wheels for collected packages: pyqrcode, pyyaml Building wheel for pyqrcode (pyproject.toml) ... done Created wheel for pyqrcode: filename=PyQRCode-1.2.1-py3-none-any.whl size=36221 sha256=5b94ed9bd36a78171cb448ca681c02b4b0b48fa07e079b54cd92a9ec70273620 Stored in directory: /usr/home/tingo/.cache/pip/wheels/da/75/c0/38c7f82750de2725429b6b8571dca254249d73f6c882c5d9b1 Building wheel for pyyaml (pyproject.toml) ... done Created wheel for pyyaml: filename=PyYAML-6.0.1-cp39-cp39-freebsd_13_2_release_amd64.whl size=45373 sha256=932f0b23eb2978a1fa86bc9b9aad3d533d7d15ed4d4ca8a9db24ced42ad7382a Stored in directory: /usr/home/tingo/.cache/pip/wheels/1c/ff/88/3a317d1db793206ab64cb66367bf6f84186b75849656be786a Successfully built pyqrcode pyyaml Installing collected packages: timeago, pyqrcode, ptyprocess, dotmap, urllib3, tabulate, pyyaml, pypubsub, protobuf, pexpect, idna, charset-normalizer, certifi, requests, meshtastic WARNING: The script tabulate is installed in '/home/tingo/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. WARNING: The script normalizer is installed in '/home/tingo/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. WARNING: The scripts mesh-tunnel and meshtastic are installed in '/home/tingo/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. Successfully installed certifi-2023.7.22 charset-normalizer-3.2.0 dotmap-1.3.30 idna-3.4 meshtastic-2.2.0 pexpect-4.8.0 protobuf-4.24.0 ptyprocess-0.7.0 pypubsub-4.0.3 pyqrcode-1.2.1 pyyaml-6.0.1 requests-2.31.0 tabulate-0.9.0 timeago-1.0.16 urllib3-2.0.4
2023-08-17: eb - flash Meshtastic firmware
tingo@kg-elitebook$ ./device-install.sh -p /dev/cuaU0 -P python3.9 -f ./firmware-heltec-wsl-v3-2.1.23.04bbdc6.bin Trying to flash ./firmware-heltec-wsl-v3-2.1.23.04bbdc6.bin, but first erasing and writing system information esptool.py v4.5 Serial port /dev/cuaU0 Connecting......... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (revision v0.1) Features: WiFi, BLE Crystal is 40MHz MAC: dc:54:75:ce:b7:d0 Uploading stub... Running stub... Stub running... Erasing flash (this may take a while)... Chip erase completed successfully in 3.0s Hard resetting via RTS pin... esptool.py v4.5 Serial port /dev/cuaU0 Connecting......... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (revision v0.1) Features: WiFi, BLE Crystal is 40MHz MAC: dc:54:75:ce:b7:d0 Uploading stub... Running stub... Stub running... Configuring flash size... Flash will be erased from 0x00000000 to 0x001dbfff... Compressed 1948288 bytes to 1173390... Wrote 1948288 bytes (1173390 compressed) at 0x00000000 in 103.6 seconds (effective 150.5 kbit/s)... Hash of data verified. Leaving... Hard resetting via RTS pin... esptool.py v4.5 Serial port /dev/cuaU0 Connecting........ Detecting chip type... ESP32-S3 Chip is ESP32-S3 (revision v0.1) Features: WiFi, BLE Crystal is 40MHz MAC: dc:54:75:ce:b7:d0 Uploading stub... Running stub... Stub running... Configuring flash size... Flash will be erased from 0x00260000 to 0x002e2fff... Compressed 534624 bytes to 328047... Wrote 534624 bytes (328047 compressed) at 0x00260000 in 29.1 seconds (effective 147.1 kbit/s)... Hash of data verified. Leaving... Hard resetting via RTS pin... esptool.py v4.5 Serial port /dev/cuaU0 Connecting......... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (revision v0.1) Features: WiFi, BLE Crystal is 40MHz MAC: dc:54:75:ce:b7:d0 Uploading stub... Running stub... Stub running... Configuring flash size... Flash will be erased from 0x00300000 to 0x003fffff... Compressed 1048576 bytes to 438103... Wrote 1048576 bytes (438103 compressed) at 0x00300000 in 39.6 seconds (effective 212.0 kbit/s)... Hash of data verified. Leaving... Hard resetting via RTS pin...
2023-08-17: eb - using esptool
tingo@kg-elitebook$ esptool.py version esptool.py v4.5 4.5
check connectivity
tingo@kg-elitebook$ esptool.py --port /dev/cuaU0 chip_id esptool.py v4.5 Serial port /dev/cuaU0 Connecting......... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (revision v0.1) Features: WiFi, BLE Crystal is 40MHz MAC: dc:54:75:ce:b7:d0 Uploading stub... Running stub... Stub running... Warning: ESP32-S3 has no Chip ID. Reading MAC instead. MAC: dc:54:75:ce:b7:d0 Hard resetting via RTS pin...
2023-08-17: eb - trying to flash Mestastic firmware via web installer (in Chromium) - it doesn't find any serial ports.
2023-08-17: eb - connecting the Wireless Stick V3 to a FreeBSD laptop, I get this in /var/log/messages:
Aug 17 19:34:15 kg-elitebook kernel: ugen0.3: <Silicon Labs CP2102 USB to UART Bridge Controller> at usbus0 Aug 17 19:34:15 kg-elitebook kernel: uslcom0 on uhub0 Aug 17 19:34:15 kg-elitebook kernel: uslcom0: <CP2102 USB to UART Bridge Controller> on usbus0
usbconfig
root@kg-elitebook# usbconfig -d ugen0.3 ugen0.3: <Silicon Labs CP2102 USB to UART Bridge Controller> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)
dump device description
root@kg-elitebook# usbconfig -d ugen0.3 dump_device_desc ugen0.3: <Silicon Labs CP2102 USB to UART Bridge Controller> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0110 bDeviceClass = 0x0000 <Probed by interface class> bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x10c4 idProduct = 0xea60 bcdDevice = 0x0100 iManufacturer = 0x0001 <Silicon Labs> iProduct = 0x0002 <CP2102 USB to UART Bridge Controller> iSerialNumber = 0x0003 <0001> bNumConfigurations = 0x0001
current config
root@kg-elitebook# usbconfig -d ugen0.3 dump_curr_config_desc ugen0.3: <Silicon Labs CP2102 USB to UART Bridge Controller> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA) Configuration index 0 bLength = 0x0009 bDescriptorType = 0x0002 wTotalLength = 0x0020 bNumInterfaces = 0x0001 bConfigurationValue = 0x0001 iConfiguration = 0x0000 <no string> bmAttributes = 0x0080 bMaxPower = 0x0032 Interface 0 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x0000 bAlternateSetting = 0x0000 bNumEndpoints = 0x0002 bInterfaceClass = 0x00ff <Vendor specific> bInterfaceSubClass = 0x0000 bInterfaceProtocol = 0x0000 iInterface = 0x0002 <CP2102 USB to UART Bridge Controller> Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0081 <IN> bmAttributes = 0x0002 <BULK> wMaxPacketSize = 0x0040 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0001 <OUT> bmAttributes = 0x0002 <BULK> wMaxPacketSize = 0x0040 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000
2023-07-24: the package arrived, straight into my mailbox. Contents:
1 x LoRa V3 board 1 x antenna cable 1 x antanna 1 x battery cable 2 x pin headers (1 row x 18)
2023-07-11: the order shipped.
2023-07-10: From AliExpress, Heltec Automation Store, I ordered 1 x Heltec Wireless Stick V3 863-928. Price was USD 15.01, the other USD 16.15, shipping USD 7.13 and tax USD 9.07, with USD 2.- discount, a total of USD 45.36. (I also ordered a different stick).