{"id":412,"date":"2020-10-28T22:16:52","date_gmt":"2020-10-29T03:16:52","guid":{"rendered":"https:\/\/w3axl.com\/?p=412"},"modified":"2022-07-15T23:25:57","modified_gmt":"2022-07-16T04:25:57","slug":"uniden-bcd996p2-internal-gps-mod","status":"publish","type":"post","link":"https:\/\/w3axl.com\/?p=412","title":{"rendered":"Uniden BCD996P2 Internal GPS Mod"},"content":{"rendered":"\n<p>Like many hams, I have a scanner installed in my vehicle along with my radios. It&#8217;s great for keeping tabs on what&#8217;s going on around the area. The newer models of scanner from the major players (Uniden, Whistler, etc) typically have GPS capabilities to lock\/unlock scanning banks depending on your location. This is super convenient, especially when you travel across states frequently as I do.<\/p>\n\n\n\n<p>I own a BCD996P2 that I picked up secondhand from a friend a few years ago. It came with the standard Uniden &#8220;puck&#8221; GPS receiver, which plugs into the scanner&#8217;s rear DB9 port and includes a 12V accessory plug for a vehicle. Not the most elegant solution, but it works.<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/w3axl.com\/wp-content\/uploads\/2022\/07\/p-31111-8a__58732.1426075799.1280.1280.jpg\"><img decoding=\"async\" loading=\"lazy\" width=\"1000\" height=\"1000\" src=\"https:\/\/w3axl.com\/wp-content\/uploads\/2022\/07\/p-31111-8a__58732.1426075799.1280.1280.jpg\" alt=\"\" class=\"wp-image-483\" srcset=\"https:\/\/w3axl.com\/wp-content\/uploads\/2022\/07\/p-31111-8a__58732.1426075799.1280.1280.jpg 1000w, https:\/\/w3axl.com\/wp-content\/uploads\/2022\/07\/p-31111-8a__58732.1426075799.1280.1280-300x300.jpg 300w, https:\/\/w3axl.com\/wp-content\/uploads\/2022\/07\/p-31111-8a__58732.1426075799.1280.1280-150x150.jpg 150w, https:\/\/w3axl.com\/wp-content\/uploads\/2022\/07\/p-31111-8a__58732.1426075799.1280.1280-768x768.jpg 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><figcaption>The official product photo even makes it look like a mess!<\/figcaption><\/figure><\/div>\n\n\n<p>Recently, however, my GPS module died of unknown causes. One day it simply stopped powering up. A future post might dive into the internals to see what went bad, but in the meantime I wanted to cook up a solution that wasn&#8217;t going to cost me $80 for a new OEM module.<\/p>\n\n\n\n<p>I happened to have several small GPS modules lying around from some ongoing projects. These are readily available on your favorite less-than-reputable online marketplace, and typically have uBlox NEO-xM modules installed. As it happens, they run on 3.3-5V, output TTL NMEA data, and are around 1 inch by 1 inch or so. Perfect for stuffing inside a small enclosure, or scanner&#8230;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/store.roboticsbd.com\/2043-large_default\/u-blox-neo-6m-gps-module-robotics-bangladesh.jpg\" alt=\"\" width=\"281\" height=\"281\"\/><figcaption>These are what I&#8217;m talking about. Small and cheap, my two favorite features of sketchy eBay finds.<\/figcaption><\/figure><\/div>\n\n\n<!--more-->\n\n\n\n<p>So, after a little reading, I found that the most common method of adding &#8220;alternative&#8221; GPS sources to Uniden scanners is to patch into the RS-232 side of the serial port using a MAX232 level converter. RadioReference member jonwienke has a <a rel=\"noreferrer noopener\" href=\"https:\/\/forums.radioreference.com\/threads\/internal-gps-mod-tech-support-q-a.356032\/\" data-type=\"URL\" data-id=\"https:\/\/forums.radioreference.com\/threads\/internal-gps-mod-tech-support-q-a.356032\/\" target=\"_blank\">fantastic thread<\/a> with several experiments using this method over on the RR forums. However, I didn&#8217;t have any MAX232 modules on hand, and I wanted a solution as soon as possible. Thankfully, there&#8217;s a second way to approach things.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/wiki.w3axl.com\/images\/thumb\/5\/5f\/996-gps-fully-installed.png\/1024px-996-gps-fully-installed.png\" alt=\"File:996-gps-fully-installed.png\" width=\"512\" height=\"440\"\/><figcaption>512Nice and clean!<\/figcaption><\/figure><\/div>\n\n\n<h2>The Mod<\/h2>\n\n\n\n<p>We know BCD996P2 takes in RS-232 GPS data via its rear serial port. However, almost every modern MCU takes in TTL-level signals, and would quickly let the smoke out if fed with the +\/- 7V (or more) that are typically present in true RS-232 signals. If we add up 2+2, we know that there must be internal level conversion going on somewhere inside the scanner. I was fully prepared to hunt all around both sides of the board for pins to tap into in order to break out the data lines.<\/p>\n\n\n\n<p>However, after tearing down the unit, I found that Uniden was extremely nice to future would-be hackers. They very kindly broke out the RS-232 TX and RX lines to test points right next to both the DB9 connector and the level conversion IC (a <a href=\"https:\/\/www.ti.com\/product\/TRS3221E\" data-type=\"URL\" data-id=\"https:\/\/www.ti.com\/product\/TRS3221E\" target=\"_blank\" rel=\"noreferrer noopener\">TRS3221E<\/a>, for reference). After probing these lines with my scope, I realized that this mod was going to be dead-simple. The two test points expose the TX\/RX lines <em>after<\/em> conversion to +3.3V TTL levels. That means that all we need to do is run a wire from the NEO-6M module&#8217;s TX line to the scanner&#8217;s RX line, along with power and ground, and we&#8217;re done.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/wiki.w3axl.com\/images\/thumb\/2\/2a\/996-gps-wires-glued.png\/1280px-996-gps-wires-glued.png\" alt=\"File:996-gps-wires-glued.png\" width=\"512\" height=\"366\"\/><figcaption>Excuse the hot glue, I&#8217;m out of kapton tape. It&#8217;ll probably hold better at least. Also, please ignore black for power and red for ground &#8211; I had to switch modules and the pinout on the new module was reversed. I was too lazy to re-solder the header connector.<\/figcaption><\/figure><\/div>\n\n\n<p>After finding a suitable power tap for 3.3V (I used the V_CPU test point) and running a ground wire to the nearest ground pad, I powered up the scanner to see whether it would smoke my module or not. Nothing blew up immediately, so I continued on.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/wiki.w3axl.com\/images\/thumb\/9\/98\/996-gps-searching.png\/1280px-996-gps-searching.png\" alt=\"File:996-gps-searching.png\" width=\"512\" height=\"360\"\/><figcaption>This was one of the quickest projects I&#8217;ve completed.<\/figcaption><\/figure><\/div>\n\n\n<p>I had to change the GPS baudrate from the default 4800bd to 9600bd (the NEO-6M default), but after that I was greeted with the above image. The scanner was talking to the GPS just fine, which meant all I had to do now was clean things up and hook up an antenna.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img decoding=\"async\" src=\"https:\/\/wiki.w3axl.com\/images\/thumb\/7\/70\/996-gps-sma-mounted.png\/1024px-996-gps-sma-mounted.png\" alt=\"File:996-gps-sma-mounted.png\" width=\"512\"\/><figcaption>It almost looks factory!<\/figcaption><\/figure><\/div>\n\n\n<p>I routed the antenna connector through a hole I drilled in the back of the case. Originally, this area was where the rear M4 mounting hole was located. I never needed to mount anything there, and I&#8217;m not entirely sure why it&#8217;s there in the first place, so a 1\/4-inch drill bit gave me a nice clean mounting point for the SMA bulkhead. Once that was done, and the unit was put back together, it was time to test it out!<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img decoding=\"async\" src=\"https:\/\/wiki.w3axl.com\/images\/thumb\/a\/ae\/996-gps-locked-working.png\/1280px-996-gps-locked-working.png\" alt=\"File:996-gps-locked-working.png\" width=\"512\"\/><figcaption>No, you can&#8217;t know my exact coordinates. Thanks for asking!<\/figcaption><\/figure><\/div>\n\n\n<p>Like I said earlier, this was probably one of the fastest mods I&#8217;ve done. Total time was a little over two hours from start to finish. The first module I tried ended up being a dud &#8211; it was outputting serial data at 3100baud, which is a totally non-standard data rate and I&#8217;m not entirely sure why that is. After swapping in a new unit (with a different pinout, because nothing is ever too easy) we were in business.<\/p>\n\n\n\n<h2>Wrapping Up<\/h2>\n\n\n\n<p>It goes without saying, but I offer no gaurantees if you decide to perform this mod yourself. There&#8217;s any number of weird things that could go wrong to easily break your scanner, and it&#8217;s nobody&#8217;s fault but your own if you manage to do that.<\/p>\n\n\n\n<p>For a little more detailed info, check out <a rel=\"noreferrer noopener\" href=\"https:\/\/wiki.w3axl.com\/index.php\/BCD996P2_Internal_GPS_Mod\" data-type=\"URL\" data-id=\"https:\/\/wiki.w3axl.com\/index.php\/BCD996P2_Internal_GPS_Mod\" target=\"_blank\">my wiki page on this mod<\/a>. Feel free to comment here with any questions, suggestions, or concerns, and I&#8217;ll try and respond!<\/p>\n\n\n\n<p>Thanks for reading, and 73 for now!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Like many hams, I have a scanner installed in my vehicle along with my radios. It&#8217;s great for keeping tabs on what&#8217;s going on around the area. The newer models of scanner from the major players (Uniden, Whistler, etc) typically have GPS capabilities to lock\/unlock scanning banks depending on your location. This is super convenient, especially when you travel across states frequently as I do. I own a BCD996P2 that I picked up secondhand from a friend a few years ago. It came with the standard Uniden &#8220;puck&#8221; GPS receiver, which plugs into the scanner&#8217;s rear DB9 port and includes<\/p>\n","protected":false},"author":1,"featured_media":417,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0},"categories":[1],"tags":[],"jetpack_featured_media_url":"https:\/\/w3axl.com\/wp-content\/uploads\/2020\/10\/mounted-powered-up-e1603941367569.png","_links":{"self":[{"href":"https:\/\/w3axl.com\/index.php?rest_route=\/wp\/v2\/posts\/412"}],"collection":[{"href":"https:\/\/w3axl.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/w3axl.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/w3axl.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/w3axl.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=412"}],"version-history":[{"count":7,"href":"https:\/\/w3axl.com\/index.php?rest_route=\/wp\/v2\/posts\/412\/revisions"}],"predecessor-version":[{"id":484,"href":"https:\/\/w3axl.com\/index.php?rest_route=\/wp\/v2\/posts\/412\/revisions\/484"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/w3axl.com\/index.php?rest_route=\/wp\/v2\/media\/417"}],"wp:attachment":[{"href":"https:\/\/w3axl.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=412"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/w3axl.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=412"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/w3axl.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=412"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}