LilyGo T3S3 V1.0 ESP32-S3 LoRa SX1276 2.4G Board

LilyGo T3S3 V1.0 ESP32-S3 LoRa SX1276 2.4G Development Board.

The board is

ESP32-S3
* SX1276 LoRa module
* TF Card slot (microSD)
* 0.96 inch OLED display SSD1306
* bluetooth
* WiFi
* reset (RST) pushbutton
* boot pushbutton
* on / off switch

back to microcontrollers page.

Links

LilyGo Github repository LilyGo-LoRa-Series, Meshtastic,
Github Meshtastic clients Meshtastic-Android, python, web, enclosures, firmware,

local links

c2,

History

2023-07-30: c2 - see nodes

tingo@kg-core2:~ $ meshtastic --port /dev/cuaU0 --nodes
Connected to radio
╒═════╤═════════════════╤═══════╤═══════════╤════════════╤═════════════╤════════════╤═══════════╤═════════════════╤════════════════╤═══════╤═════════════════════╤══════════╕
│   N  User             AKA    ID         Latitude    Longitude    Altitude    Battery    Channel util.    Tx air util.    SNR    LastHeard            Since    │
╞═════╪═════════════════╪═══════╪═══════════╪════════════╪═════════════╪════════════╪═══════════╪═════════════════╪════════════════╪═══════╪═════════════════════╪══════════╡
│   1  Meshtastic e95c  e95c   !75d5e95c  N/A         N/A          N/A         101%       N/A              0.16%           N/A    2023-07-30 21:01:25  just now │
╘═════╧═════════════════╧═══════╧═══════════╧════════════╧═════════════╧════════════╧═══════════╧═════════════════╧════════════════╧═══════╧═════════════════════╧══════════╛

metadata

tingo@kg-core2:~ $ meshtastic --port /dev/cuaU0 --device-metadata
Connected to radio
INFO file:node.py getMetadata line:585 Requesting device metadata

firmware_version: 2.1.11.5ec624d
device_state_version: 20

2023-07-30: c2 - set LoRa region

tingo@kg-core2:~ $ meshtastic --port /dev/cuaU0 --set lora.region EU_868
Connected to radio
Set lora.region to EU_868
Writing modified preferences to device

and check the info again

tingo@kg-core2:~ $ meshtastic --port /dev/cuaU0 --info
Connected to radio

Owner: Meshtastic e95c (e95c)
My info: { "myNodeNum": 1976953180, "maxChannels": 8, "firmwareVersion": "2.1.11.5ec624d", "rebootCount": 8, "bitrate": 77.526985, "messageTimeoutMsec": 300000, "minAppVersion": 20300, "hasWifi": true, "channelUtilization": 2.9533334, "airUtilTx": 0.04922222 }

Nodes in mesh: {"!75d5e95c": {"num": 1976953180, "user": {"longName": "Meshtastic e95c", "shortName": "e95c", "macaddr": "dc:54:75:d5:e9:5c", "hwModel": "TLORA_T3_S3"}, "position": {}, "deviceMetrics": {"batteryLevel": 101, "voltage": 4.392, "channelUtilization": 1.695, "airUtilTx": 0.02825}}}

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, "meshSdsTimeoutSecs": 7200, "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 }, "bluetooth": { "enabled": true, "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/#CgMSAQESCggBOANAA0gBUBs

more info

tingo@kg-core2:~ $ meshtastic --port /dev/cuaU0 --get lora.region
Connected to radio
lora.region: 3
Completed getting preferences

bandwidth

