Use identity, capability, and behavior metadata to describe supported hardware.
A device profile is the contract between supported hardware and Dsync. It gives the app enough information to recognize a device, connect to it, and present meaningful operations instead of raw transport details.
USB matching uses the vendor ID and product ID. A profile can also constrain the optional interface class. The identifiers must describe the actual device presented to Android.
BLE matching can use a local-name prefix, one or more advertised service UUIDs, and an optional manufacturer ID. UUIDs are normalized before comparison, but the profile still needs to describe an identifier the device actually advertises.
A broad identity rule can match the wrong hardware. Prefer the narrowest rule that reliably identifies the intended device, then test discovery with more than one physical unit when possible.
The human-readable name tells a field user what the device is.
At least one USB or BLE identity matcher reflects the real hardware.
The transport and service metadata match the device protocol.
Every operation used by a form or workflow belongs to the correct component.
Settings have safe defaults and clear constraints.
A failed or disconnected device has a user-visible recovery path.
If a profile change affects an active field workflow, test discovery, connection, one read, one write where appropriate, and the complete workflow before releasing it.
Last modified on September 7, 2026
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"FarmTrace documentation","description":"Public guidance for FarmTrace Dsync, Device Kit, and the formula language.","colors":{"primary":"#1B6F45","light":"#4ADE80","dark":"#278A56"},"logo":{"light":"https://mintcdn.com/farmtrace/dU8dLDBOMj0npTRB/logo/light.svg?fit=max\u0026auto=format\u0026n=dU8dLDBOMj0npTRB\u0026q=85\u0026s=a32d62b068cf7f7610b6dbdfe9819f6a","dark":"https://mintcdn.com/farmtrace/dU8dLDBOMj0npTRB/logo/dark.svg?fit=max\u0026auto=format\u0026n=dU8dLDBOMj0npTRB\u0026q=85\u0026s=f209a8925c59e1d88e8f71da098175b7","href":"https://farmtrace.co.za"},"favicon":"https://mintcdn.com/farmtrace/dU8dLDBOMj0npTRB/favicon.png?fit=max\u0026auto=format\u0026n=dU8dLDBOMj0npTRB\u0026q=85\u0026s=cdb3c190e3d23b4128d11251a1cac33b","appearance":{"default":"system"},"background":{"decoration":"gradient","color":{"light":"#F3F4F1","dark":"#0B1F12"}},"navbar":{"links":[{"href":"https://farmtrace.co.za","label":"FarmTrace website"},{"href":"mailto:support@farmtrace.co.za","label":"Support"}],"primary":{"type":"button","label":"Visit FarmTrace","href":"https://farmtrace.co.za"}},"seo":{"indexing":"all"},"fonts":{"family":"Geist"},"icons":{"library":"lucide"},"styling":{"eyebrows":"section","codeblocks":{"theme":{"light":"github-light","dark":"github-dark"}},"latex":true},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"farmtrace","hasAudioNarration":false,"actualSubdomain":"farmtrace","customDomains":["docs.farmtrace.co.za"],"gitSource":{"type":"github","owner":"farmtracedev","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6a9ecfb050567d98f662842a","collectionId":"820c3df3-54bd-4eda-b24a-9dc94f6432f1","liveDeploymentHistoryId":"6a9ecfb050567d98f662842a","schemaVersion":"v3"},"entitlements":{},"buildId":"6a9ecfb050567d98f662842a","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"Dsync","count":34},{"language":"default","tag":"Formula reference","count":16},{"language":"default","tag":"Configuration","count":8},{"language":"default","tag":"Device Kit","count":5},{"language":"default","tag":"Device Kit guides","count":5},{"language":"default","tag":"Function setup","count":4},{"language":"default","tag":"Dsync guides","count":3},{"language":"default","tag":"Formula language","count":3},{"language":"default","tag":"Start here","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"device-kit/device-profiles","slug":"/device-kit/device-profiles","pageMetadata":{"title":"Device profiles","description":"Use identity, capability, and behavior metadata to describe supported hardware.","href":"/device-kit/device-profiles"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Use identity, capability, and behavior metadata to describe supported hardware.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={li:`li`,p:`p`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Table,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`A device profile is the contract between supported hardware and Dsync. It gives the app enough information to recognize a device, connect to it, and present meaningful operations instead of raw transport details.`}),`\n`,_jsx(Heading,{level:`2`,id:`what-a-profile-describes`,children:`What a profile describes`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Area`}),_jsx(_components.th,{children:`Purpose`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Identity`}),_jsx(_components.td,{children:`Match the device during discovery.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Metadata`}),_jsx(_components.td,{children:`Provide a stable ID, display name, category, manufacturer, models, or tags.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Transport`}),_jsx(_components.td,{children:`Set BLE or USB connection properties such as MTU, baud, timeout, or retry behavior when supported.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Services`}),_jsx(_components.td,{children:`Map BLE services and characteristics or USB channels to the device protocol.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Components`}),_jsx(_components.td,{children:`Group hardware capabilities and named operations into meaningful units.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Settings`}),_jsx(_components.td,{children:`Define values, defaults, and constraints that the device session can use.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Rules and workflows`}),_jsx(_components.td,{children:`Describe automation and multi-step behavior for the profile.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`identity-matching`,children:`Identity matching`}),`\n`,_jsx(Heading,{level:`3`,id:`usb`,children:`USB`}),`\n`,_jsx(_components.p,{children:`USB matching uses the vendor ID and product ID. A profile can also constrain the optional interface class. The identifiers must describe the actual device presented to Android.`}),`\n`,_jsx(Heading,{level:`3`,id:`ble`,children:`BLE`}),`\n`,_jsx(_components.p,{children:`BLE matching can use a local-name prefix, one or more advertised service UUIDs, and an optional manufacturer ID. UUIDs are normalized before comparison, but the profile still needs to describe an identifier the device actually advertises.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`A broad identity rule can match the wrong hardware. Prefer the narrowest rule that reliably identifies the intended device, then test discovery with more than one physical unit when possible.`})}),`\n`,_jsx(Heading,{level:`2`,id:`profile-checklist`,children:`Profile checklist`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The profile ID is stable and unique.`}),`\n`,_jsx(_components.li,{children:`The human-readable name tells a field user what the device is.`}),`\n`,_jsx(_components.li,{children:`At least one USB or BLE identity matcher reflects the real hardware.`}),`\n`,_jsx(_components.li,{children:`The transport and service metadata match the device protocol.`}),`\n`,_jsx(_components.li,{children:`Every operation used by a form or workflow belongs to the correct component.`}),`\n`,_jsx(_components.li,{children:`Settings have safe defaults and clear constraints.`}),`\n`,_jsx(_components.li,{children:`A failed or disconnected device has a user-visible recovery path.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`If a profile change affects an active field workflow, test discovery, connection, one read, one write where appropriate, and the complete workflow before releasing it.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"github-light","dark":"github-dark"}},"config":{},"pageMetadata":{"title":"Device profiles","description":"Use identity, capability, and behavior metadata to describe supported hardware.","href":"/device-kit/device-profiles"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What a profile describes","slug":"what-a-profile-describes","depth":2,"children":[]},{"title":"Identity matching","slug":"identity-matching","depth":2,"children":[{"title":"USB","slug":"usb","depth":3,"children":[]},{"title":"BLE","slug":"ble","depth":3,"children":[]}]},{"title":"Profile checklist","slug":"profile-checklist","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"farmtrace","siteName":"FarmTrace documentation","title":"Device profiles - FarmTrace documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-07T13:05:38.108Z","gitLastModified":"2026-09-07T13:00:55.000Z","originalFileLocation":"device-kit/device-profiles.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Use identity, capability, and behavior metadata to describe supported hardware.\">\u003cmeta data-mint-head name=\"application-name\" content=\"FarmTrace documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/farmtrace/Ko51b9WVXdxCGCIX/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/farmtrace/Ko51b9WVXdxCGCIX/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/farmtrace/Ko51b9WVXdxCGCIX/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/farmtrace/Ko51b9WVXdxCGCIX/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/farmtrace/Ko51b9WVXdxCGCIX/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/farmtrace/Ko51b9WVXdxCGCIX/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/farmtrace/Ko51b9WVXdxCGCIX/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/farmtrace/Ko51b9WVXdxCGCIX/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/farmtrace/Ko51b9WVXdxCGCIX/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Device profiles - FarmTrace documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Use identity, capability, and behavior metadata to describe supported hardware.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"FarmTrace documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.farmtrace.co.za/device-kit/device-profiles\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://farmtrace.mintlify.app/_mintlify/api/og/v2?division=Device+Kit+guides\u0026amp;title=Device+profiles\u0026amp;description=Use+identity%2C+capability%2C+and+behavior+metadata+to+describe+supported+hardware.\u0026amp;theme=09ecce6343d2410fee452256\u0026amp;signature=57197edda28f17a4f7403ace0622ae168da7faa5bcb87c10d18d0ed15435c239\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Device profiles - FarmTrace documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Use identity, capability, and behavior metadata to describe supported hardware.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://farmtrace.mintlify.app/_mintlify/api/og/v2?division=Device+Kit+guides\u0026amp;title=Device+profiles\u0026amp;description=Use+identity%2C+capability%2C+and+behavior+metadata+to+describe+supported+hardware.\u0026amp;theme=09ecce6343d2410fee452256\u0026amp;signature=57197edda28f17a4f7403ace0622ae168da7faa5bcb87c10d18d0ed15435c239\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/farmtrace/Ko51b9WVXdxCGCIX/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"FarmTrace documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1B6F45\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.farmtrace.co.za/device-kit/device-profiles\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/device-kit/device-profiles.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.farmtrace.co.za/#organization\",\"name\":\"FarmTrace documentation\",\"url\":\"https://docs.farmtrace.co.za\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/farmtrace/dU8dLDBOMj0npTRB/logo/light.svg?fit=max\u0026auto=format\u0026n=dU8dLDBOMj0npTRB\u0026q=85\u0026s=a32d62b068cf7f7610b6dbdfe9819f6a\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.farmtrace.co.za#website\",\"name\":\"FarmTrace documentation\",\"url\":\"https://docs.farmtrace.co.za\",\"publisher\":{\"@id\":\"https://docs.farmtrace.co.za/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.farmtrace.co.za/device-kit/device-profiles#webpage\",\"url\":\"https://docs.farmtrace.co.za/device-kit/device-profiles\",\"name\":\"Device profiles\",\"description\":\"Use identity, capability, and behavior metadata to describe supported hardware.\",\"dateModified\":\"2026-09-07T13:00:55.000Z\",\"isPartOf\":{\"@id\":\"https://docs.farmtrace.co.za#website\"},\"breadcrumb\":{\"@id\":\"https://docs.farmtrace.co.za/device-kit/device-profiles#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.farmtrace.co.za/device-kit/device-profiles#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Device Kit guides\",\"item\":\"https://docs.farmtrace.co.za/device-kit/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Device profiles\",\"item\":\"https://docs.farmtrace.co.za/device-kit/device-profiles\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.farmtrace.co.za/device-kit/device-profiles#article\",\"headline\":\"Device profiles\",\"name\":\"Device profiles\",\"description\":\"Use identity, capability, and behavior metadata to describe supported hardware.\",\"url\":\"https://docs.farmtrace.co.za/device-kit/device-profiles\",\"mainEntityOfPage\":{\"@id\":\"https://docs.farmtrace.co.za/device-kit/device-profiles#webpage\"},\"dateModified\":\"2026-09-07T13:00:55.000Z\",\"publisher\":{\"@id\":\"https://docs.farmtrace.co.za/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.farmtrace.co.za#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"FarmTrace documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"FarmTrace documentation","nav":{"global":null,"tabs":[{"tab":"Start here","icon":"compass","pages":[{"title":"Start here","href":""}]},{"tab":"Dsync","icon":"sprout","pages":[{"title":"Dsync","href":"/dsync"}]},{"tab":"Device Kit","icon":"microchip","groups":[{"group":"Device Kit guides","pages":[{"title":"Device Kit","description":"Connect supported BLE and USB hardware to repeatable field workflows.","href":"/device-kit"},{"title":"Device profiles","href":"/device-kit/device-profiles"},{"title":"Transports and operations","description":"Map BLE and USB protocol details to the named operations used by Dsync.","href":"/device-kit/transports-and-operations"},{"title":"Settings and workflows","href":"/device-kit/settings-and-workflows"},{"title":"Device Kit troubleshooting","href":"/device-kit/troubleshooting"}]}]}]},"basePath":"","title":"Device profiles - FarmTrace documentation","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":[],"chunks":[]}