PageSourceSearch

https://milkv.io/assets/js/a81ce60e.806b32f3.js

js milkv.io collected 2026-09-24 19:32:51 UTC 61,657 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkmilkv_website=self.webpackChunkmilkv_website||[]).push([[277],{43514:(e,t,l)=>{l.r(t),l.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>o,frontMatter:()=>i,metadata:()=>r,toc:()=>x});var n=l(85893),s=l(11151);const i={sidebar_label:"Duo S (SG2000)",sidebar_position:3},d="Duo S",r={id:"duo/getting-started/duos",title:"Duo S",description:"Milk-V Duo S is an upgraded model of Duo, featuring an upgraded SG2000 main controller with a larger 512MB memory and expanded IO capabilities. It integrates wireless capabilities with WI-FI 6/BT 5, and comes equipped with a USB 2.0 HOST interface and a 100Mbps Ethernet port for user convenience. Supporting dual cameras (2x MIPI CSI 2-lane) and MIPI video output (MIPI DSI 4-lane), it allows for versatile applications. The device also supports switching between RISC-V and ARM boot through a switch. With enhanced functionality, Duo S is better suited for a variety of scenarios with more complex project development requirements.",source:"@site/docs/duo/getting-started/duos.md",sourceDirName:"duo/getting-started",slug:"/duo/getting-started/duos",permalink:"/docs/duo/getting-started/duos",draft:!1,unlisted:!1,editUrl:"https://github.com/milk-v/milkv.io/edit/main/docs/duo/getting-started/duos.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_label:"Duo S (SG2000)",sidebar_position:3},sidebar:"duo",previous:{title:"Duo 256M (SG2002)",permalink:"/docs/duo/getting-started/duo256m"},next:{title:"Duo Module 01 (SG2000)",permalink:"/docs/duo/getting-started/duo-module-01"}},c={},x=[{value:"Introduction of SG2000",id:"introduction-of-sg2000",level:2},{value:"SG2000 Public Preliminary Datasheet",id:"sg2000-public-preliminary-datasheet",level:2},{value:"Buy the SG2000 Chips",id:"buy-the-sg2000-chips",level:2},{value:"Getting Started",id:"getting-started",level:2},{value:"Installing the system",id:"installing-the-system",level:3},{value:"USB Network Usage",id:"usb-network-usage",level:3},{value:"DuoS GPIO Pinout",id:"duos-gpio-pinout",level:2},{value:"GPIO pin mapping",id:"gpio-pin-mapping",level:3},{value:"Header J3",id:"header-j3",level:3},{value:"Header J4",id:"header-j4",level:3},{value:"Blue LED PIN",id:"blue-led-pin",level:3},{value:"Camera interface",id:"camera-interface",level:3},{value:"J1 Connector FPC Definition",id:"j1-connector-fpc-definition",level:4},{value:"J2 Connector FPC Definition",id:"j2-connector-fpc-definition",level:4},{value:"POE Header",id:"poe-header",level:3},{value:"DuoS User Guide",id:"duos-user-guide",level:2},{value:"RISC-V and ARM switching",id:"risc-v-and-arm-switching",level:3},{value:"Usage of USB Type A interface",id:"usage-of-usb-type-a-interface",level:3},{value:"Fixed ethernet port MAC address",id:"fixed-ethernet-port-mac-address",level:3},{value:"UART Serial Console",id:"uart-serial-console",level:3},{value:"USB-TTL Serial Cable",id:"usb-ttl-serial-cable",level:4},{value:"Connection",id:"connection",level:4},{value:"WIFI configuration",id:"wifi-configuration",level:3},{value:"Method 1",id:"method-1",level:4},{value:"Fixed WIFI MAC address",id:"fixed-wifi-mac-address",level:3},{value:"eMMC version firmware burning",id:"emmc-version-firmware-burning",level:3},{value:"Burning in Windows",id:"burning-in-windows",level:4},{value:"eMMC Erase",id:"emmc-erase",level:3},{value:"Hardware Docs",id:"hardware-docs",level:2},{value:"Others",id:"others",level:3}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.a)(),...e.components},{Image:l}=t;return l||function(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Image",!0),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"duo-s",children:"Duo S"}),"\n",(0,n.jsx)(l,{src:"/docs/duo/duos/duos-v1.1.webp",maxWidth:"70%",align:"center"}),"\n",(0,n.jsx)(t.p,{children:"Milk-V Duo S is an upgraded model of Duo, featuring an upgraded SG2000 main controller with a larger 512MB memory and expanded IO capabilities. It integrates wireless capabilities with WI-FI 6/BT 5, and comes equipped with a USB 2.0 HOST interface and a 100Mbps Ethernet port for user convenience. Supporting dual cameras (2x MIPI CSI 2-lane) and MIPI video output (MIPI DSI 4-lane), it allows for versatile applications. The device also supports switching between RISC-V and ARM boot through a switch. With enhanced functionality, Duo S is better suited for a variety of scenarios with more complex project development requirements."}),"\n",(0,n.jsx)(t.h2,{id:"introduction-of-sg2000",children:"Introduction of SG2000"}),"\n",(0,n.jsx)(t.p,{children:"SG2000 is a high-performance, low-power chip designed for various product fields such as edge intelligent surveillance IP cameras, local facial recognition attendance machines, and smart home devices. It integrates H.264/H.265 video compression and decoding and ISP capabilities. It supports various image enhancement and correction algorithms like HDR wide dynamic range, 3D noise reduction, defogging, and lens distortion correction, providing customers with professional-grade video image quality."}),"\n",(0,n.jsx)(t.p,{children:"The chip also integrates an in-house TPU, delivering approximately 0.5TOPS of computing power under INT8 operations. The specially designed TPU scheduling engine efficiently provides high-bandwidth data flow for tensor processing unit cores. It also offers users a powerful deep learning model compiler and software SDK development kit. Mainstream deep learning frameworks such as Caffe, Pytorch, ONNX, MXNet, and TensorFlow (Lite) can be easily ported to this platform."}),"\n",(0,n.jsx)(t.h2,{id:"sg2000-public-preliminary-datasheet",children:"SG2000 Public Preliminary Datasheet"}),"\n",(0,n.jsxs)(t.p,{children:["We have open sourced the Public Preliminary Datasheet and TRM of SG2000 to GitHub. please ",(0,n.jsx)(t.a,{href:"https://github.com/milkv-duo/duo-files/tree/main/duo-s/datasheet",children:"check it out"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"buy-the-sg2000-chips",children:"Buy the SG2000 Chips"}),"\n",(0,n.jsxs)(t.p,{children:["Milk-V is the Authorised Global Distributor of the SG2000 chips. You can buy samples of the SG2000 chip from our distributor ",(0,n.jsx)(t.a,{href:"https://arace.tech/products/sophon-cv1800b-5pcs",children:"online store"})," directly. For volume order, please contact ",(0,n.jsx)(t.a,{href:"mailto:[email protected]
1o",children:"Milk-V Sales Team"})," for the qoutation."]}),"\n",(0,n.jsx)(t.h2,{id:"getting-started",children:"Getting Started"}),"\n",(0,n.jsx)(t.h3,{id:"installing-the-system",children:"Installing the system"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsx)(t.p,{children:"Boot from SD card"}),"\n",(0,n.jsxs)(t.p,{children:["Please refer to the ",(0,n.jsx)(t.a,{href:"https://milkv.io/docs/duo/getting-started/boot",children:"Start Up"})," section."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsx)(t.p,{children:"Boot from eMMC"}),"\n",(0,n.jsxs)(t.p,{children:["Please refer to: ",(0,n.jsx)(t.a,{href:"https://milkv.io/docs/duo/getting-started/duos#emmc-version-firmware-burning",children:"eMMC version firmware burning"})," section."]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(t.h3,{id:"usb-network-usage",children:"USB Network Usage"}),"\n",(0,n.jsxs)(t.p,{children:["Please refer to the ",(0,n.jsx)(t.a,{href:"https://milkv.io/docs/duo/getting-started/setup",children:"Setup"})," section."]}),"\n",(0,n.jsx)(t.h2,{id:"duos-gpio-pinout",children:"DuoS GPIO Pinout"}),"\n",(0,n.jsx)(l,{src:"/docs/duo/duos/duos-pinout-v1.1.webp",maxWidth:"50%",align:"center"}),"\n",(0,n.jsx)(t.h3,{id:"gpio-pin-mapping",children:"GPIO pin mapping"}),"\n",(0,n.jsx)("div",{className:"gpio_style",children:(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"GROUP"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"ADDR"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"PORT"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"CHIP"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"NUM"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"NAME"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"START"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"gpio0"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"gpio@03020000"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"porta"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"gpiochip0"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"480-511"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOA"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"480 - XGPIOA[0]"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"gpio1"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"gpio@03021000"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"portb"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"gpiochip1"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"448-479"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOB"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"448 - XGPIOB[0]"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"gpio2"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"gpio@03022000"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"portc"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"gpiochip2"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"416-447"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOC"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"416 - XGPIOC[0]"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"gpio3"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"gpio@03023000"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"portd"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"gpiochip3"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"384-415"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"gpio4"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"gpio@05021000"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"porte"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"gpiochip4"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"352-383"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWR_GPIO"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"352 - PWR_GPIO[0]"})]})]})]})}),"\n",(0,n.jsx)(t.h3,{id:"header-j3",children:"Header J3"}),"\n",(0,n.jsxs)(t.p,{children:["GPIO on ",(0,n.jsx)(t.code,{children:"Header J3"})," use 3.3V logic levels."]}),"\n",(0,n.jsx)("div",{className:"gpio_style",style:{overflow:"auto"},children:(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"SPI"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"PWM"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"I2C"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"UART"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"NUM"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"SG2000"}),(0,n.jsx)(t.th,{style:{textAlign:"right"},children:"NAME"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"PIN"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"PIN"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"NAME"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"SG2000"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"NUM"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"UART"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"PWM"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"SPI"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"JTAG"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"3V3"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"orange",children:"1"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"red",children:"2"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"VSYS(5V)"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWM3"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"I2C4_SCL"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"468"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOB[20]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"B20"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"3"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"red",children:"4"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"VSYS(5V)"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"I2C4_SDA"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"469"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOB[21]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"B21"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"5"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"black",children:"6"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"GND"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"I2C1_SCL"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"466"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOB[18]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"B18"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"7"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"8"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"A16"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOA[16]"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"496"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"UART0_TX/UART1_TX"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWM4"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"GND*"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"black",children:"9"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"10"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"A17"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOA[17]"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"497"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"UART0_RX/UART1_RX"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWM5"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWM1"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"I2C1_SDA"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"UART2_TX"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"459"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOB[11]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"B11"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"11"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"12"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"B19"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOB[19]"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"467"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"UART2_TX"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWM2"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWM2"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"I2C1_SCL"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"UART2_RX"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"460"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOB[12]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"B12"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"13"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"black",children:"14"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"GND"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"UART2_RX"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"470"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOB[22]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"B22"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"15"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"16"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"A20"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOA[20]"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"500"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"JTAG_TRST"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"3V3"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"orange",children:"17"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"18"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"A19"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOA[19]"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"499"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"UART1_TX/UART1_RTS"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWM7"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"JTAG_TMS"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"SPI3_SDO"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWM3"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"I2C2_SCL"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"461"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOB[13]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"B13"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"19"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"black",children:"20"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"GND"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"SPI3_SDI"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"I2C2_SDA"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"462"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOB[14]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"B14"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"21"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"22"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"A18"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOA[18]"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"498"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"UART1_RX/UART1_CTS"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWM6"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"JTAG_TCK"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAli
1gn:"left"},children:"SPI3_SCK"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"UART2_TX"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"463"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOB[15]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"B15"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"23"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"24"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"B16"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOB[16]"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"464"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"UART2_RX"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"SPI3_CS"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"GND"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"black",children:"25"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"26"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"A28"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOA[28]"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"508"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"UART2_TX/UART1_TX"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]})]})]})}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.em,{children:"GND*: Pin 9 is a low-level GPIO in the V1.1 version of the hardware, and is GND in the V1.2 version and later."})}),"\n",(0,n.jsx)(t.p,{children:"NOTE: The I2C on the CSI camera connector J2 is I2C2, so when using the CSI camera on J2, I2C2 in the J3 pin header is not available."}),"\n",(0,n.jsx)(t.h3,{id:"header-j4",children:"Header J4"}),"\n",(0,n.jsxs)(t.p,{children:["GPIO on ",(0,n.jsx)(t.code,{children:"Header J4"})," use 1.8V logic levels."]}),"\n",(0,n.jsx)("div",{className:"gpio_style",style:{overflow:"auto"},children:(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"PWM"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"I2C"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"UART"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"MIPI DSI"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"NUM"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"SG2000"}),(0,n.jsx)(t.th,{style:{textAlign:"right"},children:"NAME"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"PIN"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"PIN"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"NAME"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"SG2000"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"NUM"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"MIPI DSI"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"VSYS(5V)"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"red",children:"52"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"blue",children:"51"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"AUDIO_OUT_R"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWM12"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"I2C4_SCL"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"UART3_TX"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"449"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOB[1]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"B1"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"50"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"blue",children:"49"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"AUDIO_OUT_L"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWM13"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"I2C4_SDA"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"UART3_RX"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"450"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOB[2]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"B2"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"48"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"blue",children:"47"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"AUDIO_IN_R"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"451"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOB[3]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"B3"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"46"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"blue",children:"45"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"}
1,children:"AUDIO_IN_L"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWM10"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"I2C2_SDA"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"LCD_RST"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"354"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWR_GPIO[2]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"E2"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"44"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"orange",children:"43"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"3V3"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWM9"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"I2C2_SCL"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"UART2_RX"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"LCD_PWR_CT"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"353"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWR_GPIO[1]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"E1"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"42"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"41"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"C18"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOC[18]"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"434"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI_TX_3N"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWM8"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"UART2_TX"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"LCD_PWM"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"352"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"PWR_GPIO[0]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"E0"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"40"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"39"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"C19"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOC[19]"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"435"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI_TX_3P"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"GND"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"black",children:"38"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"black",children:"37"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"GND"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI_TX_2N"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"436"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOC[20]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"C20"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"36"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"35"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"C16"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOC[16]"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"432"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI_TX_CN"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI_TX_2P"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"437"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOC[21]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"C21"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"34"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"33"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"C17"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOC[17]"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"433"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI_TX_CP"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"GND"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"black",children:"32"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"black",children:"31"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"GND"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI_TX_1N"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"430"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOC[14]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"C14"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"30"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"29"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"C12"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOC[12]"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"428"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI_TX_0N"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"}}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI_TX_1P"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"431"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOC[15]"}),(0,n.jsx)(t.td,{style:{textAlign:"right"},children:"C15"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"28"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"green",children:"27"})}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"C13"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"XGPIOC[13]"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"429"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI_TX_0P"})]})]})]})}),"\n",(0,n.jsx)(t.h3,{id:"blue-led-pin",children:"Blue LED PIN"}),"\n",(0,n.jsx)("div",{className:"gpio_style",children:(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"NAME"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"SG2000"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"NUM"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)("div",{className:"blue",children:"LED"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"XGPIOA[29]"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"509"})]})})]})}),"\n",(0,n.jsx)(t.h3,{id:"camera-interface",children:"Camera interface"}),"\n",(0,n.jsx)(t.p,{children:"DuoS has two CSI camera connectors:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["J1 is a 16 PIN 0.5mm pitch connector compatible with Duo and Duo256M cameras, and can directly use the ",(0,n.jsx)(t.a,{href:"https://milkv.io/docs/duo/camera/gc2083",children:"CAM-GC2083"})," camera."]}),"\n",(0,n.jsx)(t.li,{children:"J2 is a 15-pin 1.0mm pitch connector compatible with the Raspberry Pi camera interface. It currently supports the OV5647 camera used on the Raspberry Pi."}),"\n"]}),"\n",(0,n.jsx)(l,{src:"/docs/duo/duos/duos-camera-csi-port.webp",maxWidth:"50%",align:"center"}),"\n",(0,n.jsx)(t.p,{children:"Note that the I2C used by the J1 interface is I2C3, and the I2C used by the J2 interface is I2C2. Please check the pin multiplexing configuration when using it."}),"\n",(0,n.jsx)(t.h4,{id:"j1-connector-fpc-definition",children:"J1 Connector FPC Definition"}),"\n",(0,n.jsx)("div",{className:"gpio_style",children:(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"J1"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"1"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"GND"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"2"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI0_DN0"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"3"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI0_DP0"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"4"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"GND"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"5"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI0_DN1"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"6"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI0_DP1"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"7"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"GND"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"8"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI0_CKN"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"9"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI0_CKP"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"10"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"GND"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"11"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"SENSOR_RSTN0 (1.8V)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"12"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"SENSOR_CLK0  (1.8V)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"13"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"I2C3_SCL     (1.8V)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"14"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"I2C3_SDA     (1.8V)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"15"}),(0,n.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"16"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"3V3"})]})]})]})}),"\n",(0,n.jsx)(t.h4,{id:"j2-connector-fpc-definition",children:"J2 Connector FPC Definition"}),"\n",(0,n.jsx)("div",{className:"gpio_style",children:(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"J2"}),(0,n.jsx)(t.th,{style:{textAlign:"left"},children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"1"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"3V3"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"2"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"I2C2_SDA     (3.3V)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"3"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"I2C2_SCL     (3.3V)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"4"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"SENSOR_CLK1  (3.3V)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"5"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"SENSOR_RSTN1 (3.3V)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"6"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"GND"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"7"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI0_DP5 (CAM1_CP)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"8"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI0_DN5 (CAM1_CN)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"9"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"GND"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"10"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI0_DP4 (CAM1_DP1)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"11"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI0_DN4 (CAM1_DN1)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"12"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"GND"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"13"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI0_DP3 (CAM1_DP0)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"14"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"MIPI0_DN3 (CAM1_DN0)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"15"}),(0,n.jsx)(t.td,{style:{textAlign:"left"},children:"GND"})]})]})]})}),"\n",(0,n.jsx)(t.h3,{id:"poe-header",children:"POE Header"}),"\n",(0,n.jsx)(l,{src:"/docs/duo/duos/duos-poe-pinout.webp",maxWidth:"50%",align:"left"}),"\n",(0,n.jsx)("div",{className:"gpio_style",children:(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"POE Pin"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"1"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"VB-"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"2"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"VB+"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"3"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"VA-"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"4"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"VA+"})]})]})]})}),"\n",(0,n.jsx)(t.h2,{id:"duos-user-guide",children:"DuoS User Guide"}),"\n",(0,n.jsx)(t.h3,{id:"risc-v-and-arm-switching",children:"RISC-V and ARM switching"}),"\n",(0,n.jsx)(t.p,{children:"The large core of DuoS can choose to use RISC-V or ARM processor, which can be set through the switch on the board. If you find that DuoS cannot start normally during
1 use, please first check whether the switch is consistent with the firmware used."}),"\n",(0,n.jsx)(l,{src:"/docs/duo/duos/duos-arm-riscv-switch.webp",maxWidth:"70%",align:"center"}),"\n",(0,n.jsxs)(t.p,{children:["If the debug serial port is connected, you can see in the first line of the boot log that starting with ",(0,n.jsx)(t.code,{children:"C"})," means starting from the RISC-V core, and starting with ",(0,n.jsx)(t.code,{children:"B"})," means starting from the ARM core."]}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["RISC-V:","\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:"C.SCS/0/0.C.SCS/0/0.WD.URPL.USBI.USBW\n"})}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["ARM:","\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:"B.SCS/0/0.WD.URPL.B.SCS/0/0.WD.URPL.USBI.USBW\n"})}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(t.h3,{id:"usage-of-usb-type-a-interface",children:"Usage of USB Type A interface"}),"\n",(0,n.jsx)(t.p,{children:"The USB functions of the DuoS USB Type A interface and Type C interface are optional and cannot be used at the same time. The default firmware is configured with the USB network port (USB-NCM) function of the Type C port. If you need to switch to the USB 2.0 HOST port of the Type A port for use with USB flash drives and other devices, you need to execute the following command:"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:"ln -sf /mnt/system/usb-host.sh /mnt/system/usb.sh\nsync\n"})}),"\n",(0,n.jsxs)(t.p,{children:["Then execute the ",(0,n.jsx)(t.code,{children:"reboot"})," command or power on again to make it take effect."]}),"\n",(0,n.jsxs)(t.p,{children:["For example, after connecting a USB flash drive to the USB A port, you can use ",(0,n.jsx)(t.code,{children:"ls /dev/sd*"})," to check whether the device is detected."]}),"\n",(0,n.jsx)(t.p,{children:"Mount it to the system to view the contents of the USB flash drive (take /dev/sda1 as an example):"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:"mkdir /mnt/udisk\nmount /dev/sda1 /mnt/udisk\n"})}),"\n",(0,n.jsxs)(t.p,{children:["Check whether the contents of the ",(0,n.jsx)(t.code,{children:"/mnt/udisk"})," directory are as expected:"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:"ls /mnt/udisk\n"})}),"\n",(0,n.jsx)(t.p,{children:"Command to uninstall USB flash drive:"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:"umount /mnt/udisk\n"})}),"\n",(0,n.jsx)(t.p,{children:"When you want to restore the USB network (USB-NCM) function of the Type C port, execute:"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:"rm /mnt/system/usb.sh\nln -sf /mnt/system/usb-ncm.sh /mnt/system/usb.sh\nsync\n"})}),"\n",(0,n.jsxs)(t.p,{children:["Then execute the ",(0,n.jsx)(t.code,{children:"reboot"})," command or power on again to make it take effect."]}),"\n",(0,n.jsx)(t.admonition,{type:"tip",children:(0,n.jsx)(t.p,{children:"DuoS has an onboard Ethernet interface, so the USB network port (USB-NCM) of the Type C port can be used without switching to the USB 2.0 Host function of the A port."})}),"\n",(0,n.jsx)(t.h3,{id:"fixed-ethernet-port-mac-address",children:"Fixed ethernet port MAC address"}),"\n",(0,n.jsx)(t.p,{children:"If you need to assign a fixed MAC address to the Ethernet port of DuoS, please execute the following command:"}),"\n",(0,n.jsx)(t.admonition,{type:"tip",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Replace the MAC address in the command with the MAC address you want to set, and please note that MAC addresses of different devices within the same network segment must not be duplicated"})})}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:'echo "pre-up ifconfig eth0 hw ether 78:01:B3:FC:E8:55" >> /etc/network/interfaces && sync\n'})}),"\n",(0,n.jsx)(t.p,{children:"then reboot the board."}),"\n",(0,n.jsx)(t.h3,{id:"uart-serial-console",children:"UART Serial Console"}),"\n",(0,n.jsx)(t.p,{children:"DuoS has a reserved UART debug serial port, which can be used to view the system startup log, or to log in to the console after the system starts and execute some terminal commands."}),"\n",(0,n.jsx)(t.h4,{id:"usb-ttl-serial-cable",children:"USB-TTL Serial Cable"}
1),"\n",(0,n.jsx)(t.p,{children:"The serial port level of Duo series is 3.3V."}),"\n",(0,n.jsx)(t.p,{children:"The pin definitions of common USB to TTL serial cables are as follows:"}),"\n",(0,n.jsx)(l,{src:"/docs/common/usb2ttl.webp",maxWidth:"100%",align:"left"}),"\n",(0,n.jsx)(t.h4,{id:"connection",children:"Connection"}),"\n",(0,n.jsx)(t.p,{children:"Connect the USB to TTL serial cable as shown below, leaving the red wire unconnected."}),"\n",(0,n.jsx)("div",{className:"gpio_style",children:(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Milk-V DouS"}),(0,n.jsx)(t.th,{children:"<---\x3e"}),(0,n.jsx)(t.th,{children:"USB to TTL"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"GND (pin 6)"}),(0,n.jsx)(t.td,{children:"<---\x3e"}),(0,n.jsx)(t.td,{children:"Black wire"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"TX (pin  8)"}),(0,n.jsx)(t.td,{children:"<---\x3e"}),(0,n.jsx)(t.td,{children:"White wire"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"RX (pin 10)"}),(0,n.jsx)(t.td,{children:"<---\x3e"}),(0,n.jsx)(t.td,{children:"Green wire"})]})]})]})}),"\n",(0,n.jsx)(l,{src:"/docs/duo/duos/duos-serial-port.webp",maxWidth:"100%",align:"left"}),"\n",(0,n.jsx)(t.p,{children:"The default serial port parameters of DuoS are as follows:"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:"baudrate: 115200\ndata bit: 8\nstop bit: 1\nparity  : none\nflow control: none\n"})}),"\n",(0,n.jsx)(t.h3,{id:"wifi-configuration",children:"WIFI configuration"}),"\n",(0,n.jsx)(t.h4,{id:"method-1",children:"Method 1"}),"\n",(0,n.jsxs)(t.p,{children:["Edit the following file and replace ",(0,n.jsx)(t.code,{children:"ssid"})," and ",(0,n.jsx)(t.code,{children:"psk"})," with the WIFI account and password to be connected:"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-python",metastring:'{6,7} title="/etc/wpa_supplicant.conf"',children:'ctrl_interface=/var/run/wpa_supplicant\nap_scan=1\nupdate_config=1\n\nnetwork={\n  ssid="wifi_test"\n  psk="12345678"\n  key_mgmt=WPA-PSK\n}\n'})}),"\n",(0,n.jsx)(t.p,{children:"Then execute the following command:"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-bash",children:"wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf\n"})}),"\n",(0,n.jsxs)(t.p,{children:["You can connect to WIFI. After connecting, you can view the assigned IP address through the ",(0,n.jsx)(t.code,{children:"ifconfig"})," or ",(0,n.jsx)(t.code,{children:"ip a"})," command."]}),"\n",(0,n.jsxs)(t.p,{children:["If you need to automatically connect to the WIFI when booting, you can put the following command in the ",(0,n.jsx)(t.code,{children:"/mnt/system/auto.sh"})," file."]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-bash",children:'interface="wlan0"\nmax_attempts=100\nattempt=0\nlog_file="/var/log/auto.sh.log"\n\n# Continuously attempt to detect if the interface exists, up to $max_attempts times\necho "start auto.sh" > "$log_file"\nwhile [ $attempt -lt $max_attempts ]; do\n    # Check if the wlan0 interface exists\n    ip link show "$interface" > /dev/null 2>&1\n    if [ $? -eq 0 ]; then\n        echo "$(date +\'%Y-%m-%d %H:%M:%S\') $interface interface exists, starting wpa_supplicant..." >> "$log_file"\n        wpa_supplicant -B -i "$interface" -c /etc/wpa_supplicant.conf >> "$log_file"\n        break  # Exit the loop if the interface is found\n    else\n        echo "$(date +\'%Y-%m-%d %H:%M:%S\') $interface interface not found, waiting..." >> "$log_file"\n        sleep 1  # Wait for 1 second before checking again\n        attempt=$((attempt + 1))  # Increment the attempt counter\n    fi\ndone\n\n# If the maximum number of attempts is reached and the interface still not found, output an error message\nif [ $attempt -eq $max_attempts ]; then\n    echo "$(date +\'%Y-%m-%d %H:%M:%S\') Interface $interface not found after $max_attempts attempts" >> "$log_file"\nfi\n'})}),"\n",(0,n.jsx)(t.h3,{id:"fixed-wifi-mac-address",children:"Fixed WIFI MAC address"}),"\n",(0,n.jsx)(t.p,{children:"DuoS WIFI MAC address is randomly assigned. If you need to assign a fixed MAC address to the WIFI of DuoS, please execute the following command::"}),"\n",(0,n.jsx)(t.admonition,{type:"tip",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Replace the MAC address in the command with the MAC address you want to set, and please note that MAC addresses of different devices within the same network segment must not be duplicated"})})}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-bash",children:'echo "MAC_ADDR=11:22:33:44:55:66" > /mnt/system/firmware/aic8800/rwnx_settings.ini && sync\n'})}),"\n",(0,n.jsx)(t.p,{children:"then reboot the board."}),"\n",(0,n.jsx)(t.h3,{id:"emmc-version-firmware-burning",children:"eMMC version firmware burning"}),"\n",(0,n.jsx)(t.p,{children:"The DuoS eMMC version does not have firmware burned and needs to be burned using a PC through the USB interface."}),"\n",(0,n.jsx)(t.admonition,{type:"tip",children:(0,n.jsxs)(t.p,{children:["Use the USB burning tool under Windows to support eMMC. The firmware version is ",(0,n.jsx)(t.a,{href:"https://github.com/milkv-duo/duo-buildroot-sdk/releases/tag/v1.1.3",children:"V1.1.3"})," or ",(0,n.jsx)(t.a,{href:"https://github.com/milkv-duo/duo-buildroot-sdk/releases",children:"latest version"}),"."]})}),"\n",(0,n.jsx)(t.h4,{id:"burning-in-windows",children:"Burning in Windows"}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsx)(t.p,{children:"Install driver"}),"\n",(0,n.jsxs)(t.p,{children:["Download the USB driver installation tool: ",(0,n.jsx)(t.a,{href:"https://github.com/milkv-duo/duo-buildroot-sdk/releases/download/Duo-V1.1.0/CviUsbDownloadInstallDriver.zip",children:"CviUsbDownloadInstallDriver.zip"}),". After downloading, unzip and install."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsx)(t.p,{children:"Download burning tool"}),"\n",(0,n.jsxs)(t.p,{children:["Download the command line burning tool under Windows ",(0,n.jsx)(t.a,{href:"https://github.com/milkv-duo/duo-buildroot-sdk/releases/download/Duo-V1.1.0/CviBurn_v2.0_cli_windows.zip",children:"CviBurn_v2.0_cli_windows.zip"}),", unzip it after downloading."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsx)(t.p,{children:"Download firmware"}),"\n",(0,n.jsxs)(t.p,{children:["Download the latest version of DuoS eMMC firmware, currently ",(0,n.jsx)(t.a,{href:"https://github.com/milkv-duo/duo-buildroot-sdk/releases/download/v1.1.3/milkv-
1duos-emmc-v1.1.3-2024-0930.zip",children:"milkv-duos-emmc-v1.1.3-2024-0930.zip"}),", you can create a new rom folder in the burning tool ",(0,n.jsx)(t.code,{children:"CviBurn_v2.0_cli_windows"})," directory, and extract the downloaded eMMC firmware compressed package to rom directory, the directory structure of the burning tool is as follows:"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:"\u2514\u2500\u2500\u2500CviBurn_v2.0_cli_windows\n \u2502   cv_dl_magic.bin\n \u2502   usb_dl.exe\n \u2514\u2500\u2500\u2500rom\n     \u2502   boot.emmc\n     \u2502   fip.bin\n     \u2502   partition_emmc.xml\n     \u2502   rootfs_ext4.emmc\n     |   ...\n"})}),"\n",(0,n.jsxs)(t.p,{children:["In the Windows terminal, execute the burning command in the ",(0,n.jsx)(t.code,{children:"CviBurn_v2.0_cli_windows"})," directory:"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:".\\usb_dl.exe -s linux -c cv181x -i .\\rom\n"})}),"\n",(0,n.jsx)(t.p,{children:"*You can also put the firmware in other directories and specify the corresponding directory through the -i parameter in the command. *"}),"\n",(0,n.jsx)(t.p,{children:"Displays message waiting for USB connection:"}),"\n",(0,n.jsx)(l,{src:"/docs/duo/duos/duos-emmc-install-01.webp",maxWidth:"100%",align:"center"}),"\n",(0,n.jsxs)(t.p,{children:["Press and hold the recovery button on the DuoS, and then connect the DuoS and PC using a ",(0,n.jsx)(t.strong,{children:"Type-C data cable"}),"."]}),"\n",(0,n.jsx)(t.admonition,{type:"warning",children:(0,n.jsx)(t.p,{children:"Before doing this step, remove SD Card first!!"})}),"\n",(0,n.jsx)(l,{src:"/docs/duo/duos/duos-emmc-install-02.jpg",maxWidth:"100%",align:"center"}),"\n",(0,n.jsx)(t.p,{children:"Release the recovery button, DuoS will power on and enter the burning mode, and the PC will display the burning progress in real time:"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:"[INFO] Waiting for USB device connection: ---\n[INFO] found usb device vid=0x3346 pid=0x1000\n[INFO] downloading file: .\\rom\\boot.emmc\n[INFO] CVI_USB_PROGRAM\n[INFO] updated size: 3384664/213100824(1%)\n[INFO] downloading file: .\\rom\\rootfs_ext4.emmc\n[INFO] CVI_USB_PROGRAM\n[INFO] updated size: 20161944/213100824(9%)\n[INFO] CVI_USB_PROGRAM\n[INFO] updated size: 36939224/213100824(17%)\n[INFO] CVI_USB_PROGRAM\n[INFO] updated size: 53716504/213100824(25%)\n[INFO] CVI_USB_PROGRAM\n[INFO] updated size: 70493784/213100824(33%)\n[INFO] CVI_USB_PROGRAM\n[INFO] updated size: 87271064/213100824(40%)\n[INFO] CVI_USB_PROGRAM\n[INFO] updated size: 104048344/213100824(48%)\n[INFO] CVI_USB_PROGRAM\n[INFO] updated size: 120825624/213100824(56%)\n[INFO] CVI_USB_PROGRAM\n[INFO] updated size: 137602904/213100824(64%)\n[INFO] CVI_USB_PROGRAM\n[INFO] updated size: 154380184/213100824(72%)\n[INFO] CVI_USB_PROGRAM\n[INFO] updated size: 171157464/213100824(80%)\n[INFO] CVI_USB_PROGRAM\n[INFO] updated size: 187934744/213100824(88%)\n[INFO] CVI_USB_PROGRAM\n[INFO] updated size: 204712024/213100824(96%)\n[INFO] CVI_USB_PROGRAM\n[INFO] updated size: 213100696/213100824(99%)\n[INFO] USB download complete\n"})}),"\n",(0,n.jsx)(t.p,{children:"After the burning is completed, the DuoS will automatically restart. After booting, you will see the blue LED on the DuoS flashing, indicating that the system has started normally and the burning is successful."}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(t.h3,{id:"emmc-erase",children:"eMMC Erase"}),"\n",(0,n.jsx)(t.p,{children:"If you need to restore the eMMC to its initial state, please refer to the following command to clear the eMMC data (please back up important files in the eMMC in advance):"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Unlock readonly","\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:"echo 0 > /sys/block/mmcblk0boot0/force_ro\necho 0 > /sys/block/mmcblk0boot1/force_ro\n"})}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["Erase","\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:"dd if=/dev/zero of=/dev/mmcblk0boot0 bs=1M count=4\ndd if=/dev/zero of=/dev/mmcblk0boot1 bs=1M count=4\n"})}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"hardware-docs",children:"Hardware Docs"}),"\n",(0,n.jsx)(t.h3,{id:"others",children:"Others"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.a,{href:"https://github.com/milkv-duo/duo-files/tree/main/duo-s",children:"https://github.com/milkv-duo/duo-files/tree/main/duo-s"})})]})}function o(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},11151:(e,t,l)=>{l.d(t,{Z:()=>r,a:()=>d});var n=l(67294);const s={},i=n.createContext(s);function d(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]);

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.