1"use strict";(self.webpackChunkmeshtastic=self.webpackChunkmeshtastic||[]).push([["22355"],{50961(e,t,i){i.r(t),i.d(t,{metadata:()=>r,default:()=>u,frontMatter:()=>a,contentTitle:()=>d,toc:()=>l,assets:()=>c});var r=JSON.parse('{"id":"meshtasticd/hardware/linux-native-hardware","title":"Linux Hardware","description":"Set up and configure Meshtastic on Linux-native devices using the meshtasticd binary.","source":"@site/versioned_docs/version-2.7/meshtasticd/hardware/index.mdx","sourceDirName":"meshtasticd/hardware","slug":"/meshtasticd/hardware/","permalink":"/docs/2.7/meshtasticd/hardware/","draft":false,"unlisted":false,"tags":[],"version":"2.7","lastUpdatedBy":"rcarteraz","sidebarPosition":3,"frontMatter":{"id":"linux-native-hardware","title":"Linux Hardware","sidebar_label":"Hardware","sidebar_key":"meshtasticd-hardware","sidebar_position":3,"description":"Set up and configure Meshtastic on Linux-native devices using the meshtasticd binary."},"sidebar":"Sidebar","previous":{"title":"Usage","permalink":"/docs/2.7/meshtasticd/usage"},"next":{"title":"Radios","permalink":"/docs/2.7/meshtasticd/hardware/radios"}}'),s=i(91987),n=i(67008),o=i(87622);let a={id:"linux-native-hardware",title:"Linux Hardware",sidebar_label:"Hardware",sidebar_key:"meshtasticd-hardware",sidebar_position:3,description:"Set up and configure Meshtastic on Linux-native devices using the meshtasticd binary."},d,c={},l=[{value:"LoRa Radio Interfaces",id:"lora-radio-interfaces",level:2},{value:"SPI",id:"spi",level:3},{value:"USB",id:"usb",level:3},{value:"Hardware Compatibility",id:"hardware-compatibility",level:2},{value:"System Requirements",id:"system-requirements",level:3}];function h(e){let t={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h2,{id:"lora-radio-interfaces",children:"LoRa Radio Interfaces"}),"\n",(0,s.jsx)(t.h3,{id:"spi",children:"SPI"}),"\n",(0,s.jsxs)(t.p,{children:["Supported ",(0,s.jsx)(t.a,{href:"boards",children:"boards"})," can be paired with ",(0,s.jsx)(o.A,{term:"SPI",definition:"A bus used between the microcontroller and peripherals such as the LoRa radio and the display.",routePath:"/docs/terms/",children:"SPI"})," radio hats, such as the RAK6421."]}),"\n",(0,s.jsx)(t.h3,{id:"usb",children:"USB"}),"\n",(0,s.jsxs)(t.p,{children:["Any Linux device with a ",(0,s.jsx)(o.A,{term:"USB",definition:"The wired connection used to power a device, flash firmware onto it, and communicate with it over serial.",routePath:"/docs/terms/",children:"USB"})," port can use a CH341-based ",(0,s.jsx)(o.A,{term:"USB",definition:"The wired connection used to power a device, flash firmware onto it, and communicate with it over serial.",routePath:"/docs/terms/",children:"USB"})," radio."]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(o.A,{term:"USB",definition:"The wired connection used to power a device, flash firmware onto it, and communicate with it over serial.",routePath:"/docs/terms/",children:"USB"})," support via the ",(0,s.jsx)(t.strong,{children:"CH341"})," was added in Meshtastic 2.5.18."]}),"\n",(0,s.jsxs)(t.p,{children:["Note that in order for Linux to recognize multiple CH341-",(0,s.jsx)(o.A,{term:"USB",definition:"The wired connection used to power a device, flash firmware onto it, and communicate with it over serial.",routePath:"/docs/terms/",children:"USB"})," devices, an EEPROM must be included onboard, burned with a unique serial number.\nDevices like the Pine64 Pinedio v1 do not include this."]}),"\n",(0,s.jsx)(t.h2,{id:"hardware-compatibility",children:"Hardware Compatibility"}),"\n",(0,s.jsxs)(t.admonition,{title:"Warning",type:"caution",children:[(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:(0,s.jsx)(o.A,{term:"UART",definition:"A serial interface used to communicate with a device over its pins or through a USB-to-serial bridge.",routePath:"/docs/terms/",children:"UART"})})," HATs and SX1302/SX1303 chip-based HATs are not supported. Only hats that use a ",(0,s.jsx)(o.A,{term:"SPI",definition:"A bus used between the microcontroller and peripherals such as the LoRa radio and the display.",routePath:"/docs/terms/",children:"SPI"})," radio can work with Meshtastic."]}),"\n",(0,s.jsxs)(t.li,{children:["The Waveshare ",(0,s.jsx)(o.A,{term:"SX1262",definition:"A Semtech sub-GHz LoRa transceiver, used in most current Meshtastic hardware and recommended over the older SX127x series.",routePath:"/docs/terms/",children:"SX1262"})," LoRaWAN Hat for Raspberry Pi is not recommended for deployment. It has known hardware limitations that may affect longer messages. If you must use it, please use the ",(0,s.jsx)(t.strong,{children:"CLIENT_MUTE"})," role to avoid rebroadcasting."]}),"\n",(0,s.jsxs)(t.li,{children:["The Pine64 Pinedio is also not recommended for deployment, as it suffers from similar hardware limitations as the Waveshare ",(0,s.jsx)(o.A,{term:"SX1262",definition:"A Semtech sub-GHz LoRa transceiver, used in most current Meshtastic hardware and recommended over the older SX127x series.",routePath:"/docs/terms/",children:"SX1262"})," LoRaWAN Hat."]}),"\n"]}),(0,s.jsxs)(t.p,{children:["See: ",(0,s.jsx)(t.a,{href:"https://www.youtube.com/watch?v=PND1GlMSrEM",children:"The Meshtastic CRC Problem"})]})]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Tested ",(0,s.jsx)(o.A,{term:"USB",definition:"The wired connection used to power a device, flash firmware onto it, and communicate with it over serial.",routePath:"/docs/terms/",children:"USB"})," devices include the ",(0,s.jsx)(t.a,{href:"https://github.com/markbirss/MESHSTICK",children:"MeshStick"})," and Pinedio CH341 ",(0,s.jsx)(o.A,{term:"USB",definition:"The wired connection used to power a device, flash firmware onto it, and communicate with it over serial.",routePath:"/docs/terms/",children:"USB"})," adapter."]}),"\n",(0,s.jsxs)(t.li,{children:["Tested Raspberry Pi ",(0,s.jsx)(o.A,{term:"LoRa",definition:"A low-power, long-range wireless communication technology used by Meshtastic devices to enable communication over distances of several kilometers without the need for cellular, Wi-Fi, or other traditional network infrastru
1ctures.",routePath:"/docs/terms/",children:"LoRa"})," hats include the ",(0,s.jsx)(t.a,{href:"https://github.com/chrismyers2000/MeshAdv-Pi-Hat",children:"MeshAdv-Pi v1.1"}),", Adafruit RFM9x, and Elecrow ",(0,s.jsx)(o.A,{term:"LoRa",definition:"A low-power, long-range wireless communication technology used by Meshtastic devices to enable communication over distances of several kilometers without the need for cellular, Wi-Fi, or other traditional network infrastructures.",routePath:"/docs/terms/",children:"Lora"})," RFM95 IOT."]}),"\n",(0,s.jsxs)(t.li,{children:["Support for ",(0,s.jsx)(o.A,{term:"I2C",definition:"A two-wire bus used to attach peripherals such as sensors and displays to a device.",routePath:"/docs/terms/",children:"I\xb2C"})," displays, ",(0,s.jsx)(o.A,{term:"SPI",definition:"A bus used between the microcontroller and peripherals such as the LoRa radio and the display.",routePath:"/docs/terms/",children:"SPI"})," displays, and keyboard input has been confirmed. It is necessary to be aware of potential pin conflicts when stacking hats."]}),"\n"]}),"\n",(0,s.jsx)(t.h3,{id:"system-requirements",children:"System Requirements"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["The Meshtastic binary, ",(0,s.jsx)(t.code,{children:"meshtasticd"}),", necessitates root access or a user with permissions to access ",(0,s.jsx)(o.A,{term:"GPIO",definition:"An uncommitted digital signal pin on a device.",routePath:"/docs/terms/",children:"GPIO"}),", ",(0,s.jsx)(o.A,{term:"SPI",definition:"A bus used between the microcontroller and peripherals such as the LoRa radio and the display.",routePath:"/docs/terms/",children:"SPI"}),", and other interfaces."]}),"\n",(0,s.jsx)(t.li,{children:"A Linux distribution compatible with the Meshtastic installation packages."}),"\n"]})]})}function u(e={}){let{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},67008(e,t,i){i.d(t,{R:()=>o,x:()=>a});var r=i(71763);let s={},n=r.createContext(s);function o(e){let t=r.useContext(n);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(n.Provider,{value:t},e.children)}},87622(e,t,i){i.d(t,{A:()=>o});var r=i(71763),s=i(37773),n=i(91987);function o({term:e,definition:t,abbreviation:i,routePath:a="/glossary",children:d}){let[c,l]=(0,r.useState)(!1),[h,u]=(0,r.useState)(null),[m,p]=(0,r.useState)("top"),f=(0,r.useRef)(null),w=(0,r.useRef)(null),x=(0,r.useCallback)(()=>{let e;if(!f.current||!w.current)return;let t=f.current.getBoundingClientRect(),i=w.current.getBoundingClientRect(),r=window.innerWidth,s=window.innerHeight,n=document.querySelector(".navbar"),o=n?n.getBoundingClientRect().bottom:0,a=t.to
1p-o>=i.height+8,d=s-t.bottom>=i.height+8,c=a||!d?"top":"bottom";e="top"===c?t.top-i.height-8:t.bottom+8;let l=t.left+t.width/2-i.width/2;l=Math.max(8,Math.min(l,r-i.width-8)),p(c),u({top:Math.max(o+4,e),left:l})},[]);(0,r.useEffect)(()=>{let e;if(!c)return;let t=requestAnimationFrame(()=>{e=requestAnimationFrame(()=>{x()})}),i=()=>x(),r=()=>x();return window.addEventListener("scroll",i,!0),window.addEventListener("resize",r),()=>{cancelAnimationFrame(t),e&&cancelAnimationFrame(e),window.removeEventListener("scroll",i,!0),window.removeEventListener("resize",r)}},[c,x]);let v=(0,s.P_)("docusaurus-plugin-glossary"),b=(0,r.useMemo)(()=>{if(t&&"string"==typeof t&&t.length>0)return t;let i=(v&&v.terms||[]).find(t=>"string"==typeof t.term&&t.term.toLowerCase()===String(e).toLowerCase());return i&&i.definition?i.definition:void 0},[t,v,e]),g=(0,r.useMemo)(()=>{let t=i;if(!t){let i=(v&&v.terms||[]).find(t=>"string"==typeof t.term&&t.term.toLowerCase()===String(e).toLowerCase());t=i&&i.abbreviation}if("string"!=typeof t)return;let r=t.trim();if(r&&r.toLowerCase()!==String(e).toLowerCase())return r},[i,v,e]),j=(0,r.useMemo)(()=>a&&"string"==typeof a&&a.length>0?a:v&&v.routePath||"/glossary",[v,a]),S=d||e,y=e.toLowerCase().replace(/\s+/g,"-");return(0,n.jsxs)("span",{ref:f,className:"glossaryTermWrapper_ud7W",children:[(0,n.jsx)("a",{href:`${j}#${y}`,className:"glossaryTerm_x2nJ",onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),onFocus:()=>l(!0),onBlur:()=>l(!1),"aria-describedby":`tooltip-${y}`,children:S}),b&&(0,n.jsxs)("span",{ref:w,id:`tooltip-${y}`,className:`tooltip_WjgA ${c?"tooltipVisible_AjfD":""} ${"top"===m?"tooltipTop_uMN4":"tooltipBottom_U9P5"} tooltipFloating_nLk7`,role:"tooltip",style:c&&h?{top:`${h.top}px`,left:`${h.left}px`}:void 0,children:[(0,n.jsx)("strong",{children:e}),g?` (${g}). `:"",b]})]})}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.