tingo@kg-core2:~ $ meshtastic --port /dev/cuaU0 --get lora.bandwidth
ERROR file:stream_interface.py __reader line:175 Error while handling message from radio Value out of range: -1
Traceback (most recent call last):
  File "/home/tingo/.local/lib/python3.9/site-packages/meshtastic/stream_interface.py", line 173, in __reader
    self._handleFromRadio(self._rxBuf[HEADER_LEN:])
  File "/home/tingo/.local/lib/python3.9/site-packages/meshtastic/mesh_interface.py", line 735, in _handleFromRadio
    self._handleConfigComplete()
  File "/home/tingo/.local/lib/python3.9/site-packages/meshtastic/mesh_interface.py", line 661, in _handleConfigComplete
    self.localNode.requestChannels()
  File "/home/tingo/.local/lib/python3.9/site-packages/meshtastic/node.py", line 81, in requestChannels
    self._requestChannel(0)
  File "/home/tingo/.local/lib/python3.9/site-packages/meshtastic/node.py", line 741, in _requestChannel
    return self._sendAdmin(
  File "/home/tingo/.local/lib/python3.9/site-packages/meshtastic/node.py", line 766, in _sendAdmin
    return self.iface.sendData(
  File "/home/tingo/.local/lib/python3.9/site-packages/meshtastic/mesh_interface.py", line 328, in sendData
    p = self._sendPacket(meshPacket, destinationId, wantAck=wantAck)
  File "/home/tingo/.local/lib/python3.9/site-packages/meshtastic/mesh_interface.py", line 449, in _sendPacket
    meshPacket.to = nodeNum
  File "/home/tingo/.local/lib/python3.9/site-packages/google/protobuf/internal/python_message.py", line 702, in field_setter
    new_value = type_checker.CheckValue(new_value)
  File "/home/tingo/.local/lib/python3.9/site-packages/google/protobuf/internal/type_checkers.py", line 170, in CheckValue
    raise ValueError('Value out of range: %d' % proposed_value)
ValueError: Value out of range: -1
Traceback (most recent call last):
  File "/home/tingo/.local/bin/meshtastic", line 8, in <module>
    sys.exit(main())
  File "/home/tingo/.local/lib/python3.9/site-packages/meshtastic/__main__.py", line 1335, in main
    common()
  File "/home/tingo/.local/lib/python3.9/site-packages/meshtastic/__main__.py", line 945, in common
    client = meshtastic.serial_interface.SerialInterface(
  File "/home/tingo/.local/lib/python3.9/site-packages/meshtastic/serial_interface.py", line 61, in __init__
    StreamInterface.__init__(
  File "/home/tingo/.local/lib/python3.9/site-packages/meshtastic/stream_interface.py", line 50, in __init__
    self.connect()
  File "/home/tingo/.local/lib/python3.9/site-packages/meshtastic/stream_interface.py", line 74, in connect
    self._waitConnected()
  File "/home/tingo/.local/lib/python3.9/site-packages/meshtastic/mesh_interface.py", line 524, in _waitConnected
    raise Exception("Timed out waiting for connection completion")
Exception: Timed out waiting for connection completion

re-try

tingo@kg-core2:~ $ meshtastic --port /dev/cuaU0 --get lora.bandwidth
Connected to radio
lora.bandwidth: 0
Completed getting preferences

more

tingo@kg-core2:~ $ meshtastic --port /dev/cuaU0 --get lora.spread_factor --get lora.coding_rate --get lora.frequency_offset
Connected to radio
lora.spread_factor: 0
lora.coding_rate: 0
lora.frequency_offset: 0.0
Completed getting preferences

even more

tingo@kg-core2:~ $ meshtastic --port /dev/cuaU0 --get lora.hop_limit --get lora.tx_power --get lora.tx_enabled
Connected to radio
lora.hop_limit: 3
lora.tx_power: 27
lora.tx_enabled: True
Completed getting preferences

2023-07-30: c2 - check out the node

tingo@kg-core2:~ $ meshtastic --info
Warning: No Meshtastic devices detected.
tingo@kg-core2:~ $ meshtastic --info --port /dev/cuaU0
Connected to radio

Owner: Meshtastic e95c (e95c)
My info: { "myNodeNum": 1976953180, "maxChannels": 8, "firmwareVersion": "2.1.11.5ec624d", "rebootCount": 7, "bitrate": 77.526985, "messageTimeoutMsec": 300000, "minAppVersion": 20300, "hasWifi": true }

Nodes in mesh: {"!75d5e95c": {"num": 1976953180, "user": {"longName": "Meshtastic e95c", "shortName": "e95c", "macaddr": "dc:54:75:d5:e9:5c", "hwModel": "TLORA_T3_S3"}, "position": {}, "deviceMetrics": {"batteryLevel": 101, "voltage": 4.399}}}

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, "meshSdsTimeoutSecs": 7200, "sdsSecs": 4294967295, "lsSecs": 300, "minWakeSecs": 10 }, "network": { "ntpServer": "0.pool.ntp.org" }, "display": { "screenOnSecs": 600 }, "lora": { "usePreset": true, "hopLimit": 3, "txEnabled": true, "txPower": 30 }, "bluetooth": { "enabled": true, "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/#CgMSAQESCAgBQANIAVAe

2023-07-30: c2 - try the meshtastic client

tingo@kg-core2:~ $ which meshtastic
/home/tingo/.local/bin/meshtastic
tingo@kg-core2:~ $ 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)

very comprehensive. Check version

tingo@kg-core2:~ $ meshtastic --version
2.1.11

2023-07-30: c2 - install python meshtastic client

tingo@kg-core2:~ $ pip --version
pip 23.1.2 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)
tingo@kg-core2:~ $ pip install --upgrade meshtastic
Defaulting to user installation because normal site-packages is not writeable
Collecting meshtastic
  Downloading meshtastic-2.1.11-py3-none-any.whl (90 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 90.0/90.0 kB 6.8 MB/s eta 0:00:00
Requirement already satisfied: pyserial>=3.4 in ./.local/lib/python3.9/site-packages (from meshtastic) (3.5)
Requirement already satisfied: protobuf>=3.13.0 in ./.local/lib/python3.9/site-packages (from meshtastic) (3.20.3)
Requirement already satisfied: requests>=2.25.0 in ./.local/lib/python3.9/site-packages (from meshtastic) (2.28.1)
Collecting pypubsub>=4.0.3 (from meshtastic)
  Downloading Pypubsub-4.0.3-py3-none-any.whl (61 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.4/61.4 kB 23.6 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)
  Using cached pexpect-4.8.0-py2.py3-none-any.whl (59 kB)
Collecting pyqrcode>=1.2.1 (from meshtastic)
  Downloading PyQRCode-1.2.1.zip (41 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 41.9/41.9 kB 13.6 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: tabulate>=0.8.9 in ./.local/lib/python3.9/site-packages (from meshtastic) (0.8.10)
Collecting timeago>=1.0.15 (from meshtastic)
  Downloading timeago-1.0.16-py3-none-any.whl (29 kB)
Requirement already satisfied: pyyaml in ./.local/lib/python3.9/site-packages (from meshtastic) (6.0)
Collecting ptyprocess>=0.5 (from pexpect>=4.6.0->meshtastic)
  Using cached ptyprocess-0.7.0-py2.py3-none-any.whl (13 kB)
Requirement already satisfied: charset-normalizer<3,>=2 in ./.local/lib/python3.9/site-packages (from requests>=2.25.0->meshtastic) (2.1.1)
Requirement already satisfied: idna<4,>=2.5 in ./.local/lib/python3.9/site-packages (from requests>=2.25.0->meshtastic) (3.4)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in ./.local/lib/python3.9/site-packages (from requests>=2.25.0->meshtastic) (1.26.12)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/site-packages (from requests>=2.25.0->meshtastic) (2023.5.7)
Building wheels for collected packages: pyqrcode
  Building wheel for pyqrcode (pyproject.toml) ... done
  Created wheel for pyqrcode: filename=PyQRCode-1.2.1-py3-none-any.whl size=36226 sha256=bd4ac5187d3232a9b6ecc70477337eb49f0f33aa132d66e347f4e8779094bf82
  Stored in directory: /usr/home/tingo/.cache/pip/wheels/da/75/c0/38c7f82750de2725429b6b8571dca254249d73f6c882c5d9b1
Successfully built pyqrcode
Installing collected packages: timeago, pyqrcode, ptyprocess, dotmap, pypubsub, pexpect, meshtastic
Successfully installed dotmap-1.3.30 meshtastic-2.1.11 pexpect-4.8.0 ptyprocess-0.7.0 pypubsub-4.0.3 pyqrcode-1.2.1 timeago-1.0.16

2023-07-30: c2 - testing the board with esptool esptool version

tingo@kg-core2:~ $ esptool.py version
esptool.py v3.3.1
3.3.1

try to detect the board

tingo@kg-core2:~ $ esptool.py chip_id
esptool.py v3.3.1
Found 2 serial ports
Serial port /dev/cuau0
Connecting......................................
/dev/cuau0 failed to connect: Failed to connect to Espressif device: No serial data received.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html
Serial port /dev/cuaU0
Connecting........
/dev/cuaU0 failed to connect: Could not configure port: (6, 'Device not configured')

A fatal error occurred: Could not connect to an Espressif device on any of the 2 available serial ports.

re-try

tingo@kg-core2:~ $ esptool.py chip_id
esptool.py v3.3.1
Found 2 serial ports
Serial port /dev/cuau0
Connecting......................................
/dev/cuau0 failed to connect: Failed to connect to Espressif device: No serial data received.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html
Serial port /dev/cuaU0
Connecting.....
Detecting chip type... ESP32-S3
Chip is ESP32-S3
Features: WiFi, BLE
Crystal is 40MHz
MAC: dc:54:75:d5:e9:5c
Uploading stub...
Running stub...
Stub running...
Warning: ESP32-S3 has no Chip ID. Reading MAC instead.
MAC: dc:54:75:d5:e9:5c
Hard resetting via RTS pin...

yes - the display turns off, and usbconfig now reports

root@kg-core2:~ # usbconfig -d ugen1.7
ugen1.7: <Espressif USB JTAG/serial debug unit> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (500mA)

pressing the reset button on the board restores it to normal.

2023-07-30: firmware - looks like 2.1.19 is the newest stable firmware.

2023-07-30: c2 - and it looks like there is firmware running on it, because the display shows info about Meshtastic version 2.1.1. Lets see which port it uses

root@kg-core2:~ # sysctl dev.umodem.0.ttyname
dev.umodem.0.ttyname: U0

so U0

root@kg-core2:~ # ll /dev/cuaU0 /dev/ttyU0
crw-rw----  1 uucp  dialer  0x1fd Jul 30 18:48 /dev/cuaU0
crw-------  1 root  wheel   0x1fa Jul 30 18:48 /dev/ttyU0

2023-07-30: c2 - plugging it into my FreeBSD workstation, I get this in /var/log/messages

Jul 30 18:11:25 kg-core2 kernel: ugen1.7: <Espressif Systems LilyGo TLora-T3S3-V1> at usbus1
Jul 30 18:11:25 kg-core2 kernel: umodem0 on uhub5
Jul 30 18:11:25 kg-core2 kernel: umodem0: <TinyUSB CDC> on usbus1
Jul 30 18:11:25 kg-core2 kernel: umodem0: data interface 1, has no CM over data, has no break

usbconfig says

root@kg-core2:~ # usbconfig -d ugen1.7
ugen1.7: <Espressif Systems LilyGo TLora-T3S3-V1> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (500mA)

device description

root@kg-core2:~ # usbconfig -d ugen1.7 dump_device_desc
ugen1.7: <Espressif Systems LilyGo TLora-T3S3-V1> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (500mA)

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x00ef  <Miscellaneous device>
  bDeviceSubClass = 0x0002 
  bDeviceProtocol = 0x0001 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x303a 
  idProduct = 0x1001 
  bcdDevice = 0x0100 
  iManufacturer = 0x0001  <Espressif Systems>
  iProduct = 0x0002  <LilyGo TLora-T3S3-V1>
  iSerialNumber = 0x0003  <DC5475D5E95C>
  bNumConfigurations = 0x0001 

current config description

root@kg-core2:~ # usbconfig -d ugen1.7 dump_curr_config_desc
ugen1.7: <Espressif Systems LilyGo TLora-T3S3-V1> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (500mA)


 Configuration index 0

    bLength = 0x0009 
    bDescriptorType = 0x0002 
    wTotalLength = 0x004b 
    bNumInterfaces = 0x0002 
    bConfigurationValue = 0x0001 
    iConfiguration = 0x0005  <TinyUSB Device>
    bmAttributes = 0x00c0 
    bMaxPower = 0x00fa 

    Additional Descriptor

    bLength = 0x08
    bDescriptorType = 0x0b
    bDescriptorSubType = 0x00
     RAW dump: 
     0x00 | 0x08, 0x0b, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00


    Interface 0
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0000 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0001 
      bInterfaceClass = 0x0002  <Communication device>
      bInterfaceSubClass = 0x0002 
      bInterfaceProtocol = 0x0000 
      iInterface = 0x0004  <TinyUSB CDC>

      Additional Descriptor

      bLength = 0x05
      bDescriptorType = 0x24
      bDescriptorSubType = 0x00
       RAW dump: 
       0x00 | 0x05, 0x24, 0x00, 0x20, 0x01


      Additional Descriptor

      bLength = 0x05
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump: 
       0x00 | 0x05, 0x24, 0x01, 0x00, 0x01


      Additional Descriptor

      bLength = 0x04
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump: 
       0x00 | 0x04, 0x24, 0x02, 0x02


      Additional Descriptor

      bLength = 0x05
      bDescriptorType = 0x24
      bDescriptorSubType = 0x06
       RAW dump: 
       0x00 | 0x05, 0x24, 0x06, 0x00, 0x01


     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0085  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0010 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 


    Interface 1
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0001 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0002 
      bInterfaceClass = 0x000a  <CDC-data>
      bInterfaceSubClass = 0x0000 
      bInterfaceProtocol = 0x0000 
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0003  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0000 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

     Endpoint 1
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0084  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0000 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

2023-07-24: the package arrived, straight into my mailbox. Package contents

1 X T3S3 V1.0
2 X 2.54mm Male PIN headers (1 row x 13)
1 X Battery Cable
1 X LoRa Antenna

2023-07-12: the order was shipped.

2023-07-10: From AliExpress, I ordered 1 x LILYGO® T3S3 V1.0 ESP32-S3 LoRa SX1280 2.4G Development Board WiFi Bluetooth Wireless Module 0.96 Inch OLED Display Type-C, SX1276 868 MHz from LilyGo official store. The price was USD 21.82, shipping USD 2.35, tax USD 5.55 , a total of USD 27.72.