{"id":1126,"date":"2023-03-27T12:20:58","date_gmt":"2023-03-27T10:20:58","guid":{"rendered":"http:\/\/www.embedded-communication.com\/?p=1126"},"modified":"2023-03-27T13:07:51","modified_gmt":"2023-03-27T11:07:51","slug":"uds-basic-firmware-download","status":"publish","type":"post","link":"https:\/\/www.embedded-communication.com\/en\/misc\/uds-basic-firmware-download\/","title":{"rendered":"UDS Basic Firmware Download"},"content":{"rendered":"<p>The UDS basic firmware download process is the defined sequence of UDS services to download a new firmware to an UDS bootloader. It is the default sequence support both by <a href=\"https:\/\/www.emotas.de\/en\/bootloader\/uds-bootloader\">emotas UDS bootloader<\/a> and <a href=\"https:\/\/www.emotas.de\/en\/produkte\/can-update-manager\">emotas CAN UpdateManager<\/a>. Additionally, it is supported by the UDS PlugIn for the CDE.<br \/>\n<!--more--><\/p>\n<p>The following explanation shows examples of the basic download sequence. All CAN-IDs can be configured both in the bootloader and in the tool. The pair 0x7e0 and 0x7e8 is just an example.<\/p>\n<h2>10h DiagnosticSessionControl<\/h2>\n<p>The sequence starts with a DiagnosticSessionControl request to enter the programming session.<br \/>\n<img decoding=\"async\" src=\"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_diagnosticsessioncontrol_ps.png\" alt=\"CAN Logging of UDS Diagnostic Session Control \" width=\"900\" class=\"alignnone size-full wp-image-1133\" srcset=\"https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_diagnosticsessioncontrol_ps.png 843w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_diagnosticsessioncontrol_ps-300x21.png 300w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_diagnosticsessioncontrol_ps-768x53.png 768w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<h2>27h SecurityAccess<\/h2>\n<p>Security Access is based on a Request Seed &#8211; Send Key sequence. If the correct key has been send, access to the requested security level will be granted and the bootloader will allow the execution of additional services.<br \/>\n<img decoding=\"async\" src=\"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_security_access.png\" alt=\"UDS CAN logging for security access\" width=\"900\"class=\"alignnone size-full wp-image-1136\" srcset=\"https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_security_access.png 1098w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_security_access-300x18.png 300w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_security_access-1024x62.png 1024w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_security_access-768x47.png 768w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><br \/>\n<br \/>\nFor development purposes it is sometimes useful just to use a simple key==seed algorithm. Of course, it has to be replaced by a more sophisticated algorithm later on both in the bootloader and also in the tool.<br \/>\nThe algorithm can also be integrated into a specific .dll\/.so which is used by the tool to calculate the key for a given seed automatically.<\/p>\n<h2>31h RoutineControl<\/h2>\n<p><img decoding=\"async\" src=\"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_routine_control_erase_memory.png\" alt=\"UDS CAN logging for RoutineControl: Erease Memory\" width=\"900\" class=\"alignnone size-full wp-image-1139\" srcset=\"https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_routine_control_erase_memory.png 1093w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_routine_control_erase_memory-300x15.png 300w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_routine_control_erase_memory-1024x52.png 1024w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_routine_control_erase_memory-768x39.png 768w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><br \/>\nRoutineControl can be used to execute various routines. In this sequence &#8220;Erase Memory&#8221; is used to erase the flash memory before writing a new firmware to it.<\/p>\n<h2>34h RequestDownload <\/h2>\n<p>The RequestDownload services allows to specify an address and an length of the firmware. Nevertheless, the UDS bootloader only supports a fixed address and rejects Download requests to other addresses.<br \/>\n<img decoding=\"async\" src=\"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_request_download.png\" alt=\"UDS Request Download\" width=\"900\"class=\"alignnone size-full wp-image-1138\" srcset=\"https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_request_download.png 1268w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_request_download-300x9.png 300w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_request_download-1024x29.png 1024w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_request_download-768x22.png 768w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_request_download-1200x34.png 1200w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<h2>36h TransferData<\/h2>\n<p>Multiple TransferData requests will be used to transfer the complete firmware.<br \/>\n<img decoding=\"async\" src=\"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_transfer_data.png\" alt=\"UDS CAN logging: Transfer Data\" width=\"900\" class=\"alignnone size-full wp-image-1140\" srcset=\"https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_transfer_data.png 904w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_transfer_data-300x90.png 300w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_transfer_data-768x231.png 768w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><br \/>\nThis example transfers blocks of 256 bytes of payload (+2 bytes for the UDS protocol itself: Service-ID and block counter).<\/p>\n<h2>37h RequestTransferExit<\/h2>\n<p>This service terminates the transfer of the firmware.<br \/>\n<img decoding=\"async\" src=\"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_request_transfer_exit.png\" alt=\"UDS Logging Request Transfer Exit\" width=\"900\" class=\"alignnone size-full wp-image-1145\" srcset=\"https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_request_transfer_exit.png 808w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_request_transfer_exit-300x13.png 300w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_request_transfer_exit-768x33.png 768w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/p>\n<h2>31h RoutineControl<\/h2>\n<p><img decoding=\"async\" src=\"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_routine_control_check_dependencies.png\" alt=\"UDS CAN Logging Routine Control\" width=\"900\" class=\"alignnone size-full wp-image-1144\" srcset=\"https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_routine_control_check_dependencies.png 1043w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_routine_control_check_dependencies-300x16.png 300w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_routine_control_check_dependencies-1024x55.png 1024w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_routine_control_check_dependencies-768x41.png 768w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><br \/>\nThis service checks if the download had been successfully.<\/p>\n<h2>11h ECUReset<\/h2>\n<p>Finally the reset command will be send to the bootloader and it resets and it will start the application, if everything went well.<br \/>\n<img decoding=\"async\" src=\"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_ecu_reset.png\" alt=\"UDS Logging Ecu Reset\" width=\"900\" class=\"alignnone size-full wp-image-1143\" srcset=\"https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_ecu_reset.png 804w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_ecu_reset-300x13.png 300w, https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_ecu_reset-768x34.png 768w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/p>\n<p>In general the bootloader can be adopted to support different download sequences. Additionally emotas can integrate additional download sequences into the CAN UpdateManager on request.<br \/>\n<\/p>","protected":false},"excerpt":{"rendered":"<p>The UDS basic firmware download process is the defined sequence of UDS services to download a new firmware to an UDS bootloader. It is the default sequence support both by emotas UDS bootloader and emotas CAN UpdateManager. Additionally, it is supported by the UDS PlugIn for the CDE.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36],"tags":[],"class_list":["post-1126","post","type-post","status-publish","format-standard","hentry","category-misc"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>UDS Basic Firmware Download - embedded communication<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"UDS Basic Firmware Download - embedded communication\" \/>\n<meta property=\"og:description\" content=\"The UDS basic firmware download process is the defined sequence of UDS services to download a new firmware to an UDS bootloader. It is the default sequence support both by emotas UDS bootloader and emotas CAN UpdateManager. Additionally, it is supported by the UDS PlugIn for the CDE.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/\" \/>\n<meta property=\"og:site_name\" content=\"embedded communication\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-27T10:20:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-27T11:07:51+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_diagnosticsessioncontrol_ps.png\" \/>\n<meta name=\"author\" content=\"Torsten Gedenk\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@EmbeddedComm\" \/>\n<meta name=\"twitter:site\" content=\"@EmbeddedComm\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Torsten Gedenk\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/\"},\"author\":{\"name\":\"Torsten Gedenk\",\"@id\":\"https:\/\/www.embedded-communication.com\/en\/#\/schema\/person\/8f0fcf033edee00b06d4dd4cf196680e\"},\"headline\":\"UDS Basic Firmware Download\",\"datePublished\":\"2023-03-27T10:20:58+00:00\",\"dateModified\":\"2023-03-27T11:07:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/\"},\"wordCount\":369,\"publisher\":{\"@id\":\"https:\/\/www.embedded-communication.com\/en\/#organization\"},\"image\":{\"@id\":\"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_diagnosticsessioncontrol_ps.png\",\"articleSection\":[\"Misc\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/\",\"url\":\"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/\",\"name\":\"UDS Basic Firmware Download - embedded communication\",\"isPartOf\":{\"@id\":\"https:\/\/www.embedded-communication.com\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/#primaryimage\"},\"image\":{\"@id\":\"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_diagnosticsessioncontrol_ps.png\",\"datePublished\":\"2023-03-27T10:20:58+00:00\",\"dateModified\":\"2023-03-27T11:07:51+00:00\",\"breadcrumb\":{\"@id\":\"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/#primaryimage\",\"url\":\"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_diagnosticsessioncontrol_ps.png\",\"contentUrl\":\"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_diagnosticsessioncontrol_ps.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/www.embedded-communication.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"(English) UDS Basic Firmware Download\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.embedded-communication.com\/en\/#website\",\"url\":\"https:\/\/www.embedded-communication.com\/en\/\",\"name\":\"embedded communication\",\"description\":\"A blog about embedded communcation protocols.\",\"publisher\":{\"@id\":\"https:\/\/www.embedded-communication.com\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.embedded-communication.com\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.embedded-communication.com\/en\/#organization\",\"name\":\"embedded communication\",\"url\":\"https:\/\/www.embedded-communication.com\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.embedded-communication.com\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2016\/08\/embedded-communication.png\",\"contentUrl\":\"https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2016\/08\/embedded-communication.png\",\"width\":240,\"height\":240,\"caption\":\"embedded communication\"},\"image\":{\"@id\":\"https:\/\/www.embedded-communication.com\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/EmbeddedComm\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.embedded-communication.com\/en\/#\/schema\/person\/8f0fcf033edee00b06d4dd4cf196680e\",\"name\":\"Torsten Gedenk\",\"url\":\"https:\/\/www.embedded-communication.com\/en\/author\/ged\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"UDS Basic Firmware Download - embedded communication","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/","og_locale":"en_US","og_type":"article","og_title":"UDS Basic Firmware Download - embedded communication","og_description":"The UDS basic firmware download process is the defined sequence of UDS services to download a new firmware to an UDS bootloader. It is the default sequence support both by emotas UDS bootloader and emotas CAN UpdateManager. Additionally, it is supported by the UDS PlugIn for the CDE.","og_url":"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/","og_site_name":"embedded communication","article_published_time":"2023-03-27T10:20:58+00:00","article_modified_time":"2023-03-27T11:07:51+00:00","og_image":[{"url":"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_diagnosticsessioncontrol_ps.png","type":"","width":"","height":""}],"author":"Torsten Gedenk","twitter_card":"summary_large_image","twitter_creator":"@EmbeddedComm","twitter_site":"@EmbeddedComm","twitter_misc":{"Written by":"Torsten Gedenk","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/#article","isPartOf":{"@id":"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/"},"author":{"name":"Torsten Gedenk","@id":"https:\/\/www.embedded-communication.com\/en\/#\/schema\/person\/8f0fcf033edee00b06d4dd4cf196680e"},"headline":"UDS Basic Firmware Download","datePublished":"2023-03-27T10:20:58+00:00","dateModified":"2023-03-27T11:07:51+00:00","mainEntityOfPage":{"@id":"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/"},"wordCount":369,"publisher":{"@id":"https:\/\/www.embedded-communication.com\/en\/#organization"},"image":{"@id":"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/#primaryimage"},"thumbnailUrl":"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_diagnosticsessioncontrol_ps.png","articleSection":["Misc"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/","url":"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/","name":"UDS Basic Firmware Download - embedded communication","isPartOf":{"@id":"https:\/\/www.embedded-communication.com\/en\/#website"},"primaryImageOfPage":{"@id":"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/#primaryimage"},"image":{"@id":"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/#primaryimage"},"thumbnailUrl":"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_diagnosticsessioncontrol_ps.png","datePublished":"2023-03-27T10:20:58+00:00","dateModified":"2023-03-27T11:07:51+00:00","breadcrumb":{"@id":"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/#primaryimage","url":"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_diagnosticsessioncontrol_ps.png","contentUrl":"http:\/\/www.embedded-communication.com\/wp-content\/uploads\/2023\/03\/uds_diagnosticsessioncontrol_ps.png"},{"@type":"BreadcrumbList","@id":"http:\/\/www.embedded-communication.com\/misc\/uds-basic-firmware-download\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/www.embedded-communication.com\/en\/"},{"@type":"ListItem","position":2,"name":"(English) UDS Basic Firmware Download"}]},{"@type":"WebSite","@id":"https:\/\/www.embedded-communication.com\/en\/#website","url":"https:\/\/www.embedded-communication.com\/en\/","name":"embedded communication","description":"A blog about embedded communcation protocols.","publisher":{"@id":"https:\/\/www.embedded-communication.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.embedded-communication.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.embedded-communication.com\/en\/#organization","name":"embedded communication","url":"https:\/\/www.embedded-communication.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.embedded-communication.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2016\/08\/embedded-communication.png","contentUrl":"https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2016\/08\/embedded-communication.png","width":240,"height":240,"caption":"embedded communication"},"image":{"@id":"https:\/\/www.embedded-communication.com\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/EmbeddedComm"]},{"@type":"Person","@id":"https:\/\/www.embedded-communication.com\/en\/#\/schema\/person\/8f0fcf033edee00b06d4dd4cf196680e","name":"Torsten Gedenk","url":"https:\/\/www.embedded-communication.com\/en\/author\/ged\/"}]}},"_links":{"self":[{"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/posts\/1126","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/comments?post=1126"}],"version-history":[{"count":14,"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/posts\/1126\/revisions"}],"predecessor-version":[{"id":1148,"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/posts\/1126\/revisions\/1148"}],"wp:attachment":[{"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/media?parent=1126"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/categories?post=1126"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/tags?post=1126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}