Getting Started
There are several wide-area LoRa mesh networks in the NYC metro area, using different technologies and in various states of formation. You are welcome to join any or all of them! Please read and follow the configuration guidelines for each one, to give yourself and everyone else an optimal experience.
Two networks use Meshtastic, and one uses MeshCore. Which one you can reach depends on who else is around you. Be patient, try all three out, send hello messages to see if you are in range.
Hardware
You will need at least a personal, handheld node that will be your direct connection to the mesh. Additionally, most people need a “roof” node to create a reliable first hop to the area infrastructure. If you want to join multiple networks at the same time, you will need a device for each.
If you don’t already have a device, see our list of recommended complete nodes.
Meshtastic
To connect to the wide-area Meshtastic networks in the NYC area…
- Familiarize yourself with the technology using the official documentation
- Ensure your node is on the latest Beta or Alpha firmware
- (optional) Enable LoRa > Ok To MQTT to show on the map/chat
- Configure your node as described below, based on how you use it:
Note that the config guidelines below will likely deviate from the official recommendations. This is because a large wide-area mesh network has different requirements than the more personal mesh networks Meshtastic is oriented toward by default. The configs here are tailored specifically for our use case; it makes for a good experience within the context of these networks, but may not be useful if you are using Meshtastic for personal meshes.
Personal node configuration
These are nodes that you send messages from. Either fixed or mobile.
Handheld node config
These are nodes that you carry with you, in your pocket, bag, belt, mounted on your car, and so on.
- Role: CLIENT_MUTE
- Position: disabled, or
- enable smart position
- smart interval 30 minutes or more
- update distance 100 m or more
- disable altitude
- GPS polling interval: 30 minutes or longer
- enable smart position
- Telemetry: off
- Device info: 19 hour interval or longer (68,400 seconds)
- LoRa hop limit: 7
Explanation of the settings
CLIENT_MUTE is the preferred starting point for mobile nodes because it avoids unexpected relay behavior in an infrastructure-based mesh. Personal or mobile nodes often experience worse SNRs than fixed nodes, which causes them to relay first and potentially stop a better-placed node from relaying. It’s also important if you have two nodes in close proximity, avoiding the “false ack” problem that can hide connection issues.
Smart position is preferred because it reduces the broadcasts if position hasn’t changed. However, it has trouble with altitude so it’s best to disable this—altitude is usually not helpful for mobile nodes. Generally, position doesn’t need to be sent more frequently than 30 minutes.
Telemetry is disabled because we don’t need to know your battery level or channel utilization on a regular basis. Neither are meaningful to the rest of the mesh.
Reducing automatic device info broadcasts avoids the throttling that inhibits the request user info features, and it makes room for more useful packets generally. Also, nodes have the ability to send node info on-demand if the operator needs to advertise their info.
Personal nodes usually need more hops to work through the infill to get to and from the network backbone. The next-gen MediumSlow network relies on this being the maximum of 7 because the network adopts packet-level resiliency instead of link-level, and needs the additional hops to allow for retries and path diversity.
Stationary personal node config
These are your base station nodes that live on your desk or your roof, that you also send messages from. They are nodes you connect directly to, rather than use as a relay. (If you do not send messages directly from the roof node, see below.)
- Role: CLIENT
- Position: disabled, or
- disable smart position
- enable altitude
- fixed position recommended
- GPS polling interval (if applicable): 24 hours
- broadcast interval: 23 hour interval or longer (82,800 seconds)
- Telemetry: off.
- Device info: 19 hour interval or longer (68,400 seconds)
- LoRa hop limit: 7
Explanation of the settings
CLIENT is the preferred starting point for fixed personal nodes because they are likely to provide useful conditional relay.
Position is optional, but helpful to understand the physical realities of the mesh. Smart position is not recommended, since the node is not moving. It can have trouble with variations from a GPS fix so it’s best to set an explicit fixed position. Altitude is helpful for understanding coverage.
Telemetry is preferred disabled because others generally don’t need to know your battery level or channel utilization on a regular basis. Neither are meaningful to the rest of the mesh. The node will still relay its battery info regularly when you connect your app to it.
Reducing automatic device info broadcasts avoids the throttling that inhibits the request user info features, and it makes room for more useful packets generally. Also, nodes have the ability to send node info on-demand if the operator needs to advertise their info.
Personal nodes usually need more hops to work through the infill to get to and from the network backbone. The next-gen MediumSlow network relies on this being the maximum of 7 because the network adopts packet-level resiliency instead of link-level, and needs the additional hops to allow for retries and path diversity.
Infrastructure node configuration
Nodes that are in a fixed location and intended solely for relay purposes. These nodes are not used to send messages directly. They typically are solar builds in remote locations. (If you do send messages from the node, see above.)
- Role: CLIENT_BASE*
- Rebroadcast mode: Core Portnums Only
- Is Unmessagable: true
- Position:
- disable smart position
- enable altitude
- fixed position recommended
- GPS polling interval (if applicable): 24 hours
- broadcast interval: 23 hour interval or longer (82,800 seconds)
- Telemetry: at least 6 hour interval
- Device info: 47 hour interval (169,200 seconds)
- LoRa hop limit: 2
- (Optional, strongly recommended) Enable remote admin
Explanation of the settings
CLIENT_BASE helps differentiate the infrastructure nodes from personal nodes. It also enables handy infrastructure behaviors through favoriting adjacent routers and personal nodes, features that work best when the node is in a static position. CLIENT_BASE is also the recommended starting point even if the node is well sited.
Core Portnums Only will prevent propagation of custom packets or noisy applications like TAK that should not be used on a wide-area mesh, and ensure airtime remains available for text.
Altitude is useful for line-of-sight estimates. But smart position has trouble with altitude if it changes due to GPS variation and can spam position unnecessarily. 23 hours is sufficient to stay on the map and rotates the broadcast throughout the day.
Position is highly recommended for infrastructure nodes so users can understand which nodes provide coverage for them. (It doesn’t have to be exact, but should be a useful approximation.) Fixed position is recommended even if there is GPS present. The GPS is still useful for keeping the node's clock accurate, but it can cause unexpected position variations due to errant GPS signal reception. 24 hours is sufficient to maintain the clock without a meaningful drain on the battery of solar nodes.
Telemetry broadcasts are useful to monitor the health of the node, but more frequent than 6 hours is excessive and takes up useful airtime.
Device info is significantly curtailed because it’s not necessary for the nodes to route packets, and takes up airtime. The odd interval allows the info broadcast to rotate throughout the day.
Hop limit: fixed nodes should focus on advertising to their immediate vicinity. They also should be within direct or single-hop range of infrastructure, and don’t need as many hops to reach through the infill — they are the infill.
Radio settings
There are currently two different Meshtastic networks operating in the NYC area. Joining a network requires configuring your radio to use the same LoRa settings. You are free to join whichever one you can reach, or both if you have multiple devices.
Be a good mesh citizen: Please ensure your node follows the above configuration before connecting to the network. Please do not use high-traffic applications like Reticulum or TAK on this network; they saturate the mesh and make it unusable for everyone. Sustained encrypted traffic will be detected and blocked by the infrastructure to protect the limited airtime.
Current primary mesh radio settings:
- Preset
- Medium Range - Slow
- Frequency slot
- 48
- Public channel name
- MediumSlow or blank
- Public channel key
- 1 byte,
AQ==
Personal nodes: increase LoRa hop limit to 7. (Yes, really.)
This network is actively forming. Not all infrastructure has moved yet. You may find it difficult to reach some parts of the network during the transition. Network status and help is available in the Discord chat.
Legacy network settings (LongFast):
- Preset
- Long Range - Fast
- Frequency slot
- 20 or 0
- Public channel name
- LongFast or blank
- Public channel key
- 1 byte,
AQ==
These settings are the default, out-of-the-box Meshtastic settings. A bit of infrastructure is maintained on these settings to catch newcomers, travelers, and stragglers. Some users continue with this network since it provides the greater range that they need (at the expense of severe congestion).
Explanation of the settings
The above settings are necessary to keep the network in a high-performing state. The Meshtastic default settings are oriented toward small-scale meshes that require frequent background packets to be effective. However, on large meshes these defaults are unnecessary and quickly create congestion that compromises the utility of the network for everyone. Reducing this extraneous background traffic as much as possible is essential for preserving the usefulness of the mesh.
MeshCore
To connect to the wide-area MeshCore network in the NYC area:
- Ensure your companion is on the latest firmware
- (recommended) Set your Path Hash Size to 2-byte (in Experimental Settings in the app)
MeshCore radio settings:
- Preset
- US/Canada
- Frequency
- 910.525 MHz
- Bandwidth
- 62.5 kHz
- Spread Factor
- 7
- Coding Rate
- 5
Increase coding rate if you find your messages are not getting received. This setting is cross-compatible.
Repeaters
- Familiarize yourself with the technology using the official documentation
- Ensure your repeater is on the latest firmware
- Set zero-hop auto advert interval to 240 minutes or more
- Set flood auto advert interval to 47 hours or more
- (recommended) Set 2-byte prefixes for adverts:
set path.hash.mode 1thenclock sync - (recommended) Set advert hop limits to 8 (already the default as of 1.16):
set flood.max.advert 8
Explanation of the settings
Advert intervals are maximized and hops curtailed to reduce the airtime load on the mesh. The odd number of 47 ensures the flood adverts of the repeater rotate through the day over time, to avoid people missing it because they are only in an area at certain times of day. Packets can get routed and paths discovered even without hearing the adverts; knowing the full ID and name of the repeater is informational only. 2-byte prefixes are recommended to reduce chance of ID collision with other repeaters, for clarity and optimal routing, but when this is set, there is a bug that will change the clock time, so it will have to be resynced.