Assign the appropriate player identifier to group.bodycamadmin using your serverβs normal ACE setup. See Permissions before granting production access.
The shipped permission eligibility mode accepts a wearer with bodycam.use through ACE or a configured on-duty framework job. Inventory and EUP checks are disabled by default. Review Wearer Setup before enabling either adapter.
Stop the server and back up eventsCore/config/, eventsCore/data/, eventsBodycam/config/, and any customized eventsBodycam/integrations/ files.
Download the latest granted packages.
Replace the complete resource folders.
Merge your customer settings into the new configuration structure instead of copying protected files from an older version.
Start Events Core before Bodycam and repeat the first test.
Do not run another bodycam recording resource for the same wearer while Events Bodycam is active. Backups may contain player, location, and incident information; store them securely and redact private information before sending anything to support.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Sonoran Software Documentation","colors":{"primary":"#1D7DCF","light":"#3297ED","dark":"#1465AA"},"logo":{"light":"https://docs-assets.sonoransoftware.com/sha256/a8/a8af14e6458cb682c1c8d33ca8b56d25dcd5999b2589e0de14b2be9f8dbe20a5.png","dark":"https://docs-assets.sonoransoftware.com/sha256/0b/0be9cc0ac8f90ee8aa8607653b830270c319a8ebe0c9051d1d2c7a79fb5453ab.png","href":"/"},"favicon":"https://docs-assets.sonoransoftware.com/sha256/1d/1d3aaa7393e84144f39bad7742c218a4f1db8e0ceb6f330d69f2e9bc92629df4.png","navbar":{"links":[{"href":"https://support.sonoransoftware.com","label":"Support"},{"href":"https://sonoransoftware.com","label":"Website"}]},"footer":{"socials":{"discord":"https://discord.sonoransoftware.com/","x":"https://x.com/Sonoran_SW","instagram":"https://www.instagram.com/sonoransoftware","youtube":"https://www.youtube.com/channel/UC-IfsakmGGmPrG8qcV3VVsA"},"links":[{"header":"Support","items":[{"label":"Customer Support","href":"https://support.sonoransoftware.com/"}]},{"header":"Policies","items":[{"label":"Refund and Purchase Policy","href":"/policy/policy/refund-and-purchase-policy"},{"label":"Terms of Service","href":"/policy/policy/terms-of-service"},{"label":"Privacy Policy","href":"/policy/policy/privacy-policy"}]}]},"seo":{"metatags":{"canonical":"https://docs.sonoransoftware.com"},"indexing":"all"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"sonoran-software-systems","hasAudioNarration":false,"actualSubdomain":"sonoran-software-systems","customDomains":["docs.sonoransoftware.com"],"gitSource":{"type":"github","owner":"sonoran-software","repo":"sonoran-documentation","deployBranch":"master","contentDirectory":"mintlify","isPrivate":false,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6aefca88ff56dc66d2b81dbb","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"CAD","count":256},{"language":"default","tag":"Integration Capabilities","count":247},{"language":"default","tag":"π API Integration","count":193},{"language":"default","tag":"CMS","count":166},{"language":"default","tag":"Tutorials","count":136},{"language":"default","tag":"General","count":124},{"language":"default","tag":"Radio","count":104},{"language":"default","tag":"v2 API Endpoints","count":96},{"language":"default","tag":"Store","count":78},{"language":"default","tag":"Developer API Documentation","count":65}]},"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":"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":"editor-metadata","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},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#content-area img{max-width:100%;height:auto}iframe{border:0}footer a{white-space:normal;text-overflow:clip}#assistant-entry,#assistant-entry-mobile,#chat-assistant-sheet,#ask-assistant-code-block-button{display:none!important}"}],"page":{"pagePath":"store/bodycam/installation","slug":"/store/bodycam/installation","pageMetadata":{"title":"Installation","description":"Install the free Events Core dependency and paid Bodycam DLC in the correct order.","keywords":["fivem","bodycam","installation","events core"],"href":"/store/bodycam/installation"},"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: \"Install the free Events Core dependency and paid Bodycam DLC in the correct order.\"\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={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Bodycam uses two separate resources:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://sonoran.store/packages/7606652-events-core`,children:`Events Core`}),` is the free required package containing the shared recording, replay, storage, and event logic.`]}),`\n`,_jsx(_components.li,{children:`Events Bodycam is the paid DLC containing wearer eligibility, recording controls, the evidence terminal, and the body-worn replay perspective.`}),`\n`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Both packages are required. Events Core works behind the scenes and does not add a standalone gameplay interface.`})}),`\n`,_jsx(Heading,{level:`2`,id:`before-you-begin`,children:`Before you begin`}),`\n`,_jsx(_components.p,{children:`You need:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`A current FXServer with OneSync enabled`}),`\n`,_jsx(_components.li,{children:`Access to the Cfx.re account that owns the granted assets`}),`\n`,_jsx(_components.li,{children:`Access to the serverβs resource directory and server.cfg`}),`\n`,_jsx(_components.li,{children:`Permission to add ACE rules or configure supported framework jobs`}),`\n`,_jsx(_components.li,{children:`A test server or maintenance window for the first installation`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Both resources are protected by FiveM Asset Escrow. Edit only the included customer configuration and integration files.`}),`\n`,_jsx(Heading,{level:`2`,id:`download-the-resources`,children:`Download the resources`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Obtain the free Events Core package from the Sonoran Store.`}),`\n`,_jsx(_components.li,{children:`Obtain the paid Bodycam package from the Sonoran Store.`}),`\n`,_jsxs(_components.li,{children:[`Sign in to the `,_jsx(_components.a,{href:`https://portal.cfx.re/`,children:`Cfx.re Portal`}),` using the account associated with the purchase.`]}),`\n`,_jsx(_components.li,{children:`Download and extract both granted assets.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`verify-the-folders`,children:`Verify the folders`}),`\n`,_jsx(_components.p,{children:`Keep the exact resource names. Each fxmanifest.lua must be directly inside its resource folder:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`7`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`resources/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`βββ [sonoran]/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` βββ eventsCore/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` β βββ fxmanifest.lua`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` βββ eventsBodycam/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` βββ fxmanifest.lua`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Do not add an extra nested folder such as eventsBodycam/eventsBodycam/fxmanifest.lua, and do not rename either resource.`}),`\n`,_jsx(Heading,{level:`2`,id:`configure-the-start-order`,children:`Configure the start order`}),`\n`,_jsx(_components.p,{children:`Add the following to server.cfg:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`set onesync on`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ensure eventsCore`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ensure eventsBodycam`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Events Core must start first. Bodycam blocks startup if Core is missing, incompatible, or unavailable.`}),`\n`,_jsx(Heading,{level:`2`,id:`grant-initial-permissions`,children:`Grant initial permissions`}),`\n`,_jsx(_components.p,{children:`For a first administrator test:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`10`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`add_ace group.bodycamadmin bodycam.use allow`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`add_ace group.bodycamadmin bodycam.record allow`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`add_ace group.bodycamadmin bodycam.review.all allow`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`add_ace group.bodycamadmin bodycam.annotate allow`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`add_ace group.bodycamadmin bodycam.classify allow`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`add_ace group.bodycamadmin bodycam.archive allow`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`add_ace group.bodycamadmin bodycam.lock allow`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`add_ace group.bodycamadmin bodycam.delete allow`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`add_ace group.bodycamadmin bodycam.admin allow`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`Assign the appropriate player identifier to group.bodycamadmin using your serverβs normal ACE setup. See `,_jsx(_components.a,{href:`/store/bodycam/permissions`,children:`Permissions`}),` before granting production access.`]}),`\n`,_jsx(Heading,{level:`2`,id:`configure-an-eligible-wearer`,children:`Configure an eligible wearer`}),`\n`,_jsxs(_components.p,{children:[`The shipped `,_jsx(_components.code,{children:`permission`}),` eligibility mode accepts a wearer with bodycam.use through ACE or a configured on-duty framework job. Inventory and EUP checks are disabled by default. Review `,_jsx(_components.a,{href:`/store/bodycam/wearer-setup`,children:`Wearer Setup`}),` before enabling either adapter.`]}),`\n`,_jsx(Heading,{level:`2`,id:`first-test`,children:`First test`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Fully restart the server and confirm eventsCore starts before eventsBodycam.`}),`\n`,_jsx(_components.li,{children:`Join with the authorized test account.`}),`\n`,_jsx(_components.li,{children:`Press F6 or run /bodycam to open the evidence terminal.`}),`\n`,_jsx(_components.li,{children:`Press F11 to start a manual recording.`}),`\n`,_jsx(_components.li,{children:`Run /bodycammark Initial test to add an evidence marker.`}),`\n`,_jsx(_components.li,{children:`Press F11 again to finalize the recording.`}),`\n`,_jsx(_components.li,{children:`Reopen the terminal, select the record, and open structured replay.`}),`\n`,_jsx(_components.li,{children:`Repeat with an unauthorized account and confirm recording is denied.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`updating`,children:`Updating`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Stop the server and back up eventsCore/config/, eventsCore/data/, eventsBodycam/config/, and any customized eventsBodycam/integrations/ files.`}),`\n`,_jsx(_components.li,{children:`Download the latest granted packages.`}),`\n`,_jsx(_components.li,{children:`Replace the complete resource folders.`}),`\n`,_jsx(_components.li,{children:`Merge your customer settings into the new configuration structure instead of copying protected files from an older version.`}),`\n`,_jsx(_components.li,{children:`Start Events Core before Bodycam and repeat the first test.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Do not run another bodycam recording resource for the same wearer while Events Bodycam is active. Backups may contain player, location, and incident information; store them securely and redact private information before sending anything to support.`})]})}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":{"config":{},"pageMetadata":{"title":"Installation","description":"Install the free Events Core dependency and paid Bodycam DLC in the correct order.","keywords":["fivem","bodycam","installation","events core"],"href":"/store/bodycam/installation"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Before you begin","slug":"before-you-begin","depth":2,"children":[]},{"title":"Download the resources","slug":"download-the-resources","depth":2,"children":[]},{"title":"Verify the folders","slug":"verify-the-folders","depth":2,"children":[]},{"title":"Configure the start order","slug":"configure-the-start-order","depth":2,"children":[]},{"title":"Grant initial permissions","slug":"grant-initial-permissions","depth":2,"children":[]},{"title":"Configure an eligible wearer","slug":"configure-an-eligible-wearer","depth":2,"children":[]},{"title":"First test","slug":"first-test","depth":2,"children":[]},{"title":"Updating","slug":"updating","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"sonoran-software-systems","siteName":"Sonoran Software Documentation","title":"Installation - Sonoran Software Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-20T00:46:55.626Z","originalFileLocation":"store/bodycam/installation.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=\"Install the free Events Core dependency and paid Bodycam DLC in the correct order.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Sonoran Software Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://docs-assets.sonoransoftware.com/sha256/1d/1d3aaa7393e84144f39bad7742c218a4f1db8e0ceb6f330d69f2e9bc92629df4.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://docs-assets.sonoransoftware.com/sha256/1d/1d3aaa7393e84144f39bad7742c218a4f1db8e0ceb6f330d69f2e9bc92629df4.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://docs-assets.sonoransoftware.com/sha256/1d/1d3aaa7393e84144f39bad7742c218a4f1db8e0ceb6f330d69f2e9bc92629df4.png\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/png\" href=\"https://docs-assets.sonoransoftware.com/sha256/1d/1d3aaa7393e84144f39bad7742c218a4f1db8e0ceb6f330d69f2e9bc92629df4.png\">\u003cmeta data-mint-head property=\"og:title\" content=\"Installation - Sonoran Software Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Install the free Events Core dependency and paid Bodycam DLC in the correct order.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Sonoran Software Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.sonoransoftware.com/store/bodycam/installation\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://sonoran-software-systems.mintlify.site/_mintlify/api/og/v2?division=%F0%9F%8E%A5+Bodycam\u0026amp;title=Installation\u0026amp;description=Install+the+free+Events+Core+dependency+and+paid+Bodycam+DLC+in+the+correct+order.\u0026amp;theme=1726bed78342e75c7aa90f1e\u0026amp;signature=6e6b098d49ceddb333344e657fbb8d7c1645ee6197be4965908f4ed721927dbb\">\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=\"Installation - Sonoran Software Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Install the free Events Core dependency and paid Bodycam DLC in the correct order.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://sonoran-software-systems.mintlify.site/_mintlify/api/og/v2?division=%F0%9F%8E%A5+Bodycam\u0026amp;title=Installation\u0026amp;description=Install+the+free+Events+Core+dependency+and+paid+Bodycam+DLC+in+the+correct+order.\u0026amp;theme=1726bed78342e75c7aa90f1e\u0026amp;signature=6e6b098d49ceddb333344e657fbb8d7c1645ee6197be4965908f4ed721927dbb\">\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=\"https://mintlify.s3.us-west-1.amazonaws.com/sonoran-software-systems/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Sonoran Software Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1D7DCF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.sonoransoftware.com/store/bodycam/installation\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/store/bodycam/installation.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.sonoransoftware.com/#organization\",\"name\":\"Sonoran Software Documentation\",\"url\":\"https://docs.sonoransoftware.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://docs-assets.sonoransoftware.com/sha256/a8/a8af14e6458cb682c1c8d33ca8b56d25dcd5999b2589e0de14b2be9f8dbe20a5.png\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.sonoransoftware.com#website\",\"name\":\"Sonoran Software Documentation\",\"url\":\"https://docs.sonoransoftware.com\",\"publisher\":{\"@id\":\"https://docs.sonoransoftware.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.sonoransoftware.com/store/bodycam/installation#webpage\",\"url\":\"https://docs.sonoransoftware.com/store/bodycam/installation\",\"name\":\"Installation\",\"description\":\"Install the free Events Core dependency and paid Bodycam DLC in the correct order.\",\"dateModified\":\"2026-10-20T00:46:55.626Z\",\"isPartOf\":{\"@id\":\"https://docs.sonoransoftware.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.sonoransoftware.com/store/bodycam/installation#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.sonoransoftware.com/store/bodycam/installation#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"General\",\"item\":\"https://docs.sonoransoftware.com/store/general/information\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"π₯ Bodycam\",\"item\":\"https://docs.sonoransoftware.com/store/bodycam\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Installation\",\"item\":\"https://docs.sonoransoftware.com/store/bodycam/installation\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.sonoransoftware.com/store/bodycam/installation#article\",\"headline\":\"Installation\",\"name\":\"Installation\",\"description\":\"Install the free Events Core dependency and paid Bodycam DLC in the correct order.\",\"url\":\"https://docs.sonoransoftware.com/store/bodycam/installation\",\"mainEntityOfPage\":{\"@id\":\"https://docs.sonoransoftware.com/store/bodycam/installation#webpage\"},\"dateModified\":\"2026-10-20T00:46:55.626Z\",\"keywords\":\"fivem, bodycam, installation, events core\",\"publisher\":{\"@id\":\"https://docs.sonoransoftware.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.sonoransoftware.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Sonoran Software Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Sonoran Software Documentation","nav":{"global":null,"products":[{"product":"Overview","icon":"house","pages":[{"title":"Overview","href":""}]},{"product":"CAD","icon":"car-side","pages":[{"title":"CAD","href":"/cad"}]},{"product":"CMS","icon":"building","pages":[{"title":"CMS","href":"/cms"}]},{"product":"Radio","icon":"walkie-talkie","pages":[{"title":"Radio","href":"/radio"}]},{"product":"Bot","icon":"robot","pages":[{"title":"Bot","href":"/bot"}]},{"product":"Store","icon":"bag-shopping","groups":[{"group":"Start here","pages":[{"title":"π Home","href":"/store"}]},{"group":"General","pages":[{"title":"Information","href":"/store/general/information"},{"title":"Accessing Tebex Assets","href":"/store/general/tebex-assets"},{"title":"Gun Placement System Guide","href":"/store/general/gun-placement"},{"title":"Five Bundle","href":"/store/five-bundle"},{"group":"π§ ATM Robbery","root":{"title":"ATM Robbery","href":"/store/atm-robbery"},"pages":[{"title":"Getting Started","href":"/store/atm-robbery/getting-started"},{"title":"Advanced Documentation","href":"/store/atm-robbery/advanced-docs"}]},{"group":"π§£ Bandanas","root":{"title":"Bandanas","href":"/store/bandanas"},"pages":[{"title":"Installation","href":"/store/bandanas/installation"}]},{"group":"π¦Ί Safety Vests","root":{"title":"Safety Vests","href":"/store/safety-vests"},"pages":[{"title":"Installation","href":"/store/safety-vests/installation"}]},{"group":"π Short Slip Dress","root":{"title":"Short Slip Dress","href":"/store/short-slip-dress"},"pages":[{"title":"Installation","href":"/store/short-slip-dress/installation"}]},{"group":"π§£ Scarf","root":{"title":"Scarf","href":"/store/scarf"},"pages":[{"title":"Installation","href":"/store/scarf/installation"}]},{"group":"πΉ CCTV","root":{"title":"CCTV","href":"/store/cctv"},"pages":[{"title":"Installation","href":"/store/cctv/installation"},{"title":"Configuration","href":"/store/cctv/configuration"},{"title":"Camera Setup","href":"/store/cctv/camera-setup"},{"title":"Live View and Historic Playback","href":"/store/cctv/playback"},{"title":"Permissions","href":"/store/cctv/permissions"},{"title":"Developer API","href":"/store/cctv/developer-api"},{"title":"Troubleshooting","href":"/store/cctv/troubleshooting"}]},{"group":"π Dashcam","root":{"title":"Dashcam","href":"/store/dashcam"},"pages":[{"title":"Installation","href":"/store/dashcam/installation"},{"title":"Configuration","href":"/store/dashcam/configuration"},{"title":"Vehicle Setup","href":"/store/dashcam/vehicle-setup"},{"title":"Recording","href":"/store/dashcam/recording"},{"title":"Playback and Evidence","href":"/store/dashcam/playback"},{"title":"Permissions","href":"/store/dashcam/permissions"},{"title":"Developer API","href":"/store/dashcam/developer-api"},{"title":"Troubleshooting","href":"/store/dashcam/troubleshooting"}]},{"group":"π₯ Bodycam","root":{"title":"Bodycam","description":"Preserve incidents from an officer's body-worn perspective and manage the resulting evidence.","href":"/store/bodycam"},"pages":[{"title":"Installation","href":"/store/bodycam/installation"},{"title":"Configuration","description":"Configure Bodycam branding, capture settings, triggers, wearer eligibility, retention, permissions, and integrations.","href":"/store/bodycam/configuration"},{"title":"Wearer Setup","href":"/store/bodycam/wearer-setup"},{"title":"Recording","href":"/store/bodycam/recording"},{"title":"Playback and Evidence","href":"/store/bodycam/playback"},{"title":"Permissions","href":"/store/bodycam/permissions"},{"title":"Developer API","href":"/store/bodycam/developer-api"},{"title":"Troubleshooting","href":"/store/bodycam/troubleshooting"}]},{"group":"πΈ Evidence Camera","root":{"title":"Evidence Camera","href":"/store/evidence-camera"},"pages":[{"title":"Getting Started","href":"/store/evidence-camera/getting-started"},{"title":"Advanced Documentation","href":"/store/evidence-camera/advanced-docs"}]},{"group":"π Mobile Command Center","root":{"title":"Mobile Command Center","href":"/store/mcc"},"pages":[{"title":"Getting Started","href":"/store/mcc/getting-started"},{"title":"Advanced Documentation","href":"/store/mcc/advanced-docs"}]},{"group":"ποΈ Sonoran Notepad","root":{"title":"Sonoran Notepad","href":"/store/sonoran-notepad"},"pages":[{"title":"Installation","href":"/store/sonoran-notepad/installation"},{"title":"Using and Syncing Notes","href":"/store/sonoran-notepad/usage-and-sync"},{"title":"Troubleshooting","href":"/store/sonoran-notepad/troubleshooting"}]},{"group":"β‘ Power Grid","root":{"title":"Power Grid","href":"/store/power-grid"},"pages":[{"title":"Getting Started","href":"/store/power-grid/getting-started"},{"title":"Advanced Documentation","href":"/store/power-grid/advanced-documentation"}]},{"group":"πΆ Radar Detector / Jammer","root":{"title":"Radar Detector / Jammer","href":"/store/radar-detector"},"pages":[{"title":"Getting Started","href":"/store/radar-detector/getting-started"}]},{"group":"π Radar Display","root":{"title":"Radar Display","href":"/store/radar-display"},"pages":[{"title":"Getting Started","href":"/store/radar-display/getting-started"}]},{"group":"π₯οΈ Sonoran Station Displays","root":{"title":"Sonoran Station Displays","href":"/store/sonoran-station-displays"},"pages":[{"title":"Installation","href":"/store/sonoran-station-displays/installation"},{"title":"Updating","href":"/store/sonoran-station-displays/updating"},{"title":"Configuration","href":"/store/sonoran-station-displays/configuration"},{"title":"Permissions","href":"/store/sonoran-station-displays/permissions"},{"title":"Display Management","href":"/store/sonoran-station-displays/display-management"},{"title":"Display Pages and Rotation","href":"/store/sonoran-station-displays/display-pages"},{"title":"Active Units","href":"/store/sonoran-station-displays/active-units"},{"title":"Calls","href":"/store/sonoran-station-displays/calls"},{"title":"Localized Live Map","href":"/store/sonoran-station-displays/live-map"},{"title":"Bodycams","href":"/store/sonoran-station-displays/bodycams"},{"title":"In-game Clock and Weather","href":"/store/sonoran-station-displays/in-game-clock"},{"title":"SonoranCADFiveM Integration","href":"/store/sonoran-station-displays/sonorancad-integration"},{"title":"Administrative Webhooks","href":"/store/sonoran-station-displays/administrative-webhooks"},{"title":"Persistence","href":"/store/sonoran-station-displays/persistence"},{"title":"Performance","href":"/store/sonoran-station-displays/performance"},{"title":"Diagnostics","href":"/store/sonoran-station-displays/diagnostics"},{"title":"Troubleshooting","href":"/store/sonoran-station-displays/troubleshooting"},{"title":"Developer API","href":"/store/sonoran-station-displays/developer-api"},{"title":"DUI Message Protocol","href":"/store/sonoran-station-displays/dui-message-protocol"},{"title":"Changelog","href":"/store/sonoran-station-displays/changelog"}]},{"group":"π£οΈ Sonoran Street Signs","root":{"title":"Sonoran Street Signs","href":"/store/street-signs"},"pages":[{"title":"Installation","href":"/store/street-signs/getting-started"},{"title":"Configuration","href":"/store/street-signs/configuration-reference"},{"title":"Permissions","href":"/store/street-signs/permissions"},{"title":"Using Signs","href":"/store/street-signs/commands-and-usage"},{"title":"Integrations and Webhooks","href":"/store/street-signs/integrations-and-webhooks"},{"title":"Troubleshooting","href":"/store/street-signs/faq-and-troubleshooting"}]},{"group":"π« Shot Spotter","root":{"title":"Shot Spotter","href":"/store/shot-spotter"},"pages":[{"title":"Getting Started","href":"/store/shot-spotter/getting-started"},{"title":"Shot Spotter - Advanced Documentation","href":"/store/shot-spotter/advanced-docs"}]},{"group":"πΉ Speed Cameras / ALPR","root":{"title":"Speed Cameras / ALPR","href":"/store/speed-camera"},"pages":[{"title":"Getting Started","href":"/store/speed-camera/getting-started"},{"title":"Advanced Documentation","href":"/store/speed-camera/advanced-docs"}]},{"group":"π Traffic Engine","root":{"title":"Traffic Engine","href":"/store/traffic-engine"},"pages":[{"title":"Getting Started","href":"/store/traffic-engine/getting-started"},{"title":"Advanced Documentation","href":"/store/traffic-engine/advanced-documentation"}]}]},{"group":"Other","pages":[{"title":"Terms and Policies","href":"/store/other/policy"}]}]},{"product":"Studio","icon":"clapperboard","pages":[{"title":"Studio","href":"/studio"}]}]},"basePath":"","title":"Installation - Sonoran Software Documentation","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":[],"chunks":[]}