{"id":11267,"date":"2023-10-28T04:51:55","date_gmt":"2023-10-28T10:51:55","guid":{"rendered":"http:\/\/play.fallows.ca\/wp\/?p=11267"},"modified":"2023-10-26T16:17:42","modified_gmt":"2023-10-26T22:17:42","slug":"sdr-code-working-with-perseus-radio","status":"publish","type":"post","link":"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/","title":{"rendered":"SDR Code Working with Perseus Radio"},"content":{"rendered":"<p><a href=\"https:\/\/i0.wp.com\/play.fallows.ca\/wp\/wp-content\/uploads\/sites\/4\/2023\/10\/sdr1.jpg\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-11268 aligncenter\" src=\"https:\/\/i0.wp.com\/play.fallows.ca\/wp\/wp-content\/uploads\/sites\/4\/2023\/10\/sdr1.jpg?resize=300%2C196\" alt=\"SDR code working\" width=\"300\" height=\"196\" srcset=\"https:\/\/i0.wp.com\/play.fallows.ca\/wp\/wp-content\/uploads\/sites\/4\/2023\/10\/sdr1.jpg?resize=300%2C196&amp;ssl=1 300w, https:\/\/i0.wp.com\/play.fallows.ca\/wp\/wp-content\/uploads\/sites\/4\/2023\/10\/sdr1.jpg?w=355&amp;ssl=1 355w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>This week, I got my homebrew SDR code working on a simple testbed. Nothing fancy, but I can receive and demodulate signals. <!--more--><\/p>\n<p>It&#8217;s always a thrill to design, code and run software that works the way you want. Above, you can see a simple testbed that tunes my Perseus to WWV and turns the data into audio I can listen to.<\/p>\n<p>You can take a few minutes to <a class=\"vp-a\" href=\"https:\/\/youtu.be\/EtNYPxvOI-w\">watch this video demonstration.<\/a><\/p>\n<p>As you can see, I am developing this software in several parts. First is a radio driver that connect to the hardware and obtains my data. In this case, I am driving the Perseus, but shortly I will add my dual channel receivers. Second, is an input data queue or processor that passes the data to the third stage, an complete software defined receiver.<\/p>\n<p>My input data processor will also be responsible for saving and reading multiple channels to\/from storage. I will also use this section to combine channels for <a href=\"http:\/\/play.fallows.ca\/wp\/radio\/shortwave-radio\/modern-diversity-reception-at-baycon-2022\/\" target=\"_blank\" rel=\"noopener\">modern diversity reception<\/a>.<\/p>\n<p>The really good news is that I got the SDR code working to filter, level and demodulate signals received from any receiver. So, now I just need to focus on the front end drivers and data manipulation.<\/p>\n<h2>SDR Code Working &#8211; My Helpers<\/h2>\n<p>All of the heavy lifting is being performed by <a href=\"https:\/\/www.intel.com\/content\/www\/us\/en\/developer\/tools\/oneapi\/ipp.html#gs.6wd63f\" target=\"_blank\" rel=\"noopener nofollow\">Intel Integrated Performance Primitives signal processing<\/a>. This free library is amazing and fairly easy to load and use. <a href=\"https:\/\/portaudio.com\/docs\/v19-doxydocs\/api_overview.html\" target=\"_blank\" rel=\"noopener nofollow\">PortAudio<\/a> comes in handy, as well. All the rest in pure <a href=\"https:\/\/www.embarcadero.com\/products\/delphi\/starter?gad=1&amp;gclid=CjwKCAjwnOipBhBQEiwACyGLuiOxu4g-qamqOcwsKCJ-oxFEnSPJ-zxF9J3g8MtOlxqO3yBSKBw4uRoCMAkQAvD_BwE\" target=\"_blank\" rel=\"noopener nofollow\">Delphi Community Edition<\/a>.<\/p>\n<p>As an added twist, I am developing the application in both 32 and 64 bit Windows concurrently.<\/p>\n<p>My next step is to develop a driver for RSPduo with its USB connectivity. Then, I will move on to Afedri over Ethernet. Along the way, I need to write code to save multiple channels of IQ data to file. Not sure how to do that, yet!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week, I got my homebrew SDR code working on a simple testbed. Nothing fancy, but I can receive and demodulate signals.<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_share_on_mastodon":"0"},"categories":[7,115],"tags":[38],"series":[],"class_list":["post-11267","post","type-post","status-publish","format-standard","hentry","category-software-defined-radio","category-software-projects","tag-sdr"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SDR Code Working with Perseus Radio - Making It Up<\/title>\n<meta name=\"description\" content=\"This week, I got my homebrew SDR code working on a simple testbed. Nothing fancy, but I can receive and demodulate signals.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SDR Code Working with Perseus Radio - Making It Up\" \/>\n<meta property=\"og:description\" content=\"This week, I got my homebrew SDR code working on a simple testbed. Nothing fancy, but I can receive and demodulate signals.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/\" \/>\n<meta property=\"og:site_name\" content=\"Making It Up\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/john.fallows.5\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-28T10:51:55+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/play.fallows.ca\/wp\/wp-content\/uploads\/sites\/4\/2023\/10\/sdr1-300x196.jpg\" \/>\n<meta name=\"author\" content=\"John VE6EY\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@VE6EY\" \/>\n<meta name=\"twitter:site\" content=\"@VE6EY\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"John VE6EY\" \/>\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\":\"WebPage\",\"@id\":\"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/\",\"url\":\"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/\",\"name\":\"SDR Code Working with Perseus Radio - Making It Up\",\"isPartOf\":{\"@id\":\"https:\/\/play.fallows.ca\/wp\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/play.fallows.ca\/wp\/wp-content\/uploads\/sites\/4\/2023\/10\/sdr1-300x196.jpg\",\"datePublished\":\"2023-10-28T10:51:55+00:00\",\"author\":{\"@id\":\"https:\/\/play.fallows.ca\/wp\/#\/schema\/person\/9750e0ab227030255d9806757525f945\"},\"description\":\"This week, I got my homebrew SDR code working on a simple testbed. Nothing fancy, but I can receive and demodulate signals.\",\"breadcrumb\":{\"@id\":\"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/play.fallows.ca\/wp\/wp-content\/uploads\/sites\/4\/2023\/10\/sdr1.jpg?fit=355%2C232&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/play.fallows.ca\/wp\/wp-content\/uploads\/sites\/4\/2023\/10\/sdr1.jpg?fit=355%2C232&ssl=1\",\"width\":355,\"height\":232,\"caption\":\"SDR code working\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/play.fallows.ca\/wp\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Projects\",\"item\":\"https:\/\/play.fallows.ca\/wp\/category\/projects\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Software Projects\",\"item\":\"https:\/\/play.fallows.ca\/wp\/category\/projects\/software-projects\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"SDR Code Working with Perseus Radio\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/play.fallows.ca\/wp\/#website\",\"url\":\"https:\/\/play.fallows.ca\/wp\/\",\"name\":\"Making It Up\",\"description\":\"Enjoying Radio and Maker Hobbies\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/play.fallows.ca\/wp\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/play.fallows.ca\/wp\/#\/schema\/person\/9750e0ab227030255d9806757525f945\",\"name\":\"John VE6EY\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/play.fallows.ca\/wp\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e4048edfe09efff51033c48b4fb951e8ac0a4dc84a25c96b25e5ae9f5b7069a5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e4048edfe09efff51033c48b4fb951e8ac0a4dc84a25c96b25e5ae9f5b7069a5?s=96&d=mm&r=g\",\"caption\":\"John VE6EY\"},\"sameAs\":[\"https:\/\/x.com\/VE6EY\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SDR Code Working with Perseus Radio - Making It Up","description":"This week, I got my homebrew SDR code working on a simple testbed. Nothing fancy, but I can receive and demodulate signals.","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":"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/","og_locale":"en_US","og_type":"article","og_title":"SDR Code Working with Perseus Radio - Making It Up","og_description":"This week, I got my homebrew SDR code working on a simple testbed. Nothing fancy, but I can receive and demodulate signals.","og_url":"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/","og_site_name":"Making It Up","article_publisher":"https:\/\/www.facebook.com\/john.fallows.5","article_published_time":"2023-10-28T10:51:55+00:00","og_image":[{"url":"http:\/\/play.fallows.ca\/wp\/wp-content\/uploads\/sites\/4\/2023\/10\/sdr1-300x196.jpg","type":"","width":"","height":""}],"author":"John VE6EY","twitter_card":"summary_large_image","twitter_creator":"@VE6EY","twitter_site":"@VE6EY","twitter_misc":{"Written by":"John VE6EY","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/","url":"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/","name":"SDR Code Working with Perseus Radio - Making It Up","isPartOf":{"@id":"https:\/\/play.fallows.ca\/wp\/#website"},"primaryImageOfPage":{"@id":"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/#primaryimage"},"image":{"@id":"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/#primaryimage"},"thumbnailUrl":"http:\/\/play.fallows.ca\/wp\/wp-content\/uploads\/sites\/4\/2023\/10\/sdr1-300x196.jpg","datePublished":"2023-10-28T10:51:55+00:00","author":{"@id":"https:\/\/play.fallows.ca\/wp\/#\/schema\/person\/9750e0ab227030255d9806757525f945"},"description":"This week, I got my homebrew SDR code working on a simple testbed. Nothing fancy, but I can receive and demodulate signals.","breadcrumb":{"@id":"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/#primaryimage","url":"https:\/\/i0.wp.com\/play.fallows.ca\/wp\/wp-content\/uploads\/sites\/4\/2023\/10\/sdr1.jpg?fit=355%2C232&ssl=1","contentUrl":"https:\/\/i0.wp.com\/play.fallows.ca\/wp\/wp-content\/uploads\/sites\/4\/2023\/10\/sdr1.jpg?fit=355%2C232&ssl=1","width":355,"height":232,"caption":"SDR code working"},{"@type":"BreadcrumbList","@id":"https:\/\/play.fallows.ca\/wp\/projects\/software-projects\/sdr-code-working-with-perseus-radio\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/play.fallows.ca\/wp\/"},{"@type":"ListItem","position":2,"name":"Projects","item":"https:\/\/play.fallows.ca\/wp\/category\/projects\/"},{"@type":"ListItem","position":3,"name":"Software Projects","item":"https:\/\/play.fallows.ca\/wp\/category\/projects\/software-projects\/"},{"@type":"ListItem","position":4,"name":"SDR Code Working with Perseus Radio"}]},{"@type":"WebSite","@id":"https:\/\/play.fallows.ca\/wp\/#website","url":"https:\/\/play.fallows.ca\/wp\/","name":"Making It Up","description":"Enjoying Radio and Maker Hobbies","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/play.fallows.ca\/wp\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/play.fallows.ca\/wp\/#\/schema\/person\/9750e0ab227030255d9806757525f945","name":"John VE6EY","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/play.fallows.ca\/wp\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e4048edfe09efff51033c48b4fb951e8ac0a4dc84a25c96b25e5ae9f5b7069a5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e4048edfe09efff51033c48b4fb951e8ac0a4dc84a25c96b25e5ae9f5b7069a5?s=96&d=mm&r=g","caption":"John VE6EY"},"sameAs":["https:\/\/x.com\/VE6EY"]}]}},"share_on_mastodon":{"url":"","error":""},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6wNv5-2VJ","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/play.fallows.ca\/wp\/wp-json\/wp\/v2\/posts\/11267","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/play.fallows.ca\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/play.fallows.ca\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/play.fallows.ca\/wp\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/play.fallows.ca\/wp\/wp-json\/wp\/v2\/comments?post=11267"}],"version-history":[{"count":2,"href":"https:\/\/play.fallows.ca\/wp\/wp-json\/wp\/v2\/posts\/11267\/revisions"}],"predecessor-version":[{"id":11270,"href":"https:\/\/play.fallows.ca\/wp\/wp-json\/wp\/v2\/posts\/11267\/revisions\/11270"}],"wp:attachment":[{"href":"https:\/\/play.fallows.ca\/wp\/wp-json\/wp\/v2\/media?parent=11267"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/play.fallows.ca\/wp\/wp-json\/wp\/v2\/categories?post=11267"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/play.fallows.ca\/wp\/wp-json\/wp\/v2\/tags?post=11267"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/play.fallows.ca\/wp\/wp-json\/wp\/v2\/series?post=11267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}