PageSourceSearch

https://meshtastic-bice.vercel.app/assets/js/f0c25f91.5adca006.js

js meshtastic-bice.vercel.app collected 2026-10-03 07:19:10 UTC 17,841 bytes, 2 lines download raw bytes

1"use strict";(self.webpackChunkmeshtastic=self.webpackChunkmeshtastic||[]).push([["13406"],{13977(e,t,s){s.r(t),s.d(t,{metadata:()=>a,default:()=>g,frontMatter:()=>c,contentTitle:()=>u,toc:()=>p,assets:()=>h});var a=JSON.parse('{"id":"meshtasticd/installation/debian","title":"Debian - meshtasticd","description":"Install meshtasticd on Debian Linux.","source":"@site/docs/meshtasticd/installation/debian.mdx","sourceDirName":"meshtasticd/installation","slug":"/meshtasticd/installation/debian","permalink":"/docs/meshtasticd/installation/debian","draft":false,"unlisted":false,"editUrl":"https://github.com/meshtastic/meshtastic/edit/master/docs/meshtasticd/installation/debian.mdx","tags":[],"version":"current","lastUpdatedBy":"rcarteraz","sidebarPosition":2,"frontMatter":{"id":"debian","title":"Debian - meshtasticd","description":"Install meshtasticd on Debian Linux.","sidebar_label":"Debian","sidebar_position":2,"pagination_next":"meshtasticd/usage","pagination_prev":"meshtasticd/installation/index"},"sidebar":"Sidebar","previous":{"title":"Installation","permalink":"/docs/meshtasticd/installation/"},"next":{"title":"Usage","permalink":"/docs/meshtasticd/usage"}}'),n=s(91987),r=s(67008),i=s(87622),o=s(82374),l=s(42506),d=s(69671);let c={id:"debian",title:"Debian - meshtasticd",description:"Install meshtasticd on Debian Linux.",sidebar_label:"Debian",sidebar_position:2,pagination_next:"meshtasticd/usage",pagination_prev:"meshtasticd/installation/index"},u=" Debian",h={},p=[{value:"Install",id:"install",level:2}];function b(e){let t={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components},{Details:s}=t;return s||function(e,t){throw Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsxs)(t.h1,{id:"-debian",children:[(0,n.jsx)(o.In,{icon:"mdi:debian",style:{marginRight:"0.5rem"},height:"2rem"})," Debian"]})}),"\n",(0,n.jsxs)(t.p,{children:["Debian packages are provided via ",(0,n.jsxs)(t.a,{href:"https://build.opensuse.org/project/show/network:Meshtastic:beta",children:[(0,n.jsx)(o.In,{icon:"simple-icons:opensuse"})," OpenSUSE Build Service"]}),"."]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Feature"}),(0,n.jsx)(t.th,{children:"Status"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsxs)(t.td,{children:["\u{1F50C} ",(0,n.jsxs)(t.a,{href:"/docs/meshtasticd/hardware/",children:[(0,n.jsx)(i.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"]})]}),(0,n.jsx)(t.td,{children:"\u2705"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsxs)(t.td,{children:["\u{1F578}\uFE0F ",(0,n.jsxs)(t.a,{href:"/docs/meshtasticd/hardware/",children:[(0,n.jsx)(i.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"]})]}),(0,n.jsx)(t.td,{children:"\u2705"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsxs)(t.td,{children:["\u{1F4F1} ",(0,n.jsx)(t.a,{href:"/docs/configuration/device-uis/meshtasticui/",children:(0,n.jsx)(i.A,{term:"MUI",definition:"An on-device interface for interacting with the mesh and changing most basic settings without a phone client.",routePath:"/docs/terms/",children:"MUI"})})]}),(0,n.jsx)(t.td,{children:"\u2705"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsxs)(t.td,{children:["\u{1F310} ",(0,n.jsx)(t.a,{href:"/docs/software/web-client/",children:"Web"})]}),(0,n.jsx)(t.td,{children:"\u2705"})]})]})]}),"\n",(0,n.jsxs)(t.p,{children:["Supported: ",(0,n.jsx)(t.code,{children:"trixie"})," (13), ",(0,n.jsx)(t.code,{children:"bookworm"})," (12)"]}),"\n",(0,n.jsx)(t.h2,{id:"install",children:"Install"}),"\n",(0,n.jsxs)(l.A,{groupId:"release_channel",queryString:"channel",children:[(0,n.jsxs)(d.A,{value:"beta",label:"Beta",default:!0,children:[(0,n.jsx)(t.p,{children:(0,n.jsxs)(t.strong,{children:["Debian 13 (",(0,n.jsx)(t.code,{children:"trixie"}),"):"]})}),(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-shell",children:'[[ "$(. /etc/os-release && echo $NAME)" == Raspbian* ]] && echo "ERROR: Raspberry Pi OS (32-bit) detected, please use the Raspbian repos."\necho \'deb http://download.opensuse.org/repositories/network:/Meshtastic:/beta/Debian_13/ /\' | sudo tee /etc/apt/sources.list.d/network:Meshtastic:beta.list\ncurl -fsSL https://download.opensuse.org/repositories/network:Meshtastic:beta/Debian_13/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/network_Meshtastic_beta.gpg > /dev/null\nsudo apt update\nsudo apt install meshtasticd\n'})}),(0,n.jsx)(t.p,{children:(0,n.jsxs)(t.strong,{children:["Debian 12 (",(0,n.jsx)(t.code,{children:"bookworm"}),"):"]})}),(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-shell",children:'[[ "$(. /etc/os-release && echo $NAME)" == Raspbian* ]] && echo "ERROR: Raspberry Pi OS (32-bit) detected, please use the Raspbian repos."\necho \'deb http://download.opensuse.org/repositories/network:/Meshtastic:/beta/Debian_12/ /\' | sudo tee /etc/apt/sources.list.d/network:Meshtastic:beta.list\ncurl -fsSL https://download.opensuse.org/repositories/network:Meshtastic:beta/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/network_Meshtastic_beta.gpg > /dev/null\nsudo apt update\nsudo apt install meshtasticd\n'})})]}),(0,n.jsxs)(d.A,{value:"alpha",label:"Alpha",children:[(0,n.jsx)(t.p,{children:(0,n.jsxs)(t.strong,{children:["Debian 13 (",(0,n.jsx)(t.code,{children:"trixie"}),"):"]})}),(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-shell",children:'[[ "$(. /etc/os-release && echo $NAME)" == Raspbian* ]] && echo "ERROR: Raspberry Pi OS (32-bit) detected, please use the Raspbian repos."\necho \'deb http://download.opensuse.org/repositories/network:/Meshtastic:/alpha/Debian_13/ /\' | sudo tee /etc/apt/sources.list.d/network:Meshtastic:alpha.list\ncurl -fsSL https://download.opensuse.org/repositories/network:Meshtastic:alpha/Debian_13/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/network_Meshtastic_alpha.gpg > /dev/null\nsudo apt update\nsudo apt install meshtasticd\n'})}),(0,n.jsx)(t.p,{children:(0,n.jsxs)(t.strong,{children:["Debian 12 (",(0,n.jsx)(t.code,{children:"bookworm"}),"):"]})}),(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-shell",children:'[[ "$(. /etc/os-release && echo $NAME)" == Raspbian* ]] && echo "ERROR: Raspberry Pi OS (32-bit) detected, please use the Raspbian repos."\necho \'deb http://download.opensuse.org/repositories/network:/Meshtastic:/alpha/Debian_12/ /\' | sudo tee /etc/apt/sources.list.d/network:Meshtastic:alpha.list\ncurl -fsSL https://download.opensuse.org/repositories/network:Meshtastic:alpha/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/network_Meshtastic_alpha.gpg > /dev/null\nsudo apt update\nsudo apt install meshtasticd\n'})})]}),(0,n.jsxs)(d.A,{value:"daily",label:"Daily",children:[(0,n.jsx)(t.p,{children:(0,n.jsxs)(t.strong,{children:["Debian 13 (",(0,n.jsx)(t.code,{children:"trixie"}),"):"]})}),(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-shell",children:'[[ "$(. /etc/os-release && echo $NAME)" == Raspbian* ]] && echo "ERROR: Raspberry Pi OS (32-bit) detected, please use the Raspbian repos."\necho \'deb http://download.opensuse.org/repositories/network:/Meshtastic:/daily/Debian_13/ /\' | sudo tee /etc/apt/sources.list.d/network:Meshtastic:daily.list\ncurl -fsSL https://download.opensuse.org/repositories/network:Meshtastic:daily/Debian_13/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/network_Meshtastic_daily.gpg > /dev/null\nsudo apt update\nsudo apt install meshtasticd\n'})}),(0,n.jsx)(t.p,{children:(0,n.jsxs)(t.strong,{children:["Debian 12 (",(0,n.jsx)(t.code,{children:"bookworm"}),"):"]})}),(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-shell",children:'[[ "$(. /etc/os-release && echo $NAME)" == Raspbian* ]] && echo "ERROR: Raspberry Pi OS (32-bit) detected, please use the Raspbian repos."\necho \'deb http://download.opensuse.org/repositories/network:/Meshtastic:/daily/Debian_12/ /\' | sudo tee /etc/apt/sources.list.d/network:Meshtastic:daily.list\ncurl -fsSL https://download.opensuse.org/repositories/network:Meshtastic:daily/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/network_Meshtastic_daily.gpg > /dev/null\nsudo apt update\nsudo apt install meshtasticd\n'})})]})]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Experimental builds"}),(0,n.jsxs)(t.p,{children:["These builds are provided without support, please ",(0,n.jsx)(t.strong,{children:"do not file issues"})," relating to Experimental builds."]}),(0,n.jsxs)(t.p,{children:["Experimental Support: ",(0,n.jsx)(t.code,{children:"forky"})," (testing), ",(0,n.jsx)(t.code,{children:"sid"})," (unstable)"]}),(0,n.jsx)(t.p,{children:(0,n.jsxs)(t.strong,{children:["Install Debian 14 (",(0,n.jsx)(t.code,{children:"forky"}),"):"]})}),(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-shell",children:"echo 'deb http://download.opensuse.org/repositories/network:/Meshtastic:/beta/Debian_Testing/ /' | sudo tee /etc/apt/sources.list.d/network:Meshtastic:beta.list\ncurl -fsSL https://download.opensuse.org/repositories/network:Meshtastic:beta/Debian_Testing/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/network_Meshtastic_beta.gpg > /dev/null\nsudo apt update\nsudo apt install meshtasticd\n"})}),(0,n.jsx)(t.p,{children:(0,n.jsxs)(t.strong,{children:["Install Debian unstable (",(0,n.jsx)(t.code,{children:"sid"}),"):"]})}),(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-shell",children:"echo 'deb http://download.opensuse.org/repositories/network:/Meshtastic:/beta/Debian_Unstable/ /' | sudo tee /etc/apt/sources.list.d/network:Meshtastic:beta.list\ncurl -fsSL https://download.opensuse.org/repositories/network:Meshtastic:beta/Debian_Unstable/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/network_Meshtastic_beta.gpg > /dev/null\nsudo apt update\nsudo apt install meshtasticd\n"})})]})]})}function g(e={}){let{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(b,{...e})}):b(e)}},69671(e,t,s){s.d(t,{A:()=>
1o});var a=s(91987);s(71763);var n=s(13526),r=s(13897);function i({children:e,className:t,hidden:s}){return(0,a.jsx)("div",{role:"tabpanel",className:(0,n.A)("tabItem_q_8M",t),hidden:s,children:e})}function o({children:e,className:t,value:s}){let{selectedValue:n,lazy:l}=(0,r.uc)(),d=s===n;return!d&&l?null:(0,a.jsx)(i,{className:t,hidden:!d,children:e})}},42506(e,t,s){s.d(t,{A:()=>h});var a=s(91987);s(71763);var n=s(13526),r=s(66977),i=s(13897),o=s(42714),l=s(66928);function d({className:e}){let{selectedValue:t,selectValue:s,tabValues:r,block:l}=(0,i.uc)(),c=[],{blockElementScrollPositionUntilNextRender:u}=(0,o.a_)(),h=e=>{let a=e.currentTarget,n=r[c.indexOf(a)].value;n!==t&&(u(a),s(n))},p=e=>{let t=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{let s=c.indexOf(e.currentTarget)+1;t=c[s]??c[0];break}case"ArrowLeft":{let s=c.indexOf(e.currentTarget)-1;t=c[s]??c[c.length-1]}}t?.focus()};return(0,a.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":l},e),children:r.map(({value:e,label:s,attributes:r})=>(0,a.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{c.push(e)},onKeyDown:p,onClick:h,...r,className:(0,n.A)("tabs__item","tabItem_Nk8A",r?.className,{"tabs__item--active":t===e}),children:s??e},e))})}function c({children:e}){return(0,a.jsx)("div",{className:"margin-top--md",children:e})}function u({className:e,children:t}){return(0,a.jsxs)("div",{className:(0,n.A)(r.G.tabs.container,"tabs-container","tabList_m28i"),children:[(0,a.jsx)(d,{className:e}),(0,a.jsx)(c,{children:t})]})}function h(e){let t=(0,l.A)(),s=(0,i.OC)(e);return(0,a.jsx)(i.O_,{value:s,children:(0,a.jsx)(u,{className:e.className,children:(0,i.vT)(e.children)})},String(t))}},13897(e,t,s){s.d(t,{OC:()=>h,O_:()=>g,uc:()=>b,vT:()=>c});var a=s(91987),n=s(71763),r=s(66532),i=s(98532),o=s(50191),l=s(10644),d=s(16957);function c(e){return n.Children.toArray(e).filter(e=>"\n"!==e)}function u({value:e,tabValues:t}){return t.some(t=>t.value===e)}function h(e){let t,{defaultValue:s,queryString:a=!1,groupId:c}=e,h=function(e){let{values:t,children:s}=e;return(0,n.useMemo)(()=>{let e=t??n.Children.toArray(s).flatMap(e=>{if(!e)return[];if((0,n.isValidElement)(e)&&function(e){let{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return[e];let t="string"==typeof e.type?e.type:e.type.name;throw Error(`Docusaurus error: Bad <Tabs> child <${t}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.
2If you do not want to pass on a "value" prop to the direct children of <Tabs>, you can also pass an explicit <Tabs values={...}> prop.`)}).map(({props:{value:e,label:t,attributes:s,default:a}})=>({value:e,label:t,attributes:s,default:a})),a=(0,l.XI)(e,(e,t)=>e.value===t.value);if(a.length>0)throw Error(`Docusaurus error: Duplicate values "${a.map(e=>`'${e.value}'`).join(", ")}" found in <Tabs>. Every value needs to be unique.`);return e},[t,s])}(e),[p,b]=(0,n.useState)(()=>(function({defaultValue:e,tabValues:t}){if(0===t.length)throw Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!u({value:e,tabValues:t}))throw Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${t.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}let s=t.find(e=>e.default)??t[0];if(!s)throw Error("Unexpected error: 0 tabValues");return s.value})({defaultValue:s,tabValues:h})),[g,m]=function({queryString:e=!1,groupId:t}){let s=(0,r.W6)(),a=function({queryString:e=!1,groupId:t}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!t)throw Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:e,groupId:t});return[(0,o.aZ)(a),(0,n.useCallback)(e=>{if(!a)return;let t=new URLSearchParams(s.location.search);t.set(a,e),s.replace({...s.location,search:t.toString()})},[a,s])]}({queryString:a,groupId:c}),[x,f]=function({groupId:e}){let t=e?`docusaurus.tab.${e}`:null,[s,a]=(0,d.Dv)(t);return[s,(0,n.useCallback)(e=>{t&&a.set(e)},[t,a])]}({groupId:c}),j=u({value:t=g??x,tabValues:h})?t:null;return(0,i.A)(()=>{j&&b(j)},[j]),{selectedValue:p,selectValue:(0,n.useCallback)(e=>{if(!u({value:e,tabValues:h}))throw Error(`Can't select invalid tab value=${e}`);b(e),m(e),f(e)},[m,f,h]),tabValues:h,lazy:e.lazy??!1,block:e.block??!1}}let p=(0,n.createContext)(null);function b(){let e=n.useContext(p);if(!e)throw Error("useTabsContext() must be used within a Tabs component");return e}function g(e){return(0,a.jsx)(p.Provider,{value:e.value,children:e.children})}},87622(e,t,s){s.d(t,{A:()=>i});var a=s(71763),n=s(37773),r=s(91987);function i({term:e,definition:t,abbreviation:s,routePath:o="/glossary",children:l}){let[d,c]=(0,a.useState)(!1),[u,h]=(0,a.useState)(null),[p,b]=(0,a.useState)("top"),g=(0,a.useRef)(null),m=(0,a.useRef)(null),x=(0,a.useCallback)(()=>{let e;if(!g.current||!m.current)return;let t=g.current.getBoundingClientRect(),s=m.current.getBoundingClientRect(),a=window.innerWidth,n=window.innerHeight,r=document.querySelector(".navbar"),i=r?r.getBoundingClientRect().bottom:0,o=t.to
2p-i>=s.height+8,l=n-t.bottom>=s.height+8,d=o||!l?"top":"bottom";e="top"===d?t.top-s.height-8:t.bottom+8;let c=t.left+t.width/2-s.width/2;c=Math.max(8,Math.min(c,a-s.width-8)),b(d),h({top:Math.max(i+4,e),left:c})},[]);(0,a.useEffect)(()=>{let e;if(!d)return;let t=requestAnimationFrame(()=>{e=requestAnimationFrame(()=>{x()})}),s=()=>x(),a=()=>x();return window.addEventListener("scroll",s,!0),window.addEventListener("resize",a),()=>{cancelAnimationFrame(t),e&&cancelAnimationFrame(e),window.removeEventListener("scroll",s,!0),window.removeEventListener("resize",a)}},[d,x]);let f=(0,n.P_)("docusaurus-plugin-glossary"),j=(0,a.useMemo)(()=>{if(t&&"string"==typeof t&&t.length>0)return t;let s=(f&&f.terms||[]).find(t=>"string"==typeof t.term&&t.term.toLowerCase()===String(e).toLowerCase());return s&&s.definition?s.definition:void 0},[t,f,e]),w=(0,a.useMemo)(()=>{let t=s;if(!t){let s=(f&&f.terms||[]).find(t=>"string"==typeof t.term&&t.term.toLowerCase()===String(e).toLowerCase());t=s&&s.abbreviation}if("string"!=typeof t)return;let a=t.trim();if(a&&a.toLowerCase()!==String(e).toLowerCase())return a},[s,f,e]),v=(0,a.useMemo)(()=>o&&"string"==typeof o&&o.length>0?o:f&&f.routePath||"/glossary",[f,o]),k=l||e,y=e.toLowerCase().replace(/\s+/g,"-");return(0,r.jsxs)("span",{ref:g,className:"glossaryTermWrapper_ud7W",children:[(0,r.jsx)("a",{href:`${v}#${y}`,className:"glossaryTerm_x2nJ",onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),onFocus:()=>c(!0),onBlur:()=>c(!1),"aria-describedby":`tooltip-${y}`,children:k}),j&&(0,r.jsxs)("span",{ref:m,id:`tooltip-${y}`,className:`tooltip_WjgA ${d?"tooltipVisible_AjfD":""} ${"top"===p?"tooltipTop_uMN4":"tooltipBottom_U9P5"} tooltipFloating_nLk7`,role:"tooltip",style:d&&u?{top:`${u.top}px`,left:`${u.left}px`}:void 0,children:[(0,r.jsx)("strong",{children:e}),w?` (${w}). `:"",j]})]})}}}]);

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.