tag:blogger.com,1999:blog-65617087004971154312024-03-19T01:39:40.614-07:00MegaMicroWatt - Carl Smith's BlogA blog where I will write about my attempts at wrangling electrons to do my bidding, and whatever I find interesting.Carl Smithhttp://www.blogger.com/profile/04722618854308051543noreply@blogger.comBlogger13125tag:blogger.com,1999:blog-6561708700497115431.post-82769343532620974772021-02-12T21:02:00.001-08:002022-12-31T19:00:12.929-08:00A Rant About the Complete Lack of Logical Reasoning on Ancient Aliens<p>Once in a while when there is absolutely nothing on TV something tempts me to switch to Ancient Aliens. I need to learn to stay away from that show because it usually takes about 3 minutes before I want to reach into the TV and slap the stupid out of the people on that show.<br /><br />Tonight one of the guys was making a big deal about how the pyramid of Giza is located at 29.9792 degrees North longitude, and the speed of light is 299792458 meters per second. He said these numbers being the same can't be a coincidence. Apparently he thinks the aliens that helped build it wanted it at that point because the coordinates match the speed of light.<br /><br />Let's examine how many things are wrong with this idea. It's a long list...<br /><br />First of all, the number for the speed of light is totally dependent on the units you use. Sure, it is 299792458 meters per second. It's also approximately 186,282 miles per hour, 1802613915490 furlongs per fortnight, and 10569718815 Smoots per minute.<br /><br />But back to meters per second. Meters weren't defined as a unit of measurement until 1793. Ancient Egyptians didn't have meters for measurement.<br /><br />Seconds were first used as a unit of time by either the ancient Greeks or ancient Babylonians, depending on which theory of their origin you believe. Either way, this was thousands of years after the pyramids were built.<br /><br />So meters per second didn't exist as a unit of measurement to the ancient Egyptians, so the number 299792458 would have been meaningless to them as the speed of light even if they had known what the speed of light was.<br /><br />So now, on to the system of latitude and longitude as a measure of position on Earth. Latitude and longitude use the idea of 360 degrees as divisions of angles in a circle. It seems nobody knows for sure when 360 degrees in a circle first came to be used but the most common belief pins this one on the ancient Babylonians again, long after the pyramids were built.<br /><br />The idea of using degrees on a circle to measure position on Earth came centuries later than the invention of degrees as a unit of angle. According to Google "Eratosthenes in the 3rd century BCE first proposed a system of latitude and longitude for a map of the world."<br /><br />So the idea of the pyramid of Giza being located at 29.9792 degrees north had no meaning until degrees in a circle and latitude and longitude were invented.<br /><br />And last but NOT LEAST, ancient Egyptians didn't use the Arabic numerals "0123456789" for their numbering system because this system wasn't invented until about the year 500. So the numbers for "299792458" would have been nothing but meaningless scribbles to them. They used a system where they had separate hieroglyphs for 1, 10, 100, 1000, etc. And you used as many of each as you needed to add up to the quantity you wanted to represent.<br /><br />You might claim that the ancient aliens that were visiting would know the speed of light in meters per second and therefore where to instruct the ancient Egyptians to put the pyramid. But that is also impossible, since meters, seconds, Arabic numerals, degrees, latitude, and longitude didn't exist then. They would have either used ancient Egyptian units of time, speed, and location, or used their own units.<br /><br />I'm not even sure how to express my feelings about how a major TV network can put something like this on with zero critical thinking or logical reasoning applied to whether or not what they are saying makes an ounce or sense. <br /><br /><br /></p>Carl Smithhttp://www.blogger.com/profile/04722618854308051543noreply@blogger.com0tag:blogger.com,1999:blog-6561708700497115431.post-91253521028482305532018-07-31T20:22:00.000-07:002018-07-31T20:22:42.319-07:00The Five Finger Code Finder<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">This post is about a device I designed and built that can open Ford cars that have the <b>Ford Securicode </b>keyless-entry keypad.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDIc6kNn2L3UgZei2OPYFEe9uvWYazAWOoWq4_oyv2nPza-AwylDuODj7zOn3FQFyq6NlMaVNrzwo82ZsrwHwhw9zXu4T_xDEZLDjnrhtvW7ERO4tsTvnC_QOFCFpRFYGNbG25EU53MXE/s1600/5+Key+Pad.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="486" data-original-width="1600" height="121" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDIc6kNn2L3UgZei2OPYFEe9uvWYazAWOoWq4_oyv2nPza-AwylDuODj7zOn3FQFyq6NlMaVNrzwo82ZsrwHwhw9zXu4T_xDEZLDjnrhtvW7ERO4tsTvnC_QOFCFpRFYGNbG25EU53MXE/s400/5+Key+Pad.jpg" width="400" /></a></span></div>
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">The <b>Five Finger Code Finder</b> is an electromechanical device and software designed to efficiently find the PIN code that will unlock Ford automobiles equipped with a 5 button entry keypad. It can unlock a door in less than 11 minutes and <b>on average takes less than four minutes</b>.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">I created a <a href="https://hackaday.io/project/27445-five-finger-code-finder" target="_blank">project page on the Hackaday.io</a> site, and it was recently featured on the <a href="https://hackaday.com/2018/06/18/opening-a-ford-with-a-robot-and-the-de-bruijn-sequence/" target="_blank">Hackaday.com Blog page</a>, which generated a lot of traffic to the project page.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Its purpose is to demonstrate how the design of this system allows PIN codes to be found in a <b>MUCH SHORTER TIME than would normally be required </b>to brute force search and try all possible PINs. This system allows a good level of usability but in the process sacrifices security. The purpose of this project is to demonstrate how design decisions that put a priority on ease of use can greatly compromise the security of a system such as this. The design of any security system is always a compromise between ease of use and how secure the system is. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">The Five Finger Code Finder uses an Arduino for control, a standard HD44780 compatible LCD, and five solenoids to press the keypad buttons in sequence.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">This project builds on the previous work of <a href="https://hackaday.io/samy">Samy Kamkar</a> and the authors of “<a href="http://opengarages.org/handbook/">The Car Hacking Handbook</a>.” Samy discovered a <a href="http://samy.pl/opensesame/">method to quickly open garage door openers</a> that use a remote with a fixed binary code set by dip switches. Despite the development of rather secure rolling code systems these remotes are still in wide use in situations such as apartment parking garages where a large number of remotes must operate the same door.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Samy discovered that the logic that checks for a code match<b> rechecks the entire code sequence as each individual bit arrives, rather than waiting for a full code word to be received</b>, and that there is no delay after checking for a match and no penalty for an incorrect match. If you have a 12 bit code the check system will check the first 12 bits for a match. If a 13<sup>th</sup> bit arrives, it will immediately check bits 2 through 13 for a match. If a 14<sup>th</sup> bit arrives, it will check bits 3 through 14, and so on. This facilitates much faster code searching as <b>you have just checked three different 12 bit codes with only 14 bits sent.</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">The authors of “The Car Hackers Handbook” discovered that <b>the entry keypads on Ford vehicles utilize this same shift by one and check for a match system</b>. Also with no delays and no penalties for incorrect entries. In this case you have five keys to use in the code instead of just the ones and zeros of a binary code but the concept remains the same. In their book they published an optimal sequence for manually trying all possible codes as efficiently as possible. They state that one can enter this sequence manually in approximately 20 minutes and find the code to unlock a Ford vehicle with this system. Personally I think 20 minutes is a bit optimistic as you'd have to be able to press about 3 buttons a second. Maybe if you had someone reading the digits to you so you could keep your eyes on the keypad it might be possible.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Well, I’m to lazy to do that, and thought it would be a fun project to implement a machine that can enter the sequence automatically for me as quickly as the door keypad will recognize button presses.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"> </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Here's a picture of what I created.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvh7SxRUFgARTVzjo90a5XSnQUbrQF4imJw3irEUDtcAYFiB12-KpsNwqgtGJFiPkvk35gOl1emELF2CCAp27SoAO7INpcCx14iIUL3HSy7A-h-9c5cpIfmRPR4w1NnJhy_RWiFWny9_E/s1600/5FCF+Thumb+3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvh7SxRUFgARTVzjo90a5XSnQUbrQF4imJw3irEUDtcAYFiB12-KpsNwqgtGJFiPkvk35gOl1emELF2CCAp27SoAO7INpcCx14iIUL3HSy7A-h-9c5cpIfmRPR4w1NnJhy_RWiFWny9_E/s640/5FCF+Thumb+3.jpg" width="640" /></a></span></div>
<br />
<br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: large;"><b>Construction of the Five Finger Code Finder</b></span></span> <br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">To build this I mounted four push type solenoids from All Electronics (<a href="https://www.allelectronics.com/item/sol-102/miniature-12vdc-push-type-solenoid/1.html" target="_blank">part number SOL-102</a>) onto a piece of acylic sheet. The unit attaches to the car door with the <a href="https://www.allelectronics.com/item/mag-149/20mm-magnet-w/hole-for-countersunk-screw/1.html" target="_blank">four magnets (part number MAG-149)</a> on the screw feet. The magnets have a countersunk hole in the center that allows them to be put onto a screw and held in place by a nut. A second pair of nuts on each screw allow adjustment of the length of the magnetic feet to set the proper distance between the solenoids and the keypad on the car door. Onto the acrylic sheet I mounted a perfboard with the electronics that make the system work.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">The important components on the perfboard include a <a href="https://www.sparkfun.com/products/11113" target="_blank">Arduino Pro Mini from Sparkfun Electronics</a>, a standard character LCD (any Hitachi 44780 compatible one will do), a <a href="http://www.ti.com/product/ULN2003A" target="_blank">ULN2003 Darlington Transistor Array</a> chip to drive the solenoids, and a standard <a href="https://www.sparkfun.com/datasheets/Components/LM7805.pdf" target="_blank">7805 regulator</a> circuit to power the Arduino and LCD. I also included 5 red indicator LEDs and series current limiting resistors to show which solenoids are powered as the device taps out the code sequence (who doesn't like blinky LEDs), two power switches to switch power to the Arduino and to the solenoids separately, a potentiometer to adjust the LCD contrast, and after I found out the two 9-volt batteries were not sufficient to power the solenoids, I added a couple terminals to connect a larger battery, and a diode to protect from reverse polarity if that external battery is connected improperly. I also included three pushbuttons for control of the device, to allow the user to start and stop the operation, and jump forward and backward in the sequence. (At a later date I may post a more detailed Bill of Materials and schematic if there is interest.)</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">The solenoids have very narrow pins on the pusher end which wouldn't press the buttons reliably by themselves, so I cut pieces from a wood dowel rod, drilled small holes into each one, and glued them onto the pins, so the solenoids would have "feet" that better matched the size of the buttons on the keypad. When doing this it is critical to get all the feet glued onto the solenoids at exactly the same depth so they would all contact the buttons at the same time. The rubber band you see in the picture is there to keep the solenoids held against the keypad buttons during operation because the solenoid pins are normally able to move loosely in the solenoid body. The red sticks zip tied to the end solenoids allow adustment of the height of the rubber band behind the solenoids.</span><br />
<br />
<br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><b><span style="font-size: large;">Software Development</span></b> </span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">All this hardware does nothing without some software for the Arduino. Most of this was pretty easy given the ease of use of the Arduino programming environment. All I had to do to make the LCD work was connect it by the method indicated in the <a href="https://www.arduino.cc/en/Tutorial/LiquidCrystalDisplay" target="_blank">LCD example code that comes in the Arduino programming environment</a>, and the "Liquid Crystal" library included worked fine for writing text to the LCD. The pushbuttons and solenoids were connected to digital inputs and outputs and can be read or written directly in the Arduino code.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">I wrote some code that displays an introduction screen and tells the user to "Press Start" to start the door opening robot in operation. Once that is done the first pushbutton can be used to stop the operation and the other two buttons will jump back or forward in the sequence, to allow the user to replay part of the sequence or jump forward if they wish to skip part of the sequence. One area of improvment here would be better switch debouncing in the software. Sometimes the switches do "double clicks." I wasn't too concerned about that however, as this is a proof of concept project, not a polished finished product.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">The biggest feature of the software is the number sequence used to open the door as quickly as possible. It uses a special number sequence called a <a href="https://en.wikipedia.org/wiki/De_Bruijn_sequence" target="_blank">de Bruijn Sequence</a>. Dutch mathematician <a href="https://en.wikipedia.org/wiki/Nicolaas_Govert_de_Bruijn" title="">Nicolaas de Bruijn</a> discovered a method to find a sequence of numbers where all the possible codes are included somewhere in the sequence with no wasted digits. I'll discuss how this sequence speeds up the code entry later, but I had to figure out a way to generate this sequence and include it in the Arudino program.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">I didn't want to just steal the number sequence out of the Car Hacker's Handbook -- that somehow felt like cheating, so I needed to find a way to generate the sequence. The Wikipedia page has a piece of <a href="https://en.wikipedia.org/wiki/De_Bruijn_sequence#Algorithm" target="_blank">Python code that can generate de Bruijn sequences</a>, which I adapted for my own use. I modified it to generate a sequence for five digit codes on five keys, and to output that sequence with commas and spaces between each digit so I could paste it into the Arduino code. The modified code is available <a href="https://cdn.hackaday.io/files/274451174206880/DeBruijn.py" target="_blank">here</a>, from my Hackaday.io project page.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">All I changed were the last few lines of code. I changed the line line that reads</span><br />
<span style="font-size: small;"> <span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace;">return "".join(alphabet[i] for i in sequence)</span></span></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">to add the comma and space as follows: </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: small;"><span style="font-family: "courier new" , "courier" , monospace;">return ", ".join(alphabet[i] for i in sequence)</span></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-size: small;"> <span style="font-family: "arial" , "helvetica" , sans-serif;">Then I deleted the two example lines that read</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: small;"><span style="font-family: "courier new" , "courier" , monospace;">print(de_bruijn(2, 3))<br />
print(de_bruijn("abcd", 2))</span></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">and replaced them with my own line that generates five digit codes with 1, 3, 5, 7, 9:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: small;"><span style="font-family: "courier new" , "courier" , monospace;">print(de_bruijn("13579", 5))</span></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">And it output the sequence in a format ready to be pasted into the Arduino code.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">The next problem I found was that the Arduino programming environment didn't like the large size of the array of numbers for the de Bruijn sequence. It turns out that without special tricks, it copies an array from program memory into RAM just to access it, and the Arduino Pro mini doesn't have enough RAM to even hold the whole sequence of 3129 digits. I had to find a way to get the code to NOT copy the array to RAM and instead read it directly from program memory. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">The Arduino environment has a way to accomplish this. There is a <a href="https://www.arduino.cc/reference/en/language/variables/utilities/progmem/" target="_blank">header file</a> you can include called <span style="font-family: "courier new" , "courier" , monospace;">pgmspace.h</span> that provides what's necessary. Just add the line <br />
<span style="font-family: "courier new" , "courier" , monospace;">#include <avr/pgmspace.h></span><br />
at the beginning of your code. Then insert the keyword "PROGMEM" into your array declaration like so: <br />
<span style="font-family: "courier new" , "courier" , monospace;">const PROGMEM char debruijn5of5[] = {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 5, 1, 1, 1, 1, ...</span><br />
<br />
But now that your array is stuck in program memory you can't just access it as you normally would. In my case I had to use a function called <span style="font-family: "courier new" , "courier" , monospace;">pgm_read_word_near()</span> to retrieve elements from my giant array of de Bruijn sequence digits, with the following line of code, where <span style="font-family: "courier new" , "courier" , monospace;">debruijn5of5</span> is the array name, <span style="font-family: "courier new" , "courier" , monospace;">i</span> is the index into the array, and <span style="font-family: "courier new" , "courier" , monospace;">currentdigit</span> is of course where I'm putting the retrieved array element:<br />
<span style="font-family: "courier new" , "courier" , monospace;">currentdigit = pgm_read_word_near(debruijn5of5 + i);</span><br />
<br />
The rest of the code is pretty straightforward. Looping through the array, retrieving array elements, activating the matching solenoid, updating the LCD with the side scrolling history of the last digits tried and the count, and check for the user pushing buttons.</span><br />
<br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><b><span style="font-size: large;">See it in Action</span></b> </span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">So by now, reading through all this, you probably want to see this thing working. I have posted a video to my YouTube channel. It was meant to stand on it's own, so it explains much of the same stuff I've said here, but you can see the device running:</span><br />
<span style="font-size: small;"><br />
</span> <br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: small;"><iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/ysAbJyjQMRE/0.jpg" frameborder="0" height="532" src="https://www.youtube.com/embed/ysAbJyjQMRE?feature=player_embedded" width="640"></iframe></span></div>
<span style="font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"> </span><br />
<br />
<b><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">The Theory Behind How de Bruijn Sequences, Shifting Digits, and Five Digit Keypads Make This Thing Work So Fast:</span></b><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">So if you've read this far you might be the type of person interested in some more in depth theory about how this device opens car doors so fast. Again, some of this is covered in the video above, but I want this post to cover all the important information as well.</span><br />
<span style="font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><b>The first thing to consider is the keypad itself.</b> Ford went with a five button keypad. Each key has two numbers on it, but that is just so you can use any code you want. So let's compare five buttons to a more traditional ten-key keypad light you might have for a security system or one of those garage door opener keypads.</span><br />
<span style="font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">And to compare to the Ford system, let's say it also has a five digit code. In this case you can have codes from 00000 to 99999, or 100000 different codes to test. To show this mathematically, you have 10 digits to choose from for each of the 5 digit codes, so the number of possible codes i<span style="font-family: "arial" , "helvetica" , sans-serif;">s</span> 10*10*10*10*10, which is 100000. This is obvious since we are all familiar with our usual decimal numbering system, but let's apply that same math to the Ford five digit keypad.</span><br />
<span style="font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">You have only half as many keys, but that doesn't just cut the number of codes in half. To find the number of codes for only five keys and five digits, we just solve 5*5*5*5*5, which is 3125. There are only 3125 possible codes on a five digit keypad with a five digit code. This is only three percent as many codes to test. This one factor is what makes this possible to search all codes in a reasonable time.</span><br />
<span style="font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">So why would Ford do something that <b>reduces the number of possible codes by 97 percent?</b> A ten digit keypad on your car door would cost more, be harder to use, and would be <b>rather ugly</b>. When designing a security system you must create something people are willing to have and use.</span><br />
<span style="font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><b>The next thing to consider is what I call the "Shift and Check Again Process."</b> Each time you press a button on the keypad, the system combines that key with the previous four keys that were pressed to make a five digit code, and checks that against the codes that open the door. It's like it drops the oldest digit, shifts everything over one digit, adds the new digit, and checks again.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">So, or example, in a traditional system to check 5 codes you’d enter something like:<br />
11111, 11112, 11113, 11114, 11115<br />
Which is 25 total keypresses to check 5 codes and 15625 keypresses to check 3125 codes.<br />
<br />
But with the "Shift and Check" system you could enter a series such as:</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">1, 9, 3, 5, 1, 1, 9, 3, 7, 1, 1, 9<br />
And the system would check all of the following codes:<br />
19351, 93511, 35119, 51193, 11937, 19371, 93711, 37119<br />
</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">So now you have checked 8 codes with only 12 presses instead of 40 because after the first four digits you are checking a 5 digit code with every key press.<br />
<br />
So now all we need to do is find an optimal sequence of numbers where we are checking a new code on every key press, reusing the previous four digits each time, without wasting key presses on codes we already checked, and we drastically reduce the time to test all codes.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><i><b> </b></i></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><i><b>Why would Ford use this “shift and check on every key press” method?</b></i><br />
<br />
It was necessary to do this to make the system easy to use when you make a mistake.<br />
<br />
Think about what would happen if they only checked digits in groups of 5. Say your code is 1 2 3 4 5 but you make a mistake and enter 1 2 2 and then stop. Then you then enter 1 2 3 4 5 to try and enter the right code. What you have entered is 1 2 2 1 2 3 4 5. If it waited for 5 digits it would only check 1 2 2 1 2 and it would be waiting for you to finish your next attempt starting with 3 4 5.</span><br />
<span style="font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">It is necessary to operate in this manner because there is no key on the pad to cancel an incorrectly entered code, and no enter key to tell the system when you are done entering a code.<br />
<br />
So now back top what I said about finding the optimal sequnce that doesn't waste any digits. It turns out mathemeticians have already solved this problem for us with something called a de Bruijn Sequence.</span><br />
<i></i><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><i><br />
<b> </b></i></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><i><b>The De Bruijn Sequence</b></i><br />
<br />
These sequences of numbers were named after Dutch mathematician Nicolaas de Bruijn who came up with the general theory to prove the existance of these sequences of numbers that are optimized to contain all the possible codes in the shortest sequence possible. This is just what we need for this project, to open the car door in a short a time as possible.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
<a href="https://en.wikipedia.org/wiki/De_Bruijn_sequence" target="_blank">From Wikipedia: </a> <i>In combinatorial mathematics, a de Bruijn sequence of order n on a size-k alphabet A is a cyclic sequence in which every possible length-n string on A occurs exactly once as a substring (i.e., as a contiguous subsequence). Such a sequence is denoted by B(k, n) and has length k^n, which is also the number of distinct substrings of length n on A; de Bruijn sequences are therefore optimally short.</i> <br />
</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">That might take a few read throughs to understand, but for our Ford door keypad the alphabet is “1 3 5 7 9." For a five digit keypad k = 5, the number of keys. For a five digit code n = 5 since n is the number of digits in the code.<br />
<br />
Therefore the number of digits in the sequence is 5^5 or 3125. The de Bruijn sequence is exactly what we need to enter all codes with the least key presses possible.<br />
<br />
Actually takes 3129 key presses because the first four buttons pressed do not form a 5 digit code, so those digits have to be put back on the end of the sequence to actually be tested, like you are going around in a circle. Note how Wikipedia says it’s a cyclic sequence.</span><br />
<span style="font-size: small;"><b><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></b></span> <b><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;"> </span></b><br />
<b><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Putting This All Together</span></b><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">The Five Finger Code Finder can almost press 5 keys per second (maybe it could go faster but I didn’t have time to test reliability of faster speeds). Let's look at the time improvement for each factor above.<br />
<br />
Starting with the normal 10 key pad like a security system might have, with 5 digit code, testing everything the hard way by entering each code in full, we have:<br />
100000 codes with 5 digits each, or 500000 key presses.<br />
500000 presses at 5 presses per second is 100000 seconds, which is <b>almost 28 hours</b><br />
<br />
Now with only a 5 key pad and 5 digit code, but still entering each code in full, separately,<br />
3125 codes with 5 digits each is 15625 key presses.<br />
15625 presses at 5 presses per second is 3125 seconds or <b>52 minutes</b>.<br />
<br />
The final piece of the puzzle, checking on every digit and using the de Bruijn Sequence, means we have:</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">3129 presses at 5 presses per second which 626 seconds.</span><br />
<span style="font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">This is how we can open any Ford car door in <b>10 minutes and 26 seconds or less</b>.<b> </b></span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">I made a YouTube video about all this theory:</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/mG2bHj0sRyo/0.jpg" frameborder="0" height="532" src="https://www.youtube.com/embed/mG2bHj0sRyo?feature=player_embedded" width="640"></iframe></div>
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><b> </b></span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><b>So what are the lessons we learn from this project?</b> </span><br />
<span style="font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Security is always a lesson in <b>compromises</b>.<br />
<br />
Ford went with 5 digit keypad.<br />
• 10 digit keypad would cost more<br />
• 10 digit keypad would be big and ugly<br />
<br />
Ford checks last five digits entered each time you press a key.<br />
• Needed for usability<br />
• No way to cancel a partially entered code and start over</span><br />
<span style="font-size: small;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: x-small;"><br />
</span></span></span> <span style="font-size: small;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: x-small;">It might sound all through this post like I am complaining about the lack of security in this system, but from a design and engineering standpoint I think <b>Ford probably did this exactly correct.</b><br />
<br />
These compromises were necessary to make a system that people would want and would use. Compromises in security for usability are often okay as long as you understand the tradeoffs. And tradeoffs are necessary because people won’t use security that is too difficult.<b><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-family: "arial" , "helvetica" , sans-serif;"> </span></span></b></span></span></span><br />
<br />
<br />
<span style="font-size: large;"><b><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Countermeasures by Ford:</span></span></b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><span style="font-family: "arial" , "helvetica" , sans-serif;"> </span> </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">So I developed this project on my 2001 Ford Explorer. Sometime since then Ford has anticipated this method of attack and developed a very effective countermeasure that I didn't know about until I traded my 2001 Explorer in and bought a 2017 Explorer. It has a completely different keypad that uses capacitive touch sensing, so this version of the Five Finger Code Finder is not compatible, but even if I designed a new version it would be thwarted by the following feature I found in the owners manual:<br />
<br />
<i>Anti-Scan Feature<br />
<br />
The keypad goes into an anti-scan mode if you enter the wrong code seven times.<br />
<br />
This mode turns off the keypad for one minute and the keypad lamp flashes.<br />
<br />
The anti-scan feature turns off after any of the following occur:<br />
• One minute of keypad inactivity.<br />
• You press the unlock button on the remote control.<br />
• You switch your vehicle on.<br />
• You unlock the vehicle using intelligent access. </i></span><br />
<span style="font-size: small;"><br />
</span> <span style="font-size: small;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">So Ford as anticipated the code searching process and simply made the system take a time out for a minute if you enter seven incorrect codes. They mean full five digit codes, so that means 35 keypresses and you wait a minute. The system could be programmed to work with this countermeasure, trying 35 digits, then waiting a minute, then backing up 4 digits in the sequence to "re-prime" the shift and check system, then entering 31 more digits. But the time this would add would make it take many hours to finish.</span><br />
<br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><span style="font-size: large;"><b>Video on Construction of the 5FCF Project:</b></span></span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">So if you would like to build a device like this yourself, the third video in my series will be worth watching. In it I discuss how I built the device, and the problems I encountered along the way, so you don't have to solve the same issues I had to solve.<br />
</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span><br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/QKg7bvFWitY/0.jpg" frameborder="0" height="532" src="https://www.youtube.com/embed/QKg7bvFWitY?feature=player_embedded" width="640"></iframe></div>
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br />
</span>Carl Smithhttp://www.blogger.com/profile/04722618854308051543noreply@blogger.com0tag:blogger.com,1999:blog-6561708700497115431.post-40570643318365298882016-10-08T21:07:00.000-07:002016-10-08T21:32:02.920-07:00Hackaday.io Traveling Hacker Box Stops in North Dakota<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">The Hackaday.io Traveling Hacker Box recently arrived in the mostly rectangular state of North Dakota. It was full of numerous goodies that any reader of Hackaday would be interested in having.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">The Hackaday Traveling Hacker Box is a box full of goodies useful to anyone who tinkers with electronics. Things like microcontroller development boards, LCD screens, ICs, and other parts. It is a project on the Hackaday.io site. Join the project and you might be able to receive the box, take some items you find useful, add some items for other people, and send it on to the next person in the chain.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">Here are some photos of the stuff inside:</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
</div>
<div style="line-height: 100%; margin-bottom: 0in;">
</div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNxzo6DlbCImWlRX3fro5EybQRTuXFWBd2_czOe4oankD4UYtNn0iv444tih4-fvMTYt5L7GURfGRc30SsqUQV8VWWUsjcyS-sYpBmRGkkuoo4zy1car7_v-Z23JDCB8Uuxo6owTR9xJE/s1600/IMG_20160926_231646921.jpg" imageanchor="1"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNxzo6DlbCImWlRX3fro5EybQRTuXFWBd2_czOe4oankD4UYtNn0iv444tih4-fvMTYt5L7GURfGRc30SsqUQV8VWWUsjcyS-sYpBmRGkkuoo4zy1car7_v-Z23JDCB8Uuxo6owTR9xJE/s640/IMG_20160926_231646921.jpg" width="640" /></a></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">First we have a bunch of stickers.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVIw4z1WnrH-ke0JsnpPxcrX6r0x_9hiRusg_2PyMKmAXhk5peyQxSe_sG4ssSK_foPMSHKiYgcYmkXBE8yW8xAi2p1x0y_jyDn4aFgNkJzBLf8WBIXxNmyxRd-QqIqyd4bNMPkeJpdd4/s1600/IMG_20160926_225738894.jpg" imageanchor="1"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVIw4z1WnrH-ke0JsnpPxcrX6r0x_9hiRusg_2PyMKmAXhk5peyQxSe_sG4ssSK_foPMSHKiYgcYmkXBE8yW8xAi2p1x0y_jyDn4aFgNkJzBLf8WBIXxNmyxRd-QqIqyd4bNMPkeJpdd4/s640/IMG_20160926_225738894.jpg" width="640" /></a></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">A bare BeagleLogic PCB and LCD+CapTouch board, some sort of line scan CCD board, a bunch of random components, a couple motors, and a small LCD.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7ycL6REoTXkCoBxVKa9jTQtJHXhL0R2lhhQlAlOl8Ss_u4l2vIgDYzfxqzW_4tKDtn_EMS-pIv7Nt541-f8F8vu7KgFSN3bWCd5j1THIYFQpnNNq09uwCDysBf3PO6XnsaJjvVhaHt9E/s1600/IMG_20160926_225743355.jpg" imageanchor="1"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7ycL6REoTXkCoBxVKa9jTQtJHXhL0R2lhhQlAlOl8Ss_u4l2vIgDYzfxqzW_4tKDtn_EMS-pIv7Nt541-f8F8vu7KgFSN3bWCd5j1THIYFQpnNNq09uwCDysBf3PO6XnsaJjvVhaHt9E/s640/IMG_20160926_225743355.jpg" width="640" /></a></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">A couple of standard character LCDs and some LED assemblies.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
</div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSA0E3HNup0MhzojnZAkAEKwueJa9OdBRiEYNQowPSvI4Kun9pVld0qZdGkotcTcSAa9_e2PyG_qgTzMcEtRsoUqLx_IxNh9PFcWGmH3xJ7EcoG1JC61Ucnb5KPkV3BAouUOjTekmd9Lk/s1600/IMG_20160926_222521922.jpg" imageanchor="1"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSA0E3HNup0MhzojnZAkAEKwueJa9OdBRiEYNQowPSvI4Kun9pVld0qZdGkotcTcSAa9_e2PyG_qgTzMcEtRsoUqLx_IxNh9PFcWGmH3xJ7EcoG1JC61Ucnb5KPkV3BAouUOjTekmd9Lk/s640/IMG_20160926_222521922.jpg" width="640" /></a></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">A TI dev board, a couple LCDs, a PIC programmer, a busted reflow oven controller, MAX7219 based dot matrix LED kits, an NXP dev board, and some other miscellaneous stuff.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjIuRzbIUiBVYjn2OGyteO1VMNJbGU99i_E6WbeUvj9rF3OqhrL5jfNMrqoB_tkfmcW79vaJEnQrYZDx4HHkHTfslCV3qdZLU_KIyeg54Qu0MUf6000_3M8bM2gs3Ya0Bd0Xt6A0soCy4/s1600/IMG_20160926_222110827.jpg" imageanchor="1"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjIuRzbIUiBVYjn2OGyteO1VMNJbGU99i_E6WbeUvj9rF3OqhrL5jfNMrqoB_tkfmcW79vaJEnQrYZDx4HHkHTfslCV3qdZLU_KIyeg54Qu0MUf6000_3M8bM2gs3Ya0Bd0Xt6A0soCy4/s640/IMG_20160926_222110827.jpg" width="640" /></a></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">A large selection of various integrated circuits, some large green LEDs, vintage transistors.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKvV273kndLzO1BxjlTTiDocnqCIlERG-MPsCP7FkVya2AQcNZHTTAq7GFC3tjXHBNnVnHSatppLF5WoKHcoTAGkAUDldDAC6aNffcaTj6XoJa2WX4rRpsEdHZNBHzxRBSv3yixeF31CQ/s1600/IMG_20160926_214830575.jpg" imageanchor="1"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKvV273kndLzO1BxjlTTiDocnqCIlERG-MPsCP7FkVya2AQcNZHTTAq7GFC3tjXHBNnVnHSatppLF5WoKHcoTAGkAUDldDAC6aNffcaTj6XoJa2WX4rRpsEdHZNBHzxRBSv3yixeF31CQ/s640/IMG_20160926_214830575.jpg" width="640" /></a></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">A bunch of small plastic boxes of integrated circuits.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhem_CyEN8LsBz898Dsi0Y-NyQKbBP7FkcpZxYcMpU7U3DxVimtlUnrYom2vh375ct5QkfgOnshAcjmtdT3hjuuICooHfKtaYmdtC8NDj_9vkMUNGsjIAgPizkrhvgu_UApLnG5sqq6k-s/s1600/IMG_20160926_220316911.jpg" imageanchor="1"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhem_CyEN8LsBz898Dsi0Y-NyQKbBP7FkcpZxYcMpU7U3DxVimtlUnrYom2vh375ct5QkfgOnshAcjmtdT3hjuuICooHfKtaYmdtC8NDj_9vkMUNGsjIAgPizkrhvgu_UApLnG5sqq6k-s/s640/IMG_20160926_220316911.jpg" width="640" /></a></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">An MB Quart speaker crossover, Vivitar camcorder, Apple charger, Zune MP3 player, and a little orange rover car.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijEfUTCqAujHv06PWhIge_MequSkAiwL37tRQEUsnRv87EqMbyDDwO0ZppgnOO4YRoF_hGB1L50-Iiw00Yqva9ZV_JCTSEokAmqASxI9y1ZS6ng6WW5gvkjPfKvhhOEMfSEGfbRH82tUA/s1600/IMG_20160926_225748446.jpg" imageanchor="1"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijEfUTCqAujHv06PWhIge_MequSkAiwL37tRQEUsnRv87EqMbyDDwO0ZppgnOO4YRoF_hGB1L50-Iiw00Yqva9ZV_JCTSEokAmqASxI9y1ZS6ng6WW5gvkjPfKvhhOEMfSEGfbRH82tUA/s640/IMG_20160926_225748446.jpg" width="640" /></a></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">A bunch of Geppetto Electronics PCBs. Most unpopulated. A few GPS oscillators, AVR programmers, PiPower boards, Divide by 3 circuit.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKE3Pfyg6MdtEl-FQYgaaRbUlJfuHGqanR_-Ed5pKhDoJSxl1LW3xLgHsfu9vHjqzSl7bzc8AMmpVGZUe-FAhoRwKrWrIjprmo60Wid_4p8uMvUj9ujsqYwJ9NdnM807B-m-riVK9PYNM/s1600/IMG_20160926_223834023.jpg" imageanchor="1"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKE3Pfyg6MdtEl-FQYgaaRbUlJfuHGqanR_-Ed5pKhDoJSxl1LW3xLgHsfu9vHjqzSl7bzc8AMmpVGZUe-FAhoRwKrWrIjprmo60Wid_4p8uMvUj9ujsqYwJ9NdnM807B-m-riVK9PYNM/s640/IMG_20160926_223834023.jpg" width="640" /></a></div>
<div style="line-height: 100%; margin-bottom: 0in;">
</div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">A panel of Crazy Clock PCBs, and an empty panel of some other small PCB. Some smart cards to go with the card reader board, a Parallax RFID reader and an RFID card. Another programmer board, a Cypress PSOC development board, some addressable LEDs wired together, a motor, and some heat shrink.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">What I took from the box:</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOezRXDMua1MHHoTJUbyiPKMdAIvEntFGOR6X6pdiCwLTT1ZXJlOD7O6xDsASiSCFGc8KxLFkHb85iECnfy-XS__cY972QuqIxeNd0rUa8d6PNl_eruWm_u-0hy3k65cTy2zAFn2b-SNc/s1600/IMG_20161008_132600298_HDR.jpg" imageanchor="1"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOezRXDMua1MHHoTJUbyiPKMdAIvEntFGOR6X6pdiCwLTT1ZXJlOD7O6xDsASiSCFGc8KxLFkHb85iECnfy-XS__cY972QuqIxeNd0rUa8d6PNl_eruWm_u-0hy3k65cTy2zAFn2b-SNc/s640/IMG_20161008_132600298_HDR.jpg" width="640" /></a></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">The Parallax RFID card reader and RFID card. I’ve never done an RFID project so I thought this would be interesting.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">The BeagleBone BeagleLogic PCB. I have a BeagleBone Black board that I haven’t done much with, so this could be an interesting project and a chance to learn more about the BeagleBone board.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">One of the Max7219 LED dot matrix kits, some stickers, three Crazy Clock PCBs (there’s 24 left), and one of the USB ISP programmers.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">One of the Geppetto Electronics GPS disciplined oscillator boards.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">What I put in the box:</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8nmmYM0oos7hY3o-wHvE78lpUrwGLOgKHN7I2tivphyGPgpLM35nZjz8k1WLfueNP3xq-6lpuiBaSJ3_ye8kRiUMEf-4PBbQf_nUyMCWjj65eUemWWU75Xow21vFTXyWCqJB2G7HbXFE/s1600/IMG_20161008_132114534.jpg" imageanchor="1"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8nmmYM0oos7hY3o-wHvE78lpUrwGLOgKHN7I2tivphyGPgpLM35nZjz8k1WLfueNP3xq-6lpuiBaSJ3_ye8kRiUMEf-4PBbQf_nUyMCWjj65eUemWWU75Xow21vFTXyWCqJB2G7HbXFE/s640/IMG_20161008_132114534.jpg" width="640" /></a></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">One of my favorite components for motor control or other high current designs is the IXYS IXFN200N07 MOSFET. This is not your average MOSFET. It’s rated for 70 Volts and 200 Amps. And that’s not just a theoretical die current that you can never achieve, like with these MOSFETs that claim ridiculous currents but come in a TO-220 package that can’t dissipate the heat that would be created if the leads into the part didn’t melt first. These IXYS parts come in a package called a SOT-227B, which sounds like another small surface mount package but it’s really a large block with screw terminals on the top. Not your average MOSFET. </span> </div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">Someone could build a really high current H Bridge to control a motor, or maybe a high current dummy load. Bolt them to an old computer CPU heatsink and you could control a lot of current.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
</div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">I realized that not everything in the box has to be strictly electronic. So I added a small bag with an assortment of terminals. Also a few microswitches that maybe could be used as limit switches in a 3D printer or whatever motorized device ends up being controlled by those giant MOSFETs. </span> </div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">I threw in a webcam PCB. It’s probably not useful for anything but I like how you can see the whole sensor chip and the bond wires.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">Also I threw in a couple PCBs with jacks for Left/Right audio, Composite video, and S-Video. Useful for any audio project or anything that needs a few RCA jacks.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">And last, but not least, I threw in a back light inverter board. It’s an interesting design with a novel flat transformer. Maybe someone can use or misuse it for some sort of high voltage project.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">Oh, I almost forgot that I added a nice Maxxon DC gear motor. And a couple packs of “screen wipes.” They are very nice for cleaning anything from your phone screen to camera lenses to the LCDs in the box.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
</div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">The box had been crushed a bit in shipping so I decided to reinforce it a bit. I glued a layer of cardboard to the inside sides of the box, then glued pieces in the corners for double reinforcement. It should travel better now. I had thought about replacing the box but I thought it would be better to keep it going with all the tape and stuff on it as it adds character to the box.</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<span style="font-family: "arial" , sans-serif;">I made a video of some of the contents of the box, discussed a few items, and showed what I took and what I put in:</span></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/ORAGeiTSjVc/0.jpg" frameborder="0" height="532" src="https://www.youtube.com/embed/ORAGeiTSjVc?feature=player_embedded" width="640"></iframe></div>
<div style="line-height: 100%; margin-bottom: 0in;">
</div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0in;">
<br /></div>
Carl Smithhttp://www.blogger.com/profile/04722618854308051543noreply@blogger.com0tag:blogger.com,1999:blog-6561708700497115431.post-1018760508105970882016-09-17T10:42:00.002-07:002016-09-17T10:42:59.636-07:00Unboxing Dell Inspiron 15 7000 Series Laptop Model 7569Since unboxing videos seem to be popular on YouTube I did a video when I received my new Dell Inspiron 15-7569 laptop. I discuss what I was looking for when shopping for a new laptop, and how I ended up selecting this model, and my first impressions.<br />
<br />
I had two specific requirements I was looking for. First was a 500GB or larger solid state hard drive. I'd never used a computer with an SSD before but I kept hearing that using an SSD makes a huge difference on how fast a computer runs. Turns out this was a hard requirement to meet at any reasonable price. I found many laptops with 250GB SSDs but few with 500GB or bigger.<br />
<br />
The second requirement was a 15.6 inch HD screen with an IPS panel. My previous laptop, the Toshiba that is the subject of my hinge repair videos, has a 720 screen with a cheap panel. The viewing angle was so small that if you move a little bit up or down the top or bottom of the screen washes out or the colors go wrong. I was constantly adjusting the screen angle to make it look right, which may have contributed to wear on the hinges. I wanted something better this time. I had looked at laptops with HD screens in the local stores and text was much clearer and easier to read.<br />
<br />
I also wanted a touch screen. Not sure why as I don't use it a lot, but I had one on the previous laptop. I figured a 2-in-1 would make the touch screen more useful since I could flip the screen back and use it as a tablet. <br />
<br />
But this is where I found that laptop configurations are like car option packages. If you want a 500 GB SSD and an IPS HD screen, you also have to get the fast i7-6500U processor, 12GB of RAM, AC wireless, a back lit keyboard. All features that add to the price. I ended up spending much more than I had planned, but in this situation it's a bit of you get what you pay for. Watch the video below for more details...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/rQlF3XDaG_Y/0.jpg" frameborder="0" height="532" src="https://www.youtube.com/embed/rQlF3XDaG_Y?feature=player_embedded" width="640"></iframe></div>
<br />Carl Smithhttp://www.blogger.com/profile/04722618854308051543noreply@blogger.com0tag:blogger.com,1999:blog-6561708700497115431.post-64253958530729849692016-07-09T22:00:00.000-07:002016-07-09T22:00:48.291-07:00Estes ProtoX Quadcopter Motor Replacement<span style="font-family: "arial" , "helvetica" , sans-serif;">In my latest YouTube video I show how to replace a damaged motor in an Estes ProtoX quadcopter. I received one as a gift, and bumped it into a wall when flying it and damaged one of the motors. The local RC hobby shop had replacements, so I picked up a set and filmed a video on how to remove the bad motor and replace it. Note that there are <span style="font-family: "arial" , "helvetica" , sans-serif;">two kinds of motors, <span style="font-family: "arial" , "helvetica" , sans-serif;">one rot<span style="font-family: "arial" , "helvetica" , sans-serif;">ates one way <span style="font-family: "arial" , "helvetica" , sans-serif;">a<span style="font-family: "arial" , "helvetica" , sans-serif;">nd the other rot<span style="font-family: "arial" , "helvetica" , sans-serif;">ates t<span style="font-family: "arial" , "helvetica" , sans-serif;">be other way. The direction of rotation is indicated by the color of the wires attached to the<span style="font-family: "arial" , "helvetica" , sans-serif;"> motor. One kind has <span style="font-family: "arial" , "helvetica" , sans-serif;">w<span style="font-family: "arial" , "helvetica" , sans-serif;">hi<span style="font-family: "arial" , "helvetica" , sans-serif;">te and black wires, the other <span style="font-family: "arial" , "helvetica" , sans-serif;">has red and blue wires.<span style="font-family: "arial" , "helvetica" , sans-serif;"> You m<span style="font-family: "arial" , "helvetica" , sans-serif;">ust use one of the same color wires when doing the replacement <span style="font-family: "arial" , "helvetica" , sans-serif;">or the motor will spi<span style="font-family: "arial" , "helvetica" , sans-serif;">n the wrong way. A<span style="font-family: "arial" , "helvetica" , sans-serif;">lso, be sure to connect the wires <span style="font-family: "arial" , "helvetica" , sans-serif;">with the proper polarity. On <span style="font-family: "arial" , "helvetica" , sans-serif;">t<span style="font-family: "arial" , "helvetica" , sans-serif;">he white/black motor<span style="font-family: "arial" , "helvetica" , sans-serif;">s<span style="font-family: "arial" , "helvetica" , sans-serif;"> the white wire <span style="font-family: "arial" , "helvetica" , sans-serif;">sh<span style="font-family: "arial" , "helvetica" , sans-serif;">ould be connected to the point on the PCB<span style="font-family: "arial" , "helvetica" , sans-serif;"> with the "<span style="font-family: "arial" , "helvetica" , sans-serif;">+<span style="font-family: "arial" , "helvetica" , sans-serif;">." On the <span style="font-family: "arial" , "helvetica" , sans-serif;">red/bl<span style="font-family: "arial" , "helvetica" , sans-serif;">ue motors, the red wire should be connected to the point marked with a "+."</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span> <br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/8VwzZE3CsY0/0.jpg" frameborder="0" height="532" src="https://www.youtube.com/embed/8VwzZE3CsY0?feature=player_embedded" width="640"></iframe></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span>Carl Smithhttp://www.blogger.com/profile/04722618854308051543noreply@blogger.com3tag:blogger.com,1999:blog-6561708700497115431.post-13536863780916973832016-04-24T12:25:00.001-07:002016-04-24T12:25:59.940-07:00Battery Pack Failure PreventionIn my first YouTube video I showed the failure of a power tool battery pack that I had rebuilt with new cells I bought online. The cells have great capacity and long life, but they have one problem. The thin plastic heat shrink coating fails if the cells rub against each other, causing an internal short that causes the pack to overheat and fail.<br />
<br />
In this video I show how I added paper separators between the cells to prevent the failures. I cut paper strips and slid them in between the cells of the existing packs, in a winding pattern, to prevent shorts. At the end I show how I wrapped every second cell with individual pieces of paper when I built a new battery pack.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/LKr-F1M69mk/0.jpg" frameborder="0" height="532" src="https://www.youtube.com/embed/LKr-F1M69mk?feature=player_embedded" width="640"></iframe></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />Carl Smithhttp://www.blogger.com/profile/04722618854308051543noreply@blogger.com0tag:blogger.com,1999:blog-6561708700497115431.post-11518585818007899502016-04-03T18:30:00.001-07:002016-04-03T18:30:20.737-07:00Craftsman Garage Door Opener Remote RepairMy Craftsman pocket size key chain garage door opener remote quit working. In this video I take it apart, diagnose the problem, and repair the remote. I also show how you can check if the remote is transmitting using a software defined radio dongle.<br />
<br />
I found a bad solder joint, but the solder joint was not cracked, it looked more like the solder never properly flowed onto the part lead when it was soldered, so that was probably not the reason the remote quit working since it was likely manufactured that way and had been working for a couple years. <br />
<br />
Shortly after I bought it, the little plastic loop on the corner where you attach your key ring broke off, as I am sure happens to every single one of these things ever manufactured, so I replaced it with a small loop of large paper clip wire that I bent into a loop shape. It turns out that one of the ends of the wire loop had been hitting the circuit board and wore through a trace. I show how to repair the trace, resolder the bad joint, and fix the problem with the wire loop so it doesn't happen again.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/tWWFDble-mE/0.jpg" frameborder="0" height="533" src="https://www.youtube.com/embed/tWWFDble-mE?feature=player_embedded" width="640"></iframe></div>
<br />Carl Smithhttp://www.blogger.com/profile/04722618854308051543noreply@blogger.com0tag:blogger.com,1999:blog-6561708700497115431.post-88415123081512682942016-03-28T19:21:00.002-07:002016-03-28T19:21:42.373-07:00Power Strip FAILAbout a week ago I posted a new video on my YouTube channel where I take apart a power strip that failed on me one day with a loud bang, to see what is inside and how it failed.<br />
<br />
One day I was using my desktop computer when it shut down with a bang. I thought the computer's power supply had failed, but it turned out that it was just the power strip. The power switch was stuck half way between off and on. I look at the construction inside, the poor build quality, and how some of the contacts in the outlets are bent back enough that I am surprised the cords plugged in were actually making contact, and I disassemble the failed switch.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/1JxhVVa6ESk/0.jpg" frameborder="0" height="533" src="https://www.youtube.com/embed/1JxhVVa6ESk?feature=player_embedded" width="640"></iframe>Carl Smithhttp://www.blogger.com/profile/04722618854308051543noreply@blogger.com0tag:blogger.com,1999:blog-6561708700497115431.post-2570117165210299522016-01-26T18:14:00.001-08:002016-01-26T18:14:53.746-08:00Self Igniting Propane Torch RepairRecently I decided to build a fire in my good old-fashioned wood fireplace, and like any well prepared Boy Scout, I planned to light it up the easy way, with my propane torch. I screwed on the propane bottle and before I even had it tightened, I heard the sound of propane leaking. My first thought was that the valve was not closed, but I tried to give it a quick clockwise turn and it did not move. The valve was closed tight. I realized the sound was actually coming from the inside of the torch handle, so I quickly removed the propane bottle.<br />
<br />
When I disassembled the handle to diagnose the problem and make a repair, I also found that the wire clip that connects the ignitor button to the valve body clips on very loosely, and because of this, if the button were pressed, a spark could have occurred inside the handle where the propane was leaking, and the torch could possibly have exploded in my hand. Any combustible gas has a certain ratio of air to gas to be able to ignite, and too far outside that range and the gas won't burn. I don't know how wide that range is with propane, and therefore how likely ignition of the propane inside the handle would be, but the chances are greater than zero.<br />
<br />
But, back on the failure. I disassembled the torch and found the tube that connects the bottle fitting to the valve was no longer properly attached to the bottle fitting. In the video I show this failure, provide a quick discussion on how the torch works, and I perform a repair and demonstrate that the torch is working again.<br />
<br />
I do not know when this failure occurred. The torch worked fine last time I used it. Therefore, for safety reasons, I do not recommend leaving a propane bottle attached to a torch when it is not in use and being monitored by someone qualified to assure that it is working properly. And do not press the ignitor button on a torch if you have any reason to believe it could be leaking propane or is not otherwise in perfect working order.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/TXO29_HAMq0/0.jpg" frameborder="0" height="533" src="https://www.youtube.com/embed/TXO29_HAMq0?feature=player_embedded" width="640"></iframe></div>
<br />Carl Smithhttp://www.blogger.com/profile/04722618854308051543noreply@blogger.com0tag:blogger.com,1999:blog-6561708700497115431.post-82855976149885841092015-11-02T20:34:00.000-08:002015-11-02T20:34:11.658-08:00Toshiba Satellite L55t Laptop Hinge RepairA couple months ago I shot some video of my method of repairing the broken hinges on my Toshiba L55t laptop computer and only recently got it edited and uploaded to YouTube. At the time it was about 9 months old. The hinges broke free from their mounting points inside the LCD panel. When opening or closing the lid, the torque on the hinges would pop open the corners of the LCD panel.<br />
<br />
Opening the panel, I found that the hinges were fastened to the plastic back shell of the LCD panel by several threaded brass inserts that were pressed into plastic rings, each ring having several tiny radial supports. They broke completely free and when I opened the panel, the screw, nut, and surrounding plastic just fell out. This is a faulty design that clearly is not strong enough to withstand even the force of normal usage.<br />
<br />
I repaired the hinges by totally disassembling the laptop and LCD panel, gluing the brass insert nuts back in position with superglue and then surrounding them with epoxy for support. Last, I filled the whole area where the hinge attaches with additional epoxy before screwing the hinges back in place.<br />
<br />
Part One of the video contains a discussion of the problem, and shows the disassembly of the laptop and my preparations for the repair.<br />
<br />
Part Two shows the repair process and reassembly of the panel and laptop.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/5ZLAisnFDrg/0.jpg" frameborder="0" height="533" src="https://www.youtube.com/embed/5ZLAisnFDrg?feature=player_embedded" width="640"></iframe></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/N2bTiMnv0KU/0.jpg" frameborder="0" height="533" src="https://www.youtube.com/embed/N2bTiMnv0KU?feature=player_embedded" width="640"></iframe></div>
<br />
If you like the videos don't forget to subscribe to my YouTube channel and hit the old Thumbs Up under the video.<br />
<br />Carl Smithhttp://www.blogger.com/profile/04722618854308051543noreply@blogger.com0tag:blogger.com,1999:blog-6561708700497115431.post-82896567225870899772015-08-17T18:54:00.001-07:002015-08-17T19:31:41.219-07:00How to Void the Warranty on Your Laptop<span style="font-family: inherit;"><span style="font-size: small;">Back in November 2014 I purchased a Toshiba Satellite L55t laptop computer. I thought I got a great deal on it, and in the past Toshiba laptops have been very reliable at places I have worked. But this proved not to be the case with this one. So I had to tear it apart to fix the hinges, which broke completely free inside the LCD panel. I shot a quick video just to show it in it's disassembled state. A longer video will follow showing the problem and my attempt at fixing it.</span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/LM45zcgF_5I/0.jpg" frameborder="0" height="426" src="https://www.youtube.com/embed/LM45zcgF_5I?feature=player_embedded" width="512"></iframe></div>
<br />
<br />Carl Smithhttp://www.blogger.com/profile/04722618854308051543noreply@blogger.com0tag:blogger.com,1999:blog-6561708700497115431.post-8371312407423850812015-06-26T19:06:00.000-07:002015-06-26T19:25:44.253-07:00Power Tool Battery Failure AnalysisMy first YouTube video is about a power tool battery pack that I rebuilt about a year ago. It failed recently, melting the case a bit, and damaging several of the cells inside. In the video I discuss what went wrong and a couple possibilities on fixing the issue in other battery packs I rebuilt with new cells.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/hNo9SHk7Cdo/0.jpg" frameborder="0" height="420" src="https://www.youtube.com/embed/hNo9SHk7Cdo?feature=player_embedded" width="512"></iframe></div>
<br />
About a year ago I rebuilt several power tool battery packs with new Sub-C NiCd cells I bought online. For the last year they have worked great. My Dad has used several on a regular basis and he said they have better capacity than the original cells and a year later they are still going strong.<br />
<br />
Except for one that quit rather suddenly a while back. It was working normally, and he put the cordless drill down and not long after smelled something burning. He ran around and checked a bunch of stuff and found that the battery pack on the cordless drill was very hot. The cells had overheated, melted the case a bit, and then failed. <br />
<br />
I opened the pack up to find that four of the cells in the pack were damaged. They measured zero volts, and one was burned on the ends. Inspecting the cells showed that the thin heat shrink covering on the cells that were damaged had split. But that was just a symptom of the cells overheating, not the cause. I found a spot on two cells that had rubbed together, causing four cells to short circuit through the case of a fifth cell.<br />
<br />
Watch the video to see the damage and my discussion of how possibly to prevent the issue from occurring again.Carl Smithhttp://www.blogger.com/profile/04722618854308051543noreply@blogger.com0tag:blogger.com,1999:blog-6561708700497115431.post-50748782037646270032015-06-24T18:46:00.000-07:002015-06-24T22:11:46.753-07:00Software Creates Ownership of Hardware?<b>For my first post I thought I'd share something I wrote about a month ago on my Facebook page: </b><br />
<br />
Remember the thing a while ago about John Deere saying that
farmers <b>don't own their tractors</b> because the computer software that runs
the tractor's control systems is copyrighted by John Deere? <b>Now
General Motors is making the same claim about their cars.</b><br />
<br />
<span data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1"><span data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.0"></span><span data-ft="{"tn":"K"}" data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body"><span class="UFICommentBody _1n4g" data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0"><span data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.0"><span data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.0.$end:0:$text0:0">So
here's my take: It has been a long standing thing that when you buy
computer software, such as Windows or Photoshop, that you don't actually
buy it, you just buy a long term license to use it. This allows the
manufacturer to retain rights that al</span></span><span data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3"><span data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0"><span data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text0:0">low
them to prevent you from misusing the software, such as stealing parts
of the code for other uses, or making modifications to the software. </span><br data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text1:0" /><br data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text3:0" /><span data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text4:0">I
have no problem with that aspect of this situation. GM, and John
Deere, can claim copyright and ownership of their software even when it
is in your tractor or your car. They can tell you that you are not
allowed to modify the software. This is in their best interest. If you
reprogram your tractor's engine control unit to somehow put out a bunch
of extra horsepower you are running the tractor outside their design
limits. I also don't really have a problem if they were to tell you
that if they have found that you have modified their software that your
warranty is instantly null and void, since you are now pushing things
beyond the limits they designed it for.</span><br data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text5:0" /><br data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text7:0" /><b><span data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text8:0">But I don't see how John Deere or GM can claim ownership of the tractors or cars that contain their software.</span></b><br data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text9:0" /><br data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text11:0" /><span data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text12:0">Back
to the computer analogy. Even though Microsoft retains rights to
Windows and Adobe retains right to Photoshop when they are installed on
my computer, that does not mean they own my computer. I own the
computer, and I have every right to remove Windows at my whim and
install Linux, or remove Photoshop and install some other photo editing
software.</span><br data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text13:0" /><br data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text15:0" /><span data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text16:0">The
same should apply to John Deere and GM. We own the cars. We own the
tractors. We may not be allowed to modify their software, but if we
could obtain replacement software, we should be able to install that and
keep ownership and use of the tractor or the car, and do whatever we
want. GM doesn't own a car, and John Deere doesn't own a tractor, just
because it contains their software, <b>any more than Microsoft owns my
laptop because it contains Windows.</b></span><br data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text17:0" /><br data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text19:0" /><span data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text20:0">Some
people believe that GM is doing this to push out independent auto
repair businesses and auto parts stores. If a garage can't get the scan
tools and such to work on a car you'd have to take it back to the
dealer. I don't believe that retaining ownership of the software gives
GM this right either.</span><br data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text21:0" /><br data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text23:0" /><span data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text24:0">Back
to the computer analogy. Microsoft still "owns" the Windows OS on my
laptop. That doesn't prevent many other software companies from writing
programs that can look into the Windows OS and see what it is doing,
such as task manager programs, software that monitors disk or memory
usage, or programs that fix issues in Windows to increase performance.</span><br data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text25:0" /><br data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text27:0" /><span data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text28:0">So
independent auto repair shops still have the right to plug in a scan
tool to monitor the performance of your engine or any other system in
the car. GM retaining copyright on the software doesn't prevent this.
The independent shop still has the right to change any parameters that
the scan tool allows them to tune, just as I can change settings in
Windows to tune how my computer works.</span><br data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text29:0" /><br data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text31:0" /><span data-reactid=".2.1:4:1:$comment1583585565257978_1583594428590425:0.0.$right.0.$left.0.0.1.$comment-body.0.3.0.$end:0:$text32:0">These
concepts have been legally established long ago in the world of
software licensing, <b>and they apply the same to cars and tractors as to
my computer.</b></span></span></span></span></span></span> <br />
<br />Carl Smithhttp://www.blogger.com/profile/04722618854308051543noreply@blogger.com0