PageSourceSearch

https://tn-docusaurus.vercel.app/assets/js/37a1a3c7.b83f2ead.js

js tn-docusaurus.vercel.app collected 2026-10-03 07:55:00 UTC 26,651 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunktechnexion_wiki=globalThis.webpackChunktechnexion_wiki||[]).push([[15873],{5960(e,n,r){r.d(n,{A:()=>b});var s=r(96540),i=r(66274);var t=r(77618),l=r(34002),a=r(74848);const o={exclude:[],include:[]},d={exclude:[],include:[]},c={exclude:[],include:[]},u={exclude:[],include:[]},h={exclude:[],include:[]},m={exclude:[],include:[]},p=(e,{exclude:n=[],include:r=[]}={})=>[...t.G.filter(e=>!n.includes(e)),...r].map(n=>`${e}-${n}`),x={TEVI:["TEVI-AR0144","TEVI-AR0234","TEVI-AR0521","TEVI-AR0522","TEVI-AR0821","TEVI-AR0822","TEVI-AR1335"],TEVS:p("TEVS",{exclude:[],include:[]}),TEVM:p("TEVM",o),VLS_FPD3:i.J,VLM_FPD3:p("VLM-FPD3",u),VLS_GM2:p("VLS-GM2",h),VLM_GM2:p("VLM-GM2",m),VCI:l.L,VCS:p("VCS",d),VCM:p("VCM",c)},b=({series:e,prefix:n=""})=>{const r=x[e]||[];return(0,a.jsx)("div",{children:r.map(e=>(0,a.jsxs)(s.Fragment,{children:[n,e,(0,a.jsx)("br",{})]},e))})}},11470(e,n,r){r.d(n,{A:()=>A});var s=r(96540),i=r(34164),t=r(17559),l=r(23104),a=r(56347),o=r(205),d=r(57485),c=r(31682),u=r(70679);function h(e){return s.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function m(e){const{values:n,children:r}=e;return(0,s.useMemo)(()=>{const e=n??function(e){return h(e).map(({props:{value:e,label:n,attributes:r,default:s}})=>({value:e,label:n,attributes:r,default:s}))}(r);return function(e){const n=(0,c.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,r])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function x({queryString:e=!1,groupId:n}){const r=(0,a.W6)(),i=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new 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 n??null}({queryString:e,groupId:n});return[(0,d.aZ)(i),(0,s.useCallback)(e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})},[i,r])]}function b(e){const{defaultValue:n,queryString:r=!1,groupId:i}
1=e,t=m(e),[l,a]=(0,s.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const r=n.find(e=>e.default)??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:t})),[d,c]=x({queryString:r,groupId:i}),[h,b]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[r,i]=(0,u.Dv)(n);return[r,(0,s.useCallback)(e=>{n&&i.set(e)},[n,i])]}({groupId:i}),g=(()=>{const e=d??h;return p({value:e,tabValues:t})?e:null})();(0,o.A)(()=>{g&&a(g)},[g]);return{selectedValue:l,selectValue:(0,s.useCallback)(e=>{if(!p({value:e,tabValues:t}))throw new Error(`Can't select invalid tab value=${e}`);a(e),c(e),b(e)},[c,b,t]),tabValues:t}}var g=r(92303);const v="tabList__CuJ",f="tabItem_LNqP";var j=r(74848);function y({className:e,block:n,selectedValue:r,selectValue:s,tabValues:t}){const a=[],{blockElementScrollPositionUntilNextRender:o}=(0,l.a_)(),d=e=>{const n=e.currentTarget,i=a.indexOf(n),l=t[i].value;l!==r&&(o(n),s(l))},c=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const r=a.indexOf(e.currentTarget)+1;n=a[r]??a[0];break}case"ArrowLeft":{const r=a.indexOf(e.currentTarget)-1;n=a[r]??a[a.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":n},e),children:t.map(({value:e,label:n,attributes:s})=>(0,j.jsx)("li",{role:"tab",tabIndex:r===e?0:-1,"aria-selected":r===e,ref:e=>{a.push(e)},onKeyDown:c,onClick:d,...s,className:(0,i.A)("tabs__item",f,s?.className,{"tabs__item--active":r===e}),children:n??e},e))})}function S({lazy:e,children:n,selectedValue:r}){const t=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=t.find(e=>e.props.value===r);return e?(0,s.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:t.map((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==r}))})}function V(e){const n=b(e);return(0,j.jsxs)("div",{className:(0,i.A)(t.G.tabs.container,"tabs-container",v),children:[(0,j.jsx)(y,{...n,...e}),(0,j.jsx)(S,{...n,...e})]})}function A(e){const n=(0,g.A)();return(0,j.jsx)(V,{...e,children:h(e.children)},String(n))}},19365(e,n,r){r.d(n,{A:()=>l});r(96540);var s=r(34164);const i="tabItem_Ymn6";var t=r(74848);function l({children:e,hidden:n,className:r}){return(0,t.jsx)("div",{role:"tabpanel",className:(0,s.A)(i,r),hidden:n,children:e})}},28453(e,n,r){r.d(n,{R:()=>l,x:()=>a});var s=r(96540);const i={},t=s.createContext(i);function l(e){const n=s.useContext(t);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),s.createElement(t.Provider,{value:n},e.children)}},34002(e,n,r){r.d(n,{L:()=>s});const s=["VCI-AR0144","VCI-AR0234","VCI-AR0521","VCI-AR0522","VCI-AR0821","VCI-AR0822","VCI-AR1335"]},34478(e,n,r){r.r(n),r.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"embedded-vision/mipi-csi-2/ti/beagleplay","title":"TI BeaglePlay Camera Usage Guide","description":"","source":"@site/docs/embedded-vision/mipi-csi-2/ti/beagleplay.md","sourceDirName":"embedded-vision/mipi-csi-2/ti","slug":"/embedded-vision/mipi-csi-2/ti/beagleplay","permalink":"/docs/embedded-vision/mipi-csi-2/ti/beagleplay","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"TI BeaglePlay Camera Usage Guide","description":"","sidebar_label":"BeaglePlay"},"sidebar":"embVisionSidebar","previous":{"title":"Processor SDK Linux 11.01","permalink":"/docs/embedded-vision/mipi-csi-2/ti/sk-am62x-sk-am62a-lp-sk-tda4vm/sk-am62a/processor-sdk-linux-11.01"},"next":{"title":"BeagleY-AI","permalink":"/docs/embedded-vision/mipi-csi-2/ti/beagley-ai"}}');var i=r(74848),t=r(28453),l=r(37773);const a={title:"TI BeaglePlay Camera Usage Guide",description:"",sidebar_label:"BeaglePlay"},o=void 0,d={},c=[{value:"Introduction",id:"introduction",level:2},{value:"Supported Camera Modules",id:"supported-camera-modules",level:2}
1,{value:"Support System Version",id:"support-system-version",level:2},{value:"Supported TI Development Kit",id:"supported-ti-development-kit",level:2},{value:"Install TN Camera on TI Development Kit",id:"install-tn-camera-on-ti-development-kit",level:2},{value:"Adaptor for <strong>BeaglePlay</strong>",id:"adaptor-for-beagleplay",level:3},{value:"Method 1 - Using Technexion Pre-built modules, only for <strong>kernel 6.6.32-ti-arm64-r7</strong>",id:"method-1---using-technexion-pre-built-modules-only-for-kernel-6632-ti-arm64-r7",level:3},{value:"Method 2 - Build drivers from source code (cross-compiling)",id:"method-2---build-drivers-from-source-code-cross-compiling",level:3},{value:"Bring up Camera by GStreamer",id:"bring-up-camera-by-gstreamer",level:2},{value:"Troubleshooting",id:"troubleshooting",level:2}];function u(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h2:"h2",h3:"h3",hr:"hr",li:"li",mdxAdmonitionTitle:"mdxAdmonitionTitle",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("center",{children:(0,i.jsx)("img",{src:"/img/beagleboard-beagleplay-rpi22_1000x571.jpg",width:"800",height:"457"})}),"\n",(0,i.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,i.jsx)(n.p,{children:"TechNexion Embedded Vision Solutions provide embedded system developers access to high-performance, industrial-grade camera solutions to accelerate their time to market for embedded vision projects."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"supported-camera-modules",children:"Supported Camera Modules"}),"\n",(0,i.jsx)(l.A,{series:["TEVS"]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsx)(n.mdxAdmonitionTitle,{children:(0,i.jsx)(n.strong,{children:"More Camera Products Details"})}),(0,i.jsxs)(n.p,{children:["Check here ! \ud83d\udd17 ",(0,i.jsx)(n.a,{href:"https://www.technexion.com/products/embedded-vision/",children:"TechNexion Embedded Vision Solutions"}),(0,i.jsx)("br",{}),"\nFind out the solution which can accelerate your time to market for embedded vision projects."]})]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"support-system-version",children:"Support System Version"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://www.beagleboard.org/distros/beagleplay-debian-12-6-2024-07-04-xfce",children:"BeaglePlay Debian 12.6 2024-07-04 XFCE"})," ",(0,i.jsx)(n.a,{href:"https://github.com/beagleboard/linux/tree/6.6.32-ti-arm64-r7",children:"[kernel 6.6.32-ti-arm64-r7]"})]}),"\n"]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"supported-ti-development-kit",children:"Supported TI Development Kit"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{style:{textAlign:"center"},children:(0,i.jsx)(n.strong,{children:"SoM"})}),(0,i.jsx)(n.th,{children:(0,i.jsx)(n.strong,{children:"Board"})})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{style:{textAlign:"center"},children:"AM62x"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"https://www.ti.com/tool/BEAGL-PLAY-SBC",children:"BEAGL-PLAY-SBC"})})]})})]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"install-tn-camera-on-ti-development-kit",children:"Install TN Camera on TI Development Kit"}),"\n",(0,i.jsxs)(n.h3,{id:"adaptor-for-beagleplay",children:["Adaptor for ",(0,i.jsx)(n.strong,{children:"BeaglePlay"})]}),"\n",(0,i.jsx)(n.p,{children:"TEVS-RPI22 Adaptor for TEVS"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["Connect TEVS camera and TEVS-RPI22 adaptor to ",(0,i.jsx)(n.strong,{children:"BeaglePlay - CSI"})," directly."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"https://www.technexion.com/products/embedded-vision/mipi-csi2/evk/tevs-ar0144-c-s83-ir-rpi22/",children:(0,i.jsx)("img",{src:"/img/tevs-ar0144-c-s83-ir-rpi22.png",style:{float:"left",margin:"50 50 10px 10px"},width:"240",height:"240"})})}),"\n",(0,i.jsx)("iframe",{style:{float:"right",margin:"50 50 10px 10px"},width:"492",height:"277",src:"https://www.youtube.com/embed/rplNlAMedj4?start=47",title:"BeagleBoard BeaglePlay Embedded Vision (camera) Solutions",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture;
1 web-share",referrerpolicy:"strict-origin-when-cross-origin",allowfullscreen:!0}),"\n",(0,i.jsx)("br",{}),"\n",(0,i.jsx)("br",{}),"\n",(0,i.jsx)("br",{}),"\n",(0,i.jsx)("br",{}),"\n",(0,i.jsx)("br",{}),"\n",(0,i.jsx)("br",{}),"\n",(0,i.jsx)("br",{}),"\n",(0,i.jsx)("br",{}),"\n",(0,i.jsx)("br",{}),"\n",(0,i.jsx)("br",{}),"\n",(0,i.jsx)("br",{}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsxs)(n.h3,{id:"method-1---using-technexion-pre-built-modules-only-for-kernel-6632-ti-arm64-r7",children:["Method 1 - Using Technexion Pre-built modules, only for ",(0,i.jsx)(n.strong,{children:"kernel 6.6.32-ti-arm64-r7"})]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Make a SD card with ",(0,i.jsx)(n.em,{children:'"BeaglePlay Debian 12.6 2024-07-04 XFCE"'})," image."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Mount boot partition and configure sysconf.txt before the first boot."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"$ vim /media/${user}/BOOT/sysconf.txt\n\n> # root_password - Set a password for the root user (not used in ubuntu)\n> root_password=root\n>\n> # user_name - Set a user name for the user (1000)\n> user_name=beagle\n>\n> # user_password - Set a password for user (1000)\n> user_password=beagle\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Boot BeaglePlay with SD card."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Download pre-built modules."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"$ wget https://download.technexion.com/demo_software/EVK/TI/BeaglePlay/pre-built-modules/latest/tn_camera_module_beagleplay_6.6.32.tar.gz\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Uncompress the modules."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"$ tar -xf tn_camera_module_beagleplay_6.6.32.tar.gz\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Run installation script."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"$ cd tn_camera_module_beagleplay_6.6.32/\n$ sh tn_install.sh\n[sudo] password for beagle:\n****** TechNexion Camera Driver Installation ******\nThis installation is easy to install TechnNexion Camera Drivers for BeaglePlay.\nBefore start to install camera driver, You should BACKUP your image and config\nto avoid any file you lost while installing process.\nDo you want to continue?[Y/n]y\nContinuing with the installation...\nInstall TN-CAM modules: tevs.ko.xz\nInstalled TN-CAM module file Done.\nInstall TN-CAM DTBO file: k3-am625-beagleplay-csi2-tevs-rpi22.dtbo\nInstalled TN-CAM DTBO file Done.\nAdd TN-CAM Configuration for modules: tevs-rpi22\nlabel microSD (default)\nInstall TN-CAM service...\nLaunch TN-CAM Service...\nCreated symlink /etc/systemd/system/multi-user.target.wants/tn_cam.service \u2192 /etc/systemd/system/tn_cam.service.\nFinish Camera Driver Installation. Return Code:[1]\nYou should Reboot Device to enable TEVS Cameras.\nDo you want to reboot now?[Y/n]y\nRebooting....\n"})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"method-2---build-drivers-from-source-code-cross-compiling",children:"Method 2 - Build drivers from source code (cross-compiling)"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["You can reference ",(0,i.jsx)(n.a,{href:"https://docs.beagleboard.org/latest/books/beaglebone-cookbook/07kernel/kernel.html",children:"BeagleBone Cookbook - The Kernel"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Make sure the dependencies."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"$ sudo apt install -y git bc bison flex libssl-dev make libc6-dev libncurses5-dev\n\n# Install the 64-bit toolchain for a 64-bit kernel\n$ sudo apt install -y crossbuild-essential-arm64\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Get the kernel sources."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"# beagleboard linux kerbel\n$ git clone --depth=1 -b v6.6.32
1-ti-arm64-r7 https://github.com/beagleboard/linux.git\n\n# technexion beagle camera driver\n$ git clone --depth=1 -b v6.6.32-ti-arm64 https://github.com/TechNexion-Vision/beagle_devkit_camera_driver.git\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Copy TN beagle camera driver to beagleboard linux kernel."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"$ cp -rv beagle_devkit_camera_driver/drivers/media/i2c/* linux/drivers/media/i2c/\n$ cp -rv beagle_devkit_camera_driver/arch/arm64/boot/dts/ti/* linux/arch/arm64/boot/dts/ti/\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Build sources."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:'$ cd linux\n\n# default configuration\n$ make distclean\n$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- olddefconfig\n\n# config camera\n$ make menuconfig\n# -> Device Drivers\n#   -> Multimedia support (MEDIA_SUPPORT [=m])\n#     -> Media ancillary drivers\n#       -> Camera sensor devices (VIDEO_CAMERA_SENSOR [=y])\n#         -> TechNexion TEVS sensor support\n#            Set "VIDEO_TEVS" to module,\n#            Press "m", save to original name (.config) and exit\n\n# build kernel\n$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- LOCALVERSION="-tn-arm64" -j$(nproc)\n$ mkdir -p modules\n$ sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=./modules modules_install\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Plug in the SD card which burned ",(0,i.jsx)(n.em,{children:'"BeaglePlay Debian 12.6 2024-07-04 XFCE"'})," image to PC."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Configure sysconf.txt before the first boot."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"$ vim /media/${user}/BOOT/sysconf.txt\n\n> # root_password - Set a password for the root user (not used in ubuntu)\n> root_password=root\n>\n> # user_name - Set a user name for the user (1000)\n> user_name=beagle\n>\n> # user_password - Set a password for user (1000)\n> user_password=beagle\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Install onto the SD card."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:'$ sudo cp arch/arm64/boot/Image /media/$(users)/BOOT/\n$ sudo cp arch/arm64/boot/dts/ti/*.dtbo /media/$(users)/BOOT/overlays/\n\n# you can use "make kernelversion" to check kernel version\n$ sudo cp -ra modules/lib/modules/$(make kernelversion)-tn-$(git_commit)-dirty/ /media/$(users)/rootfs/lib/modules/\n$ sync\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Boot BeaglePlay with SD card."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Modify the extlinux.conf file to add camera configuraion."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"$ sudo nano /boot/firmware/extlinux/extlinux.conf\n\n> label microSD (default)\n>     kernel /Image\n>     append root=/dev/mmcblk1p3 ro rootfstype=ext4 resume=/dev/mmcblk1p2 rootwait net.ifnames=0 quiet\n>     fdtdir /\n>     fdtoverlays /overlays/k3-am625-beagleplay-csi2-tevs-rpi22.dtbo\n>     initrd /initrd.img\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Add the overlay to ",(0,i.jsx)(n.code,{children:"label microSD (default)"})," and append ",(0,i.jsx)(n.code,{children:"fdtoverlays /overlays/k3-am625-beagleplay-csi2-tevs-rpi22.dtbo"})," after the ",(0,i.jsx)(n.code,{children:"fdtdir"})," line."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Restart system."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"$ sudo reboot\n"})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"bring-up-camera-by-gstreamer",children:"Bring up Camera by GStreamer"}),"\n",(0,i.jsx)(n.p,{children:"If you succeed in initialing the camera, you can follow the steps to open the camera."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Check the media deivce."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:'$ media-ctl -d /dev/media0 -p\nDevice topology\n- entity 1: 30102000.ticsi2rx (5 pads, 5 links)\n            type V4L2 subdev subtype Unknown flags 0\n            device node name /dev/v4l-subdev0\n        pad0: Sink\n                [fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]\n                <- "cdns_csi2rx.30101000.csi-bridge":1 [ENABLED,IMMUTABLE]\n        pad1: Source\n                [fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]\n                -> "30102000.ticsi2rx context 0":0 [ENABLED,IMMUTABLE]\n        pad2: Source\n                -> "30102000.ticsi2rx context 1":0 [ENABLED,IMMUTABLE]\n        pad3: Source\n                -> "30102000.ticsi2rx context 2":0 [ENABLED,IMMUTABLE]\n        pad4: Source\n                -> "30102000.ticsi2rx context 3":0 [ENABLED,IMMUTABLE]\n\n- entity 7: cdns_csi2rx.30101000.csi-bridge (5 pads, 2 links)\n            type V4L2 subdev subtype Unknown flags 0\n            device node name /dev/v4l-subdev1\n        pad0: Sink\n                [fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]\n                <- "tevs 4-0048":0 [ENABLED,IMMUTABLE]\n        pad1: Source\n                [fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]\n                -> "30102000.ticsi2rx":0 [ENABLED,IMMUTABLE]\n        pad2: Source\n        pad3: Source\n        pad4: Source\n\n- entity 13: tevs 4-0048 (1 pad, 1 link)\n              type V4L2 subdev subtype Sensor flags 0\n              device node name /dev/v4l-subdev2\n        pad0: Source\n                [fmt:UYVY8_1X16/640x480@1/60 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range\n                  crop.bounds:(0,0)/640x480\n                  crop:(0,0)/640x480]\n                -> "cdns_csi2rx.30101000.csi-bridge":0 [ENABLED,IMMUTABLE]\n\n- entity 19: 30102000.ticsi2rx context 0 (1 pad, 1 link)\n              type Node subtype V4L flags 0\n              device node name /dev/video0\n        pad0: Sink\n                <- "30102000.ticsi2rx":1 [ENABLED,IMMUTABLE]\n\n...\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"List device support formats and resolutions."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"# list support format\n$ v4l2-ctl -d /dev/v4l-subdev2 --list-subdev-mbus-codes\n\nioctl: VIDIOC_SUBDEV_ENUM_MBUS_CODE (pad=0)\n        0x200f: MEDIA_BUS_FMT_UYVY8_1X16\n\n# list support frame size with format\n$ v4l2-ctl -d /dev/v4l-subdev2 --list-subdev-framesize code=0x200f\n\nioctl: VIDIOC_SUBDEV_ENUM_FRAME_SIZE (pad=0)\n        Size Range: 640x480 
1- 640x480\n        Size Range: 1280x720 - 1280x720\n        Size Range: 1280x800 - 1280x800\n\n# list support frame intercal with format and resolution\n$ v4l2-ctl -d /dev/v4l-subdev2 --list-subdev-frameintervals \\\npad=0,width=1280,height=720,code=0x2006\n\nioctl: VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL (pad=0)\n        Interval: 0.017s (60.000 fps)\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Bring up the camera (/dev/video0) with 640x480 by Gstreamer pipeline."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:'$ DISPLAY=:0 gst-launch-1.0 v4l2src device=/dev/video0 ! \\\n"video/x-raw, format=UYVY, width=640, height=480" ! fpsdisplaysink sync=false\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Change resolution with 1280x720 and bring up by Gstreamer pipeline directly."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:'# modify media resoltion\nmedia-ctl -V \'"tevs 4-0048":0 [fmt:UYVY8_1X16/1280x720]\'\nmedia-ctl -V \'"30102000.ticsi2rx":0 [fmt:UYVY8_1X16/1280x720]\'\n\n$ DISPLAY=:0 gst-launch-1.0 v4l2src device=/dev/video0 ! \\\n"video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)720" ! \\\nfpsdisplaysink video-sink=glimagesink sync=false\n'})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"troubleshooting",children:"Troubleshooting"})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},37773(e,n,r){r.d(n,{A:()=>h});var s=r(96540),i=r(11470),t=r(19365),l=r(5960),a=r(74848);const o={TEVI:"TEVI",TEVS:"TEVS",TEVM:"TEVM",VLS_FPD3:"VLS-FPD3",VLM_FPD3:"VLM-FPD3",VLS_GM2:"VLS-GM2",VLM_GM2:"VLM-GM2"};function d(e){return"string"==typeof e?{productSeries:e,label:o[e]??e.replaceAll("_","-"),extraProducts:[]}:{productSeries:e.productSeries??e.series,label:e.label??o[e.productSeries??e.series]??(e.productSeries??e.series).replaceAll("_","-"),extraProducts:e.extraProducts??[]}}function c({series:e}){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(l.A,{series:e.productSeries}),e.extraProducts.map(e=>(0,a.jsxs)(s.Fragment,{children:[e,(0,a.jsx)("br",{})]},e))]})}function u({series:e}){return(0,a.jsxs)("table",{children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{children:(0,a.jsx)("strong",{children:"Camera Series"})}),(0,a.jsx)("th",{children:(0,a.jsx)("strong",{children:"Products"})})]})}),(0,a.jsx)("tbody",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("td",{children:e.label}),(0,a.jsx)("td",{children:(0,a.jsx)(c,{series:e})})]})})]})}function h({series:e=["TEVS"],groupId:n="supported-cameras",showImage:r=!0}){const s=e.map(d);return(0,a.jsxs)("div",{className:"flex-container supported-camera-modules"+(r?"":" supported-camera-modules--table-only"),children:[(0,a.jsx)("div",{className:"flex-item-table",children:1===s.length?(0,a.jsx)(u,{series:s[0]}):(0,a.jsx)(i.A,{groupId:n,children:s.map(e=>{return(0,a.jsx)(t.A,{value:(n=e.label,n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"")),label:`${e.label} Series`,children:(0,a.jsx)(u,{series:e})},e.label);var n})})}),r&&(0,a.jsx)("div",{className:"flex-item-image",children:(0,a.jsx)("img",{src:"/img/camera-seneor-comparsion.jpg",alt:"Camera Sensor Comparison"})})]})}},66274(e,n,r){r.d(n,{J:()=>s});const s=["VLS-FPD3-AR0144","VLS-FPD3-AR0145","VLS-FPD3-AR0234","VLS-FPD3-AR0521","VLS-FPD3-AR0522","VLS-FPD3-AR0821","VLS-FPD3-AR0822","VLS-FPD3-AR1335"]},77618(e,n,r){r.d(n,{G:()=>s});const s=["AR0144","AR0145","AR0234","AR0235","AR0246","AR0521","AR0522","AR0544","AR0821","AR0822","AR0830","AR1335","AR2020"];s.map(e=>`TEVS-${e}`)}}]);

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.