1"use strict";(self.webpackChunkmeshtastic=self.webpackChunkmeshtastic||[]).push([["21016"],{46788(e,i,n){n.r(i),n.d(i,{metadata:()=>t,default:()=>m,frontMatter:()=>l,contentTitle:()=>d,toc:()=>h,assets:()=>c});var t=JSON.parse('{"id":"configuration/device-uis/baseui/base-ui","title":"BaseUI","description":"BaseUI is a standalone interface for supported Meshtastic devices, enabling direct interaction without requiring a phone for common functions. It runs alongside the firmware, providing messaging and configuration options.","source":"@site/versioned_docs/version-2.7/configuration/device-uis/baseui/index.mdx","sourceDirName":"configuration/device-uis/baseui","slug":"/configuration/device-uis/baseui/","permalink":"/docs/2.7/configuration/device-uis/baseui/","draft":false,"unlisted":false,"tags":[],"version":"2.7","lastUpdatedBy":"rcarteraz","sidebarPosition":1,"frontMatter":{"id":"base-ui","title":"BaseUI","sidebar_label":"BaseUI","sidebar_position":1,"description":"BaseUI is a standalone interface for supported Meshtastic devices, enabling direct interaction without requiring a phone for common functions. It runs alongside the firmware, providing messaging and configuration options."},"sidebar":"Sidebar","previous":{"title":"Device UIs","permalink":"/docs/2.7/configuration/device-uis/"},"next":{"title":"Meshtastic UI","permalink":"/docs/2.7/configuration/device-uis/meshtasticui/"}}'),s=n(91987),o=n(67008),r=n(87622),a=n(79310);let l={id:"base-ui",title:"BaseUI",sidebar_label:"BaseUI",sidebar_position:1,description:"BaseUI is a standalone interface for supported Meshtastic devices, enabling direct interaction without requiring a phone for common functions. It runs alongside the firmware, providing messaging and configuration options."},d,c={},h=[{value:"What is BaseUI?",id:"what-is-baseui",level:2},{value:"Supported Devices",id:"supported-devices",level:2},{value:"Installation",id:"installation",level:2},{value:"Initial Setup",id:"initial-setup",level:2},{value:"Buttons",id:"buttons",level:2},{value:"On-Screen Menu",id:"on-screen-menu",level:2},{value:"Action Menus",id:"action-menus",level:3},{value:"Home",id:"home",level:4},{value:"Message",id:"message",level:4},{value:"Node",id:"node",level:4},{value:"Position",id:"position",level:4},{value:"LoRa",id:"lora",level:4},{value:"System",id:"system",level:4},{value:"Clock",id:"clock",level:4},{value:"Favorites",id:"favorites",level:4}];function u(e){let i={a:"a",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h2,{id:"what-is-baseui",children:"What is BaseUI?"}),"\n",(0,s.jsx)(i.p,{children:"BaseUI is the stock UI interface that's designed to support all devices with screens - making it more intuitive, more capable including new standalone features, and easier to use on a wider range of devices. BaseUI starts a user's journey with Meshtastic and serves as the base or foundation of the experience."}),"\n",(0,s.jsx)("img",{src:"/img/configuration/baseui/baseui-01-welcome.webp",alt:"BaseUI Welcome Screen"}),"\n",(0,s.jsx)(i.h2,{id:"supported-devices",children:"Supported Devices"}),"\n",(0,s.jsxs)(i.p,{children:["All devices with an ",(0,s.jsx)(r.A,{term:"OLED",definition:"A display type used on many Meshtastic devices. The OLED Type setting selects which panel driver the firmware uses.",routePath:"/docs/terms/",children:"OLED"}),", EInk, or TFT display will support BaseUI."]}),"\n",(0,s.jsx)(i.h2,{id:"installation",children:"Installation"}),"\n",(0,s.jsxs)(i.p,{children:["BaseUI is by default installed on supported devices using the ",(0,s.jsx)(i.a,{href:"https://flasher.meshtastic.org",children:"Meshtastic Web Flasher"}),". Select a 2.7+ version firmware. Devices that support ",(0,s.jsx)(i.a,{href:"../meshtasticui/",children:"Meshtastic UI"})," can enable this with the option to use both UIs on their device; switching is performed through their respective menu systems."]}),"\n",(0,s.jsx)(i.h2,{id:"initial-setup",children:"Initial Setup"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"/docs/2.7/configuration/region-by-country/",children:"Set your LoRa region"}),"\n",(0,s.jsx)(a.v,{children:(0,s.jsx)("img",{src:"/img/configuration/baseui/baseui-03-lora-green.webp",alt:"LoRa Picker Menu"})}),"\n",(0,s.jsx)(a.F,{children:(0,s.jsx)("img",{src:"/img/configuration/baseui/baseui-03-lora-red.webp",alt:"LoRa Picker Menu"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"buttons",children:"Buttons"}),"\n",(0,s.jsx)(i.p,{children:"BaseUI is designed to be navigated with as little as one button but support a myriad of devices from CardKB, Rotary Encoders, Trackballs, and Rocker Switches."}),"\n",(0,s.jsx)(a.v,{children:(0,s.jsx)("img",{src:"/img/configuration/baseui/baseui-02-home-green.webp",alt:"Home Screen"})}),"\n",(0,s.jsx)(a.F,{children:(0,s.jsx)("img",{src:"/img/configuration/baseui/baseui-02-home-red.webp",alt:"LHome Screen"})}),"\n",(0,s.jsx)(i.h2,{id:"on-screen-menu",children:"On-Screen Menu"}),"\n",(0,s.jsx)(i.p,{children:"BaseUI has a built in menu, with a few basic actions, and options for c
1onfiguring the device."}),"\n",(0,s.jsxs)(i.p,{children:["To open the action menu, ",(0,s.jsx)(i.strong,{children:"long-press"})," the user button."]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"short-press"}),": next item"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"long-press"}),": select"]}),"\n"]}),"\n",(0,s.jsx)(a.v,{children:(0,s.jsx)("img",{src:"/img/configuration/baseui/baseui-05-system-green.webp",alt:"System Action Menu"})}),"\n",(0,s.jsx)(a.F,{children:(0,s.jsx)("img",{src:"/img/configuration/baseui/baseui-05-system-red.webp",alt:"System Action Menu"})}),"\n",(0,s.jsx)(i.h3,{id:"action-menus",children:"Action Menus"}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsxs)(i.em,{children:[(0,s.jsx)(i.strong,{children:"Note"}),": Certain options described below may only be available depending on specific hardware components or configuration selections."]})}),"\n",(0,s.jsx)(i.h4,{id:"home",children:"Home"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Sleep - Temporarily turn off the display, can be awoken with the user button"}),"\n",(0,s.jsx)(i.li,{children:"Send Position - Manually announces the device to other nodes on the mesh. This is optional, as nodes are discovered automatically, however sending a ping manually may speed up this process is some situations."}),"\n",(0,s.jsxs)(i.li,{children:["New Preset Message - Send predefined text messages to the mesh network from the device without using the phone app. To enable this feature, ",(0,s.jsx)(i.a,{href:"/docs/2.7/configuration/module/canned-message/#messages",children:"set a list of predefined messages"}),"."]}),"\n",(0,s.jsx)(i.li,{children:"New FreeText Message - For devices with physical or virtual keyboards send freely typed text messages to the mesh network from the device without using the phone app."}),"\n"]}),"\n",(0,s.jsx)(i.h4,{id:"message",children:"Message"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["New Preset Message - Send predefined text messages to the mesh network from the device without using the phone app. To enable this feature, ",(0,s.jsx)(i.a,{href:"/docs/2.7/configuration/module/canned-message/#messages",children:"set a list of predefined messages"}),"."]}),"\n",(0,s.jsx)(i.li,{children:"New FreeText Message - For devices with physical or virtual keyboards send freely typed text messages to the mesh network from the device without using the phone app."}),"\n"]}),"\n",(0,s.jsx)(i.h4,{id:"node",children:"Node"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Add Favorite - Manually select a node to add as a favorite on your device"}),"\n",(0,s.jsx)(i.li,{children:"Trace Route - Perform a trace route to a selected node"}),"\n",(0,s.jsx)(i.li,{children:"Key Verification - Perform a key verification between two 2.7+ nodes - these two nodes need to be in close proximity to visually compare keys"}),"\n",(0,s.jsx)(i.li,{children:"Reset NodeDB - Perform a nodeDB reset"}),"\n"]}),"\n",(0,s.jsx)(a.v,{children:(0,s.jsx)("img",{src:"/img/configuration/baseui/baseui-04-node-action-green.webp",alt:"Node Action Menu"})}),"\n",(0,s.jsx)(a.F,{children:(0,s.jsx)("img",{src:"/img/configuration/baseui/baseui-04-node-action-red.webp",alt:"Node Action Menu"})}),"\n",(0,s.jsx)(i.h4,{id:"position",children:"Position"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(r.A,{term:"GPS",definition:"A satellite positioning system. A node with a GPS module determines its own location and can report that position to the mesh.",routePath:"/docs/terms/",children:"GPS"})," Toggle - Enables or disables the device's ",(0,s.jsx)(r.A,{term:"GPS",definition:"A satellite positioning system. A node with a GPS module determines its own location and can report that position to the mesh.",routePath:"/docs/terms/",children:"GPS"})," hardware."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(r.A,{term:"GPS",definition:"A satellite positioning system. A node with a GPS module determines its own location and can report that position to the mesh.",routePath:"/docs/terms/",children:"GPS"})," Format - Select between one of seven ",(0,s.jsx)(r.A,{term:"GPS",definition:"A satellite positioning system. A node with a GPS module determines its own location and can report that position to the mesh.",routePath:"/docs/terms/",children:"GPS"})," format options available"]}),"\n",(0,s.jsx)(i.li,{children:'Compass Headings - Change between Dynamic, Fixed and Freeze Heading for "N" if you have a compass'}),"\n",(0,s.jsx)(i.li,{children:"Compass Calibrate - Perform a 30 second compass calibration"}),"\n"]}),"\n",(0,s.jsx)(i.h4,{id:"lora",children:"LoRa"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Device Role - Choose between Client, Client Mute, Lost and Found, or Tracker"}),"\n",(0,s.jsx)(i.li,{children:"Radio Preset - Choose one of the available preset like ShortTurbo or LongFast"}),"\n",(0,s.jsxs)(i.li,{children:["Region Picker - Change your ",(0,s.jsx)(r.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"})," Region"]}),"\n"]}),"\n",(0,s.jsx)(i.h4,{id:"system",children:"System"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["Notifications","\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Buzzer Actions - Select for what type of notifications will invoke the buzzer"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["Screen Options","\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Brightness - Pick Between Low, Medium, High brightness"}),"\n",(0,s.jsx)(i.li,{children:"Screen Color - Pick display color from list of available choices"}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(i.li,{children:"Bluetooth Toggle - Enable / Disable Bluetooth (will reboot device)"}),"\n",(0,s.jsxs)(i.li,{children:["Reboot/Shutdown - Manually reboot or power off the device ",(0,s.jsx)(i.em,{children:"(reboot or power off the device to save changes)"})]}),"\n"]}),"\n",(0,s.jsx)(i.h4,{id:"clock",children:"Clock"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Clock Face - Change between Digital and Analog Watch Faces"}),"\n",(0,s.jsxs)(i.li,{children:["Time Format - If enabled, times will be shown in 12 hour format (",(0,s.jsx)(i.code,{children:"1:50pm"}),"), instead of 24 hour format (",(0,s.jsx)(i.code,{children:"13:50"}),")."]}),"\n",(0,s.jsx)(i.li,{children:"Timezone - Elect which timezone offset for this device"}),"\n"]}),"\n",(0,s.jsx)(a.v,{children:(0,s.jsx)("img",{src:"/img/configuration/baseui/baseui-06-clock-green.webp",alt:"Clock Display"})}),"\n",(0,s.jsx)(a.F,{children:(0,s.jsx)("img",{src:"/img/configuration/baseui/baseui-06-clock-red.webp",alt:"Clock Display"})}),"\n",(0,s.jsx)(i.h4,{id:"favorites",children:"Favorites"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["New Preset Message - Send predefined text messages to the mesh network from the device without using the phone app. To enable this feature, ",(0,s.jsx)(i.a,{href:"/docs/2.7/configuration/module/canned-message/#messages",children:"set a list of predefined messages"}),"."]}),"\n",(0,s.jsx)(i.li,{children:"New FreeText Message - For devices with physical or virtual keyboards send freely typed text messages to the mesh network from the device without using the phone app."}),"\n",(0,s.jsx)(i.li,{children:"Trace Route - Perform a trace route to the favorited node"}),"\n",(0,s.jsx)(i.li,{children:"Remove Favorite - Remove the current node from the favorite list, can be re-added through any Node list"}),"\n"]})]})}function m(e={}){let{wrapper:i}={...(0,o.R)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},79310(e,i,n){n.d(i,{F:()=>s,v:()=>
1o});var t=n(91987);let s=({children:e})=>(0,t.jsx)("div",{className:"hideLight",children:e}),o=({children:e})=>(0,t.jsx)("div",{className:"hideDark",children:e})},67008(e,i,n){n.d(i,{R:()=>r,x:()=>a});var t=n(71763);let s={},o=t.createContext(s);function r(e){let i=t.useContext(o);return t.useMemo(function(){return"function"==typeof e?e(i):{...i,...e}},[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),t.createElement(o.Provider,{value:i},e.children)}},87622(e,i,n){n.d(i,{A:()=>r});var t=n(71763),s=n(37773),o=n(91987);function r({term:e,definition:i,abbreviation:n,routePath:a="/glossary",children:l}){let[d,c]=(0,t.useState)(!1),[h,u]=(0,t.useState)(null),[m,p]=(0,t.useState)("top"),g=(0,t.useRef)(null),f=(0,t.useRef)(null),x=(0,t.useCallback)(()=>{let e;if(!g.current||!f.current)return;let i=g.current.getBoundingClientRect(),n=f.current.getBoundingClientRect(),t=window.innerWidth,s=window.innerHeight,o=document.querySelector(".navbar"),r=o?o.getBoundingClientRect().bottom:0,a=i.top-r>=n.height+8,l=s-i.bottom>=n.height+8,d=a||!l?"top":"bottom";e="top"===d?i.top-n.height-8:i.bottom+8;let c=i.left+i.width/2-n.width/2;c=Math.max(8,Math.min(c,t-n.width-8)),p(d),u({top:Math.max(r+4,e),left:c})},[]);(0,t.useEffect)(()=>{let e;if(!d)return;let i=requestAnimationFrame(()=>{e=requestAnimationFrame(()=>{x()})}),n=()=>x(),t=()=>x();return window.addEventListener("scroll",n,!0),window.addEventListener("resize",t),()=>{cancelAnimationFrame(i),e&&cancelAnimationFrame(e),window.removeEventListener("scroll",n,!0),window.removeEventListener("resize",t)}},[d,x]);let v=(0,s.P_)("docusaurus-plugin-glossary"),b=(0,t.useMemo)(()=>{if(i&&"string"==typeof i&&i.length>0)return i;let n=(v&&v.terms||[]).find(i=>"string"==typeof i.term&&i.term.toLowerCase()===String(e).toLowerCase());return n&&n.definition?n.definition:void 0},[i,v,e]),j=(0,t.useMemo)(()=>{let i=n;if(!i){let n=(v&&v.terms||[]).find(i=>"string"==typeof i.term&&i.term.toLowerCase()===String(e).toLowerCase());i=n&&n.abbreviation}if("string"!=typeof i)return;let t=i.trim();if(t&&t.toLowerCase()!==String(e).toLowerCase())return t},[n,v,e]),w=(0,t.useMemo)(()=>a&&"string"==typeof a&&a.length>0?a:v&&v.routePath||"/glossary",[v,a]),y=l||e,S=e.toLowerCase().replace(/\s+/g,"-");return(0,o.jsxs)("span",{ref:g,className:"glossaryTermWrapper_ud7W",children:[(0,o.jsx)("a",{href:`${w}#${S}`,className:"glossaryTerm_x2nJ",onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),onFocus:()=>c(!0),onBlur:()=>c(!1),"aria-describedby":`tooltip-${S}`,children:y}),b&&(0,o.jsxs)("span",{ref:f,id:`tooltip-${S}`,className:`tooltip_WjgA ${d?"tooltipVisible_AjfD":""} ${"top"===m?"tooltipTop_uMN4":"tooltipBottom_U9P5"} tooltipFloating_nLk7`,role:"tooltip",style:d&&h?{top:`${h.top}px`,left:`${h.left}px`}:void 0,children:[(0,o.jsx)("strong",{children:e}),j?` (${j}). `:"",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.