<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Raleigh Littles</title>
    <description>The latest articles on DEV Community by Raleigh Littles (@raleighlittles).</description>
    <link>https://dev.to/raleighlittles</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F125437%2F7d72cac7-10c4-48a9-85fe-7fd8823b6a6a.png</url>
      <title>DEV Community: Raleigh Littles</title>
      <link>https://dev.to/raleighlittles</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/raleighlittles"/>
    <language>en</language>
    <item>
      <title>Analyzing Super Nintendo World's Power-Up band</title>
      <dc:creator>Raleigh Littles</dc:creator>
      <pubDate>Sat, 01 Apr 2023 04:50:47 +0000</pubDate>
      <link>https://dev.to/raleighlittles/analyzing-super-nintendo-worlds-power-up-band-202k</link>
      <guid>https://dev.to/raleighlittles/analyzing-super-nintendo-worlds-power-up-band-202k</guid>
      <description>&lt;h1&gt;
  
  
  Background context
&lt;/h1&gt;

&lt;p&gt;Nintendo sells "Power-Up Band™" wristbands for use at their Super Mario World locations. These wristbands are used for keeping track of score information on different rides and games at their parks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.universalstudioshollywood.com/web/en/us/things-to-do/entertainment/key-challenges" rel="noopener noreferrer"&gt;https://www.universalstudioshollywood.com/web/en/us/things-to-do/entertainment/key-challenges&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.wdwnt.com%2F2023%2F01%2Fush-snw-power-up-bands-options-134026.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.wdwnt.com%2F2023%2F01%2Fush-snw-power-up-bands-options-134026.jpg" alt="power-up-bands-image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  About device
&lt;/h1&gt;

&lt;p&gt;On the back, apart from the Nintendo logo is the text:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;56674-P-300006-1022&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  QR code
&lt;/h2&gt;

&lt;p&gt;The back of the wristband also has a QR code, used to pair the device to an account using the Nintendo app on a smartphone.&lt;/p&gt;

&lt;p&gt;My band's QR code data is:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;011101000000000000000590880000000000FF03&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  NFC data
&lt;/h2&gt;

&lt;p&gt;The band uses NFC to communicate with rides at the park. Using a simple NFC reader and &lt;a href="https://linux.die.net/man/8/pcscd" rel="noopener noreferrer"&gt;&lt;code&gt;pcscd&lt;/code&gt;&lt;/a&gt;, we can read the data from it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Fri Mar 31 20:16:52 2023
 Reader 0: ACS ACR122U 00 00
  Event number: 1
  Card state: Card inserted, 
  ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00 68

ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00 68
+ TS = 3B --&amp;gt; Direct Convention
+ T0 = 8F, Y(1): 1000, K: 15 (historical bytes)
  TD(1) = 80 --&amp;gt; Y(i+1) = 1000, Protocol T = 0 
-----
  TD(2) = 01 --&amp;gt; Y(i+1) = 0000, Protocol T = 1 
-----
+ Historical bytes: 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00
  Category indicator byte: 80 (compact TLV data object)
    Tag: 4, len: F (initial access data)
      Initial access data: 0C A0 00 00 03 06 03 00 03 00 00 00 00
+ TCK = 68 (correct checksum)

Possibly identified card (using /home/raleigh/.cache/smartcard_list.txt):
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00 68
3B 8F 80 01 80 4F 0C A0 00 00 03 06 .. 00 03 00 00 00 00 ..
    MIFARE Ultralight (as per PCSC std part3)
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00 68
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 .. .. 00 00 00 00 ..
    RFID - ISO 14443 Type A Part 3 (as per PCSC std part3)
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00 68
    RFID - ISO 14443 Type A - NXP Mifare Ultralight or UltralightC
    Tempmate S1 Data Logger (Other)
    https://www.tempmate.com/
    prepaid bus card (Transport)
    https://www.t-l.ch/abos-billets/billets/carte-prepayee
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This output tells us that the wristband uses a &lt;a href="https://en.wikipedia.org/wiki/MIFARE#MIFARE_Ultralight_family" rel="noopener noreferrer"&gt;MIFARE Ultralight&lt;/a&gt; NFC chip internally.&lt;/p&gt;

&lt;p&gt;To read the data off the NFC chip, we'll use:&lt;code&gt;nfc-mfultralight&lt;/code&gt;&lt;a href="https://manpages.ubuntu.com/manpages/xenial/man1/nfc-mfultralight.1.html" rel="noopener noreferrer"&gt;https://manpages.ubuntu.com/manpages/xenial/man1/nfc-mfultralight.1.html&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NFC device: ACS / ACR122U PICC Interface opened
1 ISO14443A passive target(s) found:
    046b2eb2e81090
Using MIFARE Ultralight card with UID: 046b2eb2e81090
WARNING: Tag is EV1 or NTAG - PASSWORD may be required
NTAG Type: NTAG216 (888 user bytes)
Reading 231 pages |.......................................................................................................................................................................................................................................|
Done, 231 of 231 pages read (0 pages failed).
Writing data to file: mario.mfd ... Done.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's the raw output of my dumped file (mario.mfd):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;046b2eb2e810900044000fe0f110ffeea50000009f9b3f450e8f58601127
c2a86618b59003bbf2fdec0e18525e6c85a5a7b3938a9ca7458bb0a3e7b2
5eb04cfe22c2fd282e588e0037476e6543cc263541bd6fbe00000003039b
ff02aabbccdd454741df649658422f4e4d304b3c3cc656eab11fe104c0ac
9d59ce7d426cb9e09345bdbe48ebe2702134d9d14f0c2a1c7242456822ce
6794c933af0064cfd8435b9c3e3361699f2cef194cea7b3207b2d00e8e56
0cdc2ed77eedd1b1ca6f7f443b3ea5fef403a12dc2686a385da30391e7fb
d8c8cee3491501130ea68fe71e99c6ef76025bdb28ccbd59e34596ca5315
2d91b2b6d9a357a3cfd186f1fe2c7663fc0b61834797bc4383627e7489ce
95596f326166afea5713923f4d6c7e6c6ec3e0de9412b657f6256b348e45
b74b1d7d8c6f4cbab0eabcaa4333fe5601864b7b25e7d8a4dd8423d13329
89579559ab7a692c24b2f49f3371a1c6ed5a60c5cb33c8f782d825f1a606
e598beb5e21f6881a1e63e025f9fd2f459934d442932ff12c988afdbb2a6
26164db2c2f1e0bbc68cc7aa75b512cd63202996b4c93239aaef62c24c91
092eb722ba55ceea486392b6c10c6723379c1654f7169d577cff3a8ac069
528579f38f17dfefee9bfda7b7afe575778d85c29eafc03ce53cf123372e
7fd5202a1a9acfa3177086555c2084206dfea3b437d559f1a73d18ddd648
287a33451541d6c9641e01000f00000000045f0000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000303131313031303030303030303030303030303030353930
383830303030303030303030464630330000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000001011f0000000004070000000000000000000000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the formatted version via hexdump:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;00000000  04 6b 2e b2 e8 10 90 00  44 00 0f e0 f1 10 ff ee  |.k......D.......|
00000010  a5 00 00 00 9f 9b 3f 45  0e 8f 58 60 11 27 c2 a8  |......?E..X`.'..|
00000020  66 18 b5 90 03 bb f2 fd  ec 0e 18 52 5e 6c 85 a5  |f..........R^l..|
00000030  a7 b3 93 8a 9c a7 45 8b  b0 a3 e7 b2 5e b0 4c fe  |......E.....^.L.|
00000040  22 c2 fd 28 2e 58 8e 00  37 47 6e 65 43 cc 26 35  |"..(.X..7GneC.&amp;amp;5|
00000050  41 bd 6f be 00 00 00 03  03 9b ff 02 aa bb cc dd  |A.o.............|
00000060  45 47 41 df 64 96 58 42  2f 4e 4d 30 4b 3c 3c c6  |EGA.d.XB/NM0K&amp;lt;&amp;lt;.|
00000070  56 ea b1 1f e1 04 c0 ac  9d 59 ce 7d 42 6c b9 e0  |V........Y.}Bl..|
00000080  93 45 bd be 48 eb e2 70  21 34 d9 d1 4f 0c 2a 1c  |.E..H..p!4..O.*.|
00000090  72 42 45 68 22 ce 67 94  c9 33 af 00 64 cf d8 43  |rBEh".g..3..d..C|
000000a0  5b 9c 3e 33 61 69 9f 2c  ef 19 4c ea 7b 32 07 b2  |[.&amp;gt;3ai.,..L.{2..|
000000b0  d0 0e 8e 56 0c dc 2e d7  7e ed d1 b1 ca 6f 7f 44  |...V....~....o.D|
000000c0  3b 3e a5 fe f4 03 a1 2d  c2 68 6a 38 5d a3 03 91  |;&amp;gt;.....-.hj8]...|
000000d0  e7 fb d8 c8 ce e3 49 15  01 13 0e a6 8f e7 1e 99  |......I.........|
000000e0  c6 ef 76 02 5b db 28 cc  bd 59 e3 45 96 ca 53 15  |..v.[.(..Y.E..S.|
000000f0  2d 91 b2 b6 d9 a3 57 a3  cf d1 86 f1 fe 2c 76 63  |-.....W......,vc|
00000100  fc 0b 61 83 47 97 bc 43  83 62 7e 74 89 ce 95 59  |..a.G..C.b~t...Y|
00000110  6f 32 61 66 af ea 57 13  92 3f 4d 6c 7e 6c 6e c3  |o2af..W..?Ml~ln.|
00000120  e0 de 94 12 b6 57 f6 25  6b 34 8e 45 b7 4b 1d 7d  |.....W.%k4.E.K.}|
00000130  8c 6f 4c ba b0 ea bc aa  43 33 fe 56 01 86 4b 7b  |.oL.....C3.V..K{|
00000140  25 e7 d8 a4 dd 84 23 d1  33 29 89 57 95 59 ab 7a  |%.....#.3).W.Y.z|
00000150  69 2c 24 b2 f4 9f 33 71  a1 c6 ed 5a 60 c5 cb 33  |i,$...3q...Z`..3|
00000160  c8 f7 82 d8 25 f1 a6 06  e5 98 be b5 e2 1f 68 81  |....%.........h.|
00000170  a1 e6 3e 02 5f 9f d2 f4  59 93 4d 44 29 32 ff 12  |..&amp;gt;._...Y.MD)2..|
00000180  c9 88 af db b2 a6 26 16  4d b2 c2 f1 e0 bb c6 8c  |......&amp;amp;.M.......|
00000190  c7 aa 75 b5 12 cd 63 20  29 96 b4 c9 32 39 aa ef  |..u...c )...29..|
000001a0  62 c2 4c 91 09 2e b7 22  ba 55 ce ea 48 63 92 b6  |b.L....".U..Hc..|
000001b0  c1 0c 67 23 37 9c 16 54  f7 16 9d 57 7c ff 3a 8a  |..g#7..T...W|.:.|
000001c0  c0 69 52 85 79 f3 8f 17  df ef ee 9b fd a7 b7 af  |.iR.y...........|
000001d0  e5 75 77 8d 85 c2 9e af  c0 3c e5 3c f1 23 37 2e  |.uw......&amp;lt;.&amp;lt;.#7.|
000001e0  7f d5 20 2a 1a 9a cf a3  17 70 86 55 5c 20 84 20  |.. *.....p.U\ . |
000001f0  6d fe a3 b4 37 d5 59 f1  a7 3d 18 dd d6 48 28 7a  |m...7.Y..=...H(z|
00000200  33 45 15 41 d6 c9 64 1e  01 00 0f 00 00 00 00 04  |3E.A..d.........|
00000210  5f 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |_...............|
00000220  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000240  30 31 31 31 30 31 30 30  30 30 30 30 30 30 30 30  |0111010000000000|
00000250  30 30 30 30 30 35 39 30  38 38 30 30 30 30 30 30  |0000059088000000|
00000260  30 30 30 30 46 46 30 33  00 00 00 00 00 00 00 00  |0000FF03........|
00000270  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000380  00 00 00 00 00 00 00 00  01 01 1f 00 00 00 00 04  |................|
00000390  07 00 00 00 00 00 00 00  00 00 00 00              |............|
0000039c

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Things of note:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Based on &lt;a href="https://www.puntoflotante.net/TUTORIAL-RFID-ISO-14443A-TAGS-13.56-MHZ.htm" rel="noopener noreferrer"&gt;this article&lt;/a&gt;, the serial numbers should be stored in the first 7 bytes, so our wristband's serial number is &lt;code&gt;04:6B:2E:B2:E8:10:90&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Starting at byte 0x240/576d, we see our QR code data from earlier.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>nintendo</category>
      <category>nfc</category>
    </item>
    <item>
      <title>Analyzing the 24 Hour Fitness QR Code format</title>
      <dc:creator>Raleigh Littles</dc:creator>
      <pubDate>Sat, 21 Jan 2023 22:29:20 +0000</pubDate>
      <link>https://dev.to/raleighlittles/analyzing-the-24-hour-fitness-qr-code-format-47bk</link>
      <guid>https://dev.to/raleighlittles/analyzing-the-24-hour-fitness-qr-code-format-47bk</guid>
      <description>&lt;p&gt;24 Hour Fitness, like most gyms, lets you sign in with a QR code -- this QR code is generated in their &lt;a href="https://apps.apple.com/us/app/24go-by-24-hour-fitness/id1291447822" rel="noopener noreferrer"&gt;iOS app&lt;/a&gt; and is only valid for a few minutes.&lt;/p&gt;

&lt;p&gt;I wanted to see if I could create a QR code without using the application.&lt;/p&gt;

&lt;h1&gt;
  
  
  QR Code format
&lt;/h1&gt;

&lt;p&gt;The QR code format looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MBR01234567|1673568280102|4248F3FA-FDEE-478E-B23E-22C3286B2FA8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Member ID
&lt;/h2&gt;

&lt;p&gt;The first part is your 8-digit member ID. This ID is assigned when you sign up for a membership.&lt;/p&gt;

&lt;h2&gt;
  
  
  Timestamp
&lt;/h2&gt;

&lt;p&gt;The next part is a timestamp: &lt;/p&gt;

&lt;p&gt;Using any &lt;a href="https://www.epochconverter.com/" rel="noopener noreferrer"&gt;epoch converter&lt;/a&gt;, we can see when this QR code was generated:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6jtaacw63eusnylxf4a4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6jtaacw63eusnylxf4a4.png" alt="Epoch converter screenshot" width="655" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ❔ Unknown ID  ❔
&lt;/h2&gt;

&lt;p&gt;The next part is where things get tricky - I don't know what this field actually is. It looks like it can be either some kind of hash or ID, but for what?&lt;/p&gt;

&lt;h3&gt;
  
  
  Format
&lt;/h3&gt;

&lt;p&gt;This field consists of 32 hexadecimal digits, with 4 hyphens, for a total length of 36. The segment lengths are 8, 4, 4, 4, and 12.&lt;/p&gt;

&lt;h3&gt;
  
  
  Variation?
&lt;/h3&gt;

&lt;p&gt;I checked this field across 10 days of QR codes, and it was the same every time. So if it does change, it's on an interval of larger than 10 days (maybe every month?), or, it doesn't change.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hash?
&lt;/h3&gt;

&lt;p&gt;Since the data portion is 32 characters long, and an MD5sum is also 32 characters long, my first idea was that it was an MD5sum of some kind. But, that begs the question, of what?&lt;/p&gt;

&lt;p&gt;I tested the MD5sum of my membership ID and that didn't work, which makes sense, carrying both the membership ID and it's MD5sum wouldn't make much sense.&lt;/p&gt;

&lt;p&gt;I also tried the MD5sum of my date of my birth, which didn't work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Device identification?
&lt;/h3&gt;

&lt;p&gt;My first thought was that this field somehow identifies the current device that you're using. This would mean that if you installed the 24 hour fitness app on another device and used that to generate a QR code, the devices would have different ID fields. I unfortunately don't have a second device to test that hypothesis with.&lt;/p&gt;

&lt;p&gt;If this field is used for device identification, it begs the question of, how is the application able to uniquely identify your device?&lt;/p&gt;

&lt;p&gt;For iOS at least, there's a specific &lt;a href="https://www.theiphonewiki.com/wiki/UDID" rel="noopener noreferrer"&gt;UDID field&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;However, my device UDID didn't match any part of this field, which rules out that possibility.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ghvgdjwur7dqfdp9nev.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ghvgdjwur7dqfdp9nev.png" alt="My UDID from iTunes" width="800" height="210"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>powerplatform</category>
      <category>cicd</category>
      <category>devops</category>
      <category>azure</category>
    </item>
    <item>
      <title>Analyzing the Assembly from Modern Warfare II campaign (2022)</title>
      <dc:creator>Raleigh Littles</dc:creator>
      <pubDate>Sat, 22 Oct 2022 05:27:17 +0000</pubDate>
      <link>https://dev.to/raleighlittles/analyzing-the-assembly-from-modern-warfare-ii-campaign-2022-4lod</link>
      <guid>https://dev.to/raleighlittles/analyzing-the-assembly-from-modern-warfare-ii-campaign-2022-4lod</guid>
      <description>&lt;p&gt;This was originally posted to the &lt;a href="https://www.reddit.com/r/ModernWarfareII/"&gt;Modern Warfare II&lt;/a&gt; subreddit, but it was deleted by the moderators for being off-topic :(&lt;/p&gt;




&lt;p&gt;Some of you probably noticed that &lt;a href="https://imgur.com/a/XxYOLvF"&gt;the missile control computers&lt;/a&gt; -- where you got asked to read the first letter of the second row and first column, etc -- had Assembly code shown.&lt;/p&gt;

&lt;p&gt;I wanted to actually check if the Assembly made sense and was valid or if it was just garbage (shout-out to /r/ItsAUnixSystem).&lt;/p&gt;

&lt;p&gt;Here's my annotated version* of the Assembly shown in the last mission&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    # Put the base/frame pointer onto the top of the stack
    PUSHL %EBP

    # Make the base pointer point to the address of the stack pointer
    MOVL %ESP, %EBP

    # Lower the stack pointer by exactly 4 bytes. On x86 the stack "grows" down,
    # so it has to be decremented to make room for additional variables.
    SUBL $0x4, %ESP

    # "Zero out" the memory at address 0x00A9'FF1C
    MOVL $0X0, 0x00A9FF1C

    # Sets up a comparison between: 
    # * the contents of memory address 0x00A9'FF1C
    # * 0x636 (1590 in decimal).
    CMPL $0x636, 0x00A9FF1C

    # In the previous instruction, we compared the two values
    # (the result of that comparison is stored in separate registers)
    # This instruction is saying, if 0x636 is less than the value stored at address 0x00A9'FF1C, 
    # then "jump to" (i.e. set the program counter) address 0x001C'011AC
    JLE 0x001C011AC

    # Finally, jump to memory address 0x001C011B8
    JMP 0x001C011B8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This looks like a valid snippet so far.&lt;/p&gt;

&lt;p&gt;And the first example, which is from the "Dark Water" mission:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    PUSHL %EBP
    MOVL %ESP, %EBP

    # It's kind of odd that this is here, since it's basically a useless instruction.
    # Unless it was done intentionally to show that there's no local variables going to be used.
    SUBL $0x0, %ESP
    MOVL $0x8, 0x00A9FF1C
    CMPL $0x65, 0x00A9FF1C
    JLE 0x001C011AC
    JMP 0x001C011B8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is very similar to the other snippet -- using the same instructions, just some different values. Seems to mostly check out. Good job Infinity Ward.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DISCLAIMER: I'm not an expert in x86 assembly.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>videogames</category>
      <category>assembly</category>
      <category>x86</category>
    </item>
    <item>
      <title>Nexigo Iris Webcam Remote communication guide</title>
      <dc:creator>Raleigh Littles</dc:creator>
      <pubDate>Wed, 05 Oct 2022 04:01:22 +0000</pubDate>
      <link>https://dev.to/raleighlittles/nexigo-iris-webcam-remote-communication-guide-on8</link>
      <guid>https://dev.to/raleighlittles/nexigo-iris-webcam-remote-communication-guide-on8</guid>
      <description>&lt;p&gt;For use with Nexigo Iris 4K Webcam (N1000), ASIN: B0BDFF4WD7&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com/gp/product/B0BDFF4WD7/" rel="noopener noreferrer"&gt;https://www.amazon.com/gp/product/B0BDFF4WD7/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8brvp1d0stbdeklbpvpx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8brvp1d0stbdeklbpvpx.png" alt="Remote Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Scan Codes
&lt;/h1&gt;

&lt;p&gt;(probed via &lt;code&gt;ir-keytable&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;POWER BUTTON&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;31480.978201: lirc protocol(nec): scancode = 0x481b
31480.978221: event type EV_MSC(0x04): scancode = 0x481b
31480.978221: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;HDMI video format (button 5)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;31569.742325: lirc protocol(nec): scancode = 0x4820
31569.742329: event type EV_MSC(0x04): scancode = 0x4820
31569.742329: event type EV_SYN(0x00).
31569.822167: lirc protocol(nec): scancode = 0x4820 repeat
31569.822187: event type EV_MSC(0x04): scancode = 0x4820
31569.822187: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Auto-Framing/Tracking (button 6)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;31596.518149: lirc protocol(nec): scancode = 0x4822
31596.518167: event type EV_MSC(0x04): scancode = 0x4822
31596.518167: event type EV_SYN(0x00).
31596.594162: lirc protocol(nec): scancode = 0x4822 repeat
31596.594166: event type EV_MSC(0x04): scancode = 0x4822
31596.594166: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pip/Facial Enhancement Button (Button 7)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;31696.819974: lirc protocol(nec): scancode = 0x4821
31696.819979: event type EV_MSC(0x04): scancode = 0x4821
31696.819979: event type EV_SYN(0x00).
31696.898185: lirc protocol(nec): scancode = 0x4821 repeat
31696.898203: event type EV_MSC(0x04): scancode = 0x4821
31696.898203: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Zoom-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;31731.802189: lirc protocol(nec): scancode = 0x4804
31731.802195: event type EV_MSC(0x04): scancode = 0x4804
31731.802195: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Zoom+&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;31750.070193: lirc protocol(nec): scancode = 0x4800
31750.070212: event type EV_MSC(0x04): scancode = 0x4800
31750.070212: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Arrow Up&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;31774.789925: lirc protocol(nec): scancode = 0x4805
31774.789931: event type EV_MSC(0x04): scancode = 0x4805
31774.789931: event type EV_SYN(0x00).
31774.866058: lirc protocol(nec): scancode = 0x4805 repeat
31774.866081: event type EV_MSC(0x04): scancode = 0x4805
31774.866081: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Arrow Left&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;31792.989315: lirc protocol(nec): scancode = 0x4808
31792.989321: event type EV_MSC(0x04): scancode = 0x4808
31792.989321: event type EV_SYN(0x00).
31793.066183: lirc protocol(nec): scancode = 0x4808 repeat
31793.066189: event type EV_MSC(0x04): scancode = 0x4808
31793.066189: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Arrow Right&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;31811.896996: lirc protocol(nec): scancode = 0x480a
31811.897001: event type EV_MSC(0x04): scancode = 0x480a
31811.897001: event type EV_SYN(0x00).
31811.974183: lirc protocol(nec): scancode = 0x480a repeat
31811.974188: event type EV_MSC(0x04): scancode = 0x480a
31811.974188: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Arrow Down&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;31834.158809: lirc protocol(nec): scancode = 0x480d
31834.158814: event type EV_MSC(0x04): scancode = 0x480d
31834.158814: event type EV_SYN(0x00).
31834.238182: lirc protocol(nec): scancode = 0x480d repeat
31834.238187: event type EV_MSC(0x04): scancode = 0x480d
31834.238187: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OSD Info/Home button (button 10)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;31856.146183: lirc protocol(nec): scancode = 0x4809
31856.146201: event type EV_MSC(0x04): scancode = 0x4809
31856.146201: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Preset/AI sensitivity button (button 11)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;31890.666160: lirc protocol(nec): scancode = 0x480f
31890.666180: event type EV_MSC(0x04): scancode = 0x480f
31890.666180: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mute (button 12)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;32155.217760: lirc protocol(nec): scancode = 0x4823
32155.217765: event type EV_MSC(0x04): scancode = 0x4823
32155.217765: event type EV_SYN(0x00).
32155.294156: lirc protocol(nec): scancode = 0x4823 repeat
32155.294161: event type EV_MSC(0x04): scancode = 0x4823
32155.294161: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Backlight Compensation  (button 13)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;32185.362182: lirc protocol(nec): scancode = 0x4824
32185.362201: event type EV_MSC(0x04): scancode = 0x4824
32185.362201: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Numpad: #1&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;32208.506180: lirc protocol(nec): scancode = 0x480c
32208.506187: event type EV_MSC(0x04): scancode = 0x480c
32208.506187: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Numpad: #2&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;32228.606184: lirc protocol(nec): scancode = 0x4811
32228.606191: event type EV_MSC(0x04): scancode = 0x4811
32228.606191: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Numpad: #3&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;32244.334191: lirc protocol(nec): scancode = 0x480e
32244.334209: event type EV_MSC(0x04): scancode = 0x480e
32244.334209: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Numpad: #4&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;32259.654214: lirc protocol(nec): scancode = 0x4810
32259.654233: event type EV_MSC(0x04): scancode = 0x4810
32259.654233: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Numpad: #5&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;32277.394109: lirc protocol(nec): scancode = 0x4815
32277.394115: event type EV_MSC(0x04): scancode = 0x4815
32277.394115: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Numpad: #6&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;32295.966162: lirc protocol(nec): scancode = 0x4812
32295.966167: event type EV_MSC(0x04): scancode = 0x4812
32295.966167: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Numpad: #7&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;32312.730186: lirc protocol(nec): scancode = 0x4814
32312.730192: event type EV_MSC(0x04): scancode = 0x4814
32312.730192: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Numpad: #8&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;32333.400294: lirc protocol(nec): scancode = 0x4819
32333.400301: event type EV_MSC(0x04): scancode = 0x4819
32333.400301: event type EV_SYN(0x00).
32333.478174: lirc protocol(nec): scancode = 0x4819 repeat
32333.478179: event type EV_MSC(0x04): scancode = 0x4819
32333.478179: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Numpad: #9&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;32346.958163: lirc protocol(nec): scancode = 0x4816
32346.958169: event type EV_MSC(0x04): scancode = 0x4816
32346.958169: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Numpad: #0&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;32895.746183: lirc protocol(nec): scancode = 0x481d
32895.746188: event type EV_MSC(0x04): scancode = 0x481d
32895.746188: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Asterisk (*)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;32919.054163: lirc protocol(nec): scancode = 0x4818
32919.054169: event type EV_MSC(0x04): scancode = 0x4818
32919.054169: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Number-sign/Pound key (#)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;32967.257820: lirc protocol(nec): scancode = 0x481a
32967.257825: event type EV_MSC(0x04): scancode = 0x481a
32967.257825: event type EV_SYN(0x00).
32967.334093: lirc protocol(nec): scancode = 0x481a repeat
32967.334097: event type EV_MSC(0x04): scancode = 0x481a
32967.334097: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>b0bdff4wd7</category>
      <category>n1000</category>
    </item>
    <item>
      <title>ZJBox TV converter remote communication guide</title>
      <dc:creator>Raleigh Littles</dc:creator>
      <pubDate>Mon, 01 Aug 2022 06:17:00 +0000</pubDate>
      <link>https://dev.to/raleighlittles/zjbox-tv-converter-remote-communication-guide-ha7</link>
      <guid>https://dev.to/raleighlittles/zjbox-tv-converter-remote-communication-guide-ha7</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft6d0d54m26gsogbzg3bn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft6d0d54m26gsogbzg3bn.jpg" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From ASIN: B07Z5RGLK6&lt;/p&gt;

&lt;p&gt;Button scancode dump below captured via &lt;a href="https://manpages.ubuntu.com/manpages/bionic/man1/ir-keytable.1.html" rel="noopener noreferrer"&gt;ir-keytable&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;STANDBY&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;385.606275: lirc protocol(necx): scancode = 0xbf59
385.606298: event type EV_MSC(0x04): scancode = 0xbf59
385.606298: event type EV_SYN(0x00).
385.685154: lirc protocol(necx): scancode = 0xbf59 repeat
385.685168: event type EV_MSC(0x04): scancode = 0xbf59
385.685168: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AUTO SEARCH&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;562.607456: lirc protocol(necx): scancode = 0xbf58
562.607477: event type EV_MSC(0x04): scancode = 0xbf58
562.607477: event type EV_SYN(0x00).
562.685116: lirc protocol(necx): scancode = 0xbf58 repeat
562.685136: event type EV_MSC(0x04): scancode = 0xbf58
562.685136: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GOTO&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;600.219850: lirc protocol(necx): scancode = 0xbf18
600.219872: event type EV_MSC(0x04): scancode = 0xbf18
600.219872: event type EV_SYN(0x00).
600.297180: lirc protocol(necx): scancode = 0xbf18 repeat
600.297202: event type EV_MSC(0x04): scancode = 0xbf18
600.297202: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;MUTE&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;626.195542: lirc protocol(necx): scancode = 0xbf19
626.195564: event type EV_MSC(0x04): scancode = 0xbf19
626.195564: event type EV_SYN(0x00).
626.273072: lirc protocol(necx): scancode = 0xbf19 repeat
626.273092: event type EV_MSC(0x04): scancode = 0xbf19
626.273092: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;EPG&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;645.086527: lirc protocol(necx): scancode = 0xbf4d
645.086550: event type EV_MSC(0x04): scancode = 0xbf4d
645.086550: event type EV_SYN(0x00).
645.169134: lirc protocol(necx): scancode = 0xbf4d repeat
645.169156: event type EV_MSC(0x04): scancode = 0xbf4d
645.169156: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CC&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;662.736869: lirc protocol(necx): scancode = 0xbf0e
662.736891: event type EV_MSC(0x04): scancode = 0xbf0e
662.736891: event type EV_SYN(0x00).
662.813140: lirc protocol(necx): scancode = 0xbf0e repeat
662.813149: event type EV_MSC(0x04): scancode = 0xbf0e
662.813149: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PAGE+&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;679.450161: lirc protocol(necx): scancode = 0xbf0d
679.450169: event type EV_MSC(0x04): scancode = 0xbf0d
679.450169: event type EV_SYN(0x00).
679.529141: lirc protocol(necx): scancode = 0xbf0d repeat
679.529164: event type EV_MSC(0x04): scancode = 0xbf0d
679.529164: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AUDIO&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;914.464842: lirc protocol(necx): scancode = 0xbf51
914.464864: event type EV_MSC(0x04): scancode = 0xbf51
914.464864: event type EV_SYN(0x00).
914.541108: lirc protocol(necx): scancode = 0xbf51 repeat
914.541132: event type EV_MSC(0x04): scancode = 0xbf51
914.541132: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;REC&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;950.420234: lirc protocol(necx): scancode = 0xbf12
950.420256: event type EV_MSC(0x04): scancode = 0xbf12
950.420256: event type EV_SYN(0x00).
950.497120: lirc protocol(necx): scancode = 0xbf12 repeat
950.497132: event type EV_MSC(0x04): scancode = 0xbf12
950.497132: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PAGE-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;969.252084: lirc protocol(necx): scancode = 0xbf11
969.252103: event type EV_MSC(0x04): scancode = 0xbf11
969.252103: event type EV_SYN(0x00).
969.329110: lirc protocol(necx): scancode = 0xbf11 repeat
969.329125: event type EV_MSC(0x04): scancode = 0xbf11
969.329125: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;MENU&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1702.105577: lirc protocol(necx): scancode = 0xbf45
1702.105598: event type EV_MSC(0x04): scancode = 0xbf45
1702.105598: event type EV_SYN(0x00).
1702.185141: lirc protocol(necx): scancode = 0xbf45 repeat
1702.185151: event type EV_MSC(0x04): scancode = 0xbf45
1702.185151: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CH+&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1722.105147: lirc protocol(necx): scancode = 0xbf06
1722.105169: event type EV_MSC(0x04): scancode = 0xbf06
1722.105169: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;EXIT&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1754.793117: lirc protocol(necx): scancode = 0xbf05
1754.793125: event type EV_MSC(0x04): scancode = 0xbf05
1754.793125: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;VOL-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1783.075211: lirc protocol(necx): scancode = 0xbf5a
1783.075217: event type EV_MSC(0x04): scancode = 0xbf5a
1783.075217: event type EV_SYN(0x00).
1783.153116: lirc protocol(necx): scancode = 0xbf5a repeat
1783.153136: event type EV_MSC(0x04): scancode = 0xbf5a
1783.153136: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OK&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1802.260812: lirc protocol(necx): scancode = 0xbf1a
1802.260834: event type EV_MSC(0x04): scancode = 0xbf1a
1802.260834: event type EV_SYN(0x00).
1802.337121: lirc protocol(necx): scancode = 0xbf1a repeat
1802.337128: event type EV_MSC(0x04): scancode = 0xbf1a
1802.337128: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;VOL+&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1825.826664: lirc protocol(necx): scancode = 0xbf1b
1825.826686: event type EV_MSC(0x04): scancode = 0xbf1b
1825.826686: event type EV_SYN(0x00).
1825.905121: lirc protocol(necx): scancode = 0xbf1b repeat
1825.905128: event type EV_MSC(0x04): scancode = 0xbf1b
1825.905128: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;FAV&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1852.354350: lirc protocol(necx): scancode = 0xbf55
1852.354372: event type EV_MSC(0x04): scancode = 0xbf55
1852.354372: event type EV_SYN(0x00).
1852.433125: lirc protocol(necx): scancode = 0xbf55 repeat
1852.433145: event type EV_MSC(0x04): scancode = 0xbf55
1852.433145: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CH-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1869.263786: lirc protocol(necx): scancode = 0xbf16
1869.263807: event type EV_MSC(0x04): scancode = 0xbf16
1869.263807: event type EV_SYN(0x00).
1869.341110: lirc protocol(necx): scancode = 0xbf16 repeat
1869.341117: event type EV_MSC(0x04): scancode = 0xbf16
1869.341117: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;TV/RADIO&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1889.086846: lirc protocol(necx): scancode = 0xbf15
1889.086866: event type EV_MSC(0x04): scancode = 0xbf15
1889.086866: event type EV_SYN(0x00).
1889.169150: lirc protocol(necx): scancode = 0xbf15 repeat
1889.169169: event type EV_MSC(0x04): scancode = 0xbf15
1889.169169: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DIGIT: 1&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1909.041733: lirc protocol(necx): scancode = 0xbf52
1909.041752: event type EV_MSC(0x04): scancode = 0xbf52
1909.041752: event type EV_SYN(0x00).
1909.121110: lirc protocol(necx): scancode = 0xbf52 repeat
1909.121127: event type EV_MSC(0x04): scancode = 0xbf52
1909.121127: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DIGIT: 2&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1926.708765: lirc protocol(necx): scancode = 0xbf50
1926.708786: event type EV_MSC(0x04): scancode = 0xbf50
1926.708786: event type EV_SYN(0x00).
1926.785108: lirc protocol(necx): scancode = 0xbf50 repeat
1926.785122: event type EV_MSC(0x04): scancode = 0xbf50
1926.785122: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DIGIT: 3&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2209.224398: lirc protocol(necx): scancode = 0xbf10
2209.224417: event type EV_MSC(0x04): scancode = 0xbf10
2209.224417: event type EV_SYN(0x00).
2209.301108: lirc protocol(necx): scancode = 0xbf10 repeat
2209.301125: event type EV_MSC(0x04): scancode = 0xbf10
2209.301125: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;INFO&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2231.529061: lirc protocol(necx): scancode = 0xbf13
2231.529086: event type EV_MSC(0x04): scancode = 0xbf13
2231.529086: event type EV_SYN(0x00).
2231.605140: lirc protocol(necx): scancode = 0xbf13 repeat
2231.605162: event type EV_MSC(0x04): scancode = 0xbf13
2231.605162: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DIGIT: 4&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2250.642133: lirc protocol(necx): scancode = 0xbf56
2250.642155: event type EV_MSC(0x04): scancode = 0xbf56
2250.642155: event type EV_SYN(0x00).
2250.721123: lirc protocol(necx): scancode = 0xbf56 repeat
2250.721143: event type EV_MSC(0x04): scancode = 0xbf56
2250.721143: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DIGIT: 5&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2269.372284: lirc protocol(necx): scancode = 0xbf54
2269.372305: event type EV_MSC(0x04): scancode = 0xbf54
2269.372305: event type EV_SYN(0x00).
2269.449135: lirc protocol(necx): scancode = 0xbf54 repeat
2269.449148: event type EV_MSC(0x04): scancode = 0xbf54
2269.449148: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DIGIT: 6&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2285.964257: lirc protocol(necx): scancode = 0xbf14
2285.964281: event type EV_MSC(0x04): scancode = 0xbf14
2285.964281: event type EV_SYN(0x00).
2286.041149: lirc protocol(necx): scancode = 0xbf14 repeat
2286.041170: event type EV_MSC(0x04): scancode = 0xbf14
2286.041170: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;UNDERSCORE&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2300.343664: lirc protocol(necx): scancode = 0xbf17
2300.343683: event type EV_MSC(0x04): scancode = 0xbf17
2300.343683: event type EV_SYN(0x00).
2300.421166: lirc protocol(necx): scancode = 0xbf17 repeat
2300.421186: event type EV_MSC(0x04): scancode = 0xbf17
2300.421186: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DIGIT: 7&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2314.848627: lirc protocol(necx): scancode = 0xbf4e
2314.848649: event type EV_MSC(0x04): scancode = 0xbf4e
2314.848649: event type EV_SYN(0x00).
2314.925140: lirc protocol(necx): scancode = 0xbf4e repeat
2314.925160: event type EV_MSC(0x04): scancode = 0xbf4e
2314.925160: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DIGIT: 8&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2329.340661: lirc protocol(necx): scancode = 0xbf4c
2329.340680: event type EV_MSC(0x04): scancode = 0xbf4c
2329.340680: event type EV_SYN(0x00).
2329.421125: lirc protocol(necx): scancode = 0xbf4c repeat
2329.421140: event type EV_MSC(0x04): scancode = 0xbf4c
2329.421140: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DIGIT: 9&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2346.363575: lirc protocol(necx): scancode = 0xbf0c
2346.363579: event type EV_MSC(0x04): scancode = 0xbf0c
2346.363579: event type EV_SYN(0x00).
2346.441089: lirc protocol(necx): scancode = 0xbf0c repeat
2346.441106: event type EV_MSC(0x04): scancode = 0xbf0c
2346.441106: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DIGIT: 0&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2362.163338: lirc protocol(necx): scancode = 0xbf0f
2362.163360: event type EV_MSC(0x04): scancode = 0xbf0f
2362.163360: event type EV_SYN(0x00).
2362.241140: lirc protocol(necx): scancode = 0xbf0f repeat
2362.241161: event type EV_MSC(0x04): scancode = 0xbf0f
2362.241161: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;REV&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2389.586492: lirc protocol(necx): scancode = 0xbf4a
2389.586515: event type EV_MSC(0x04): scancode = 0xbf4a
2389.586515: event type EV_SYN(0x00).
2389.665124: lirc protocol(necx): scancode = 0xbf4a repeat
2389.665140: event type EV_MSC(0x04): scancode = 0xbf4a
2389.665140: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;FWD&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2403.819907: lirc protocol(necx): scancode = 0xbf48
2403.819929: event type EV_MSC(0x04): scancode = 0xbf48
2403.819929: event type EV_SYN(0x00).
2403.897159: lirc protocol(necx): scancode = 0xbf48 repeat
2403.897179: event type EV_MSC(0x04): scancode = 0xbf48
2403.897179: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PREV&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2418.657605: lirc protocol(necx): scancode = 0xbf08
2418.657624: event type EV_MSC(0x04): scancode = 0xbf08
2418.657624: event type EV_SYN(0x00).
2418.737122: lirc protocol(necx): scancode = 0xbf08 repeat
2418.737132: event type EV_MSC(0x04): scancode = 0xbf08
2418.737132: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NEXT&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2455.686572: lirc protocol(necx): scancode = 0xbf0b
2455.686594: event type EV_MSC(0x04): scancode = 0xbf0b
2455.686594: event type EV_SYN(0x00).
2455.765130: lirc protocol(necx): scancode = 0xbf0b repeat
2455.765150: event type EV_MSC(0x04): scancode = 0xbf0b
2455.765150: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PLAY (RED)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2472.939168: lirc protocol(necx): scancode = 0xbf42
2472.939190: event type EV_MSC(0x04): scancode = 0xbf42
2472.939190: event type EV_SYN(0x00).
2473.017155: lirc protocol(necx): scancode = 0xbf42 repeat
2473.017180: event type EV_MSC(0x04): scancode = 0xbf42
2473.017180: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;TIMESHIFT (GREEN)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2523.397132: lirc protocol(necx): scancode = 0xbf40
2523.397151: event type EV_MSC(0x04): scancode = 0xbf40
2523.397151: event type EV_SYN(0x00).
2523.465141: lirc protocol(necx): scancode = 0xbf40 repeat
2523.465148: event type EV_MSC(0x04): scancode = 0xbf40
2523.465148: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;STOP (YELLOW)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2552.000912: lirc protocol(necx): scancode = 0xbf00
2552.000932: event type EV_MSC(0x04): scancode = 0xbf00
2552.000932: event type EV_SYN(0x00).
2552.077107: lirc protocol(necx): scancode = 0xbf00 repeat
2552.077124: event type EV_MSC(0x04): scancode = 0xbf00
2552.077124: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;USB (BLUE)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2570.199084: lirc protocol(necx): scancode = 0xbf03
2570.199108: event type EV_MSC(0x04): scancode = 0xbf03
2570.199108: event type EV_SYN(0x00).
2570.281198: lirc protocol(necx): scancode = 0xbf03 repeat
2570.281204: event type EV_MSC(0x04): scancode = 0xbf03
2570.281204: event type EV_SYN(0x00).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>infrared</category>
      <category>remote</category>
      <category>zjbox</category>
    </item>
    <item>
      <title>Liftmaster 811LM teardown/programming instructions</title>
      <dc:creator>Raleigh Littles</dc:creator>
      <pubDate>Thu, 23 Jun 2022 07:13:18 +0000</pubDate>
      <link>https://dev.to/raleighlittles/liftmaster-811lm-teardownprogramming-instructions-17i</link>
      <guid>https://dev.to/raleighlittles/liftmaster-811lm-teardownprogramming-instructions-17i</guid>
      <description>&lt;h1&gt;
  
  
  About
&lt;/h1&gt;

&lt;p&gt;LiftMaster 811LM Encrypted DIP with Security+ 2.0 Technology Remote Control&lt;/p&gt;

&lt;p&gt;ASIN: B0071EYRGG&lt;br&gt;
FCC ID: HBW7471&lt;br&gt;
IC: 2666A-7471&lt;/p&gt;

&lt;h1&gt;
  
  
  Teardown
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Front
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fnUzlMwY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rlyr9s0rcv1ysb9kovud.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fnUzlMwY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rlyr9s0rcv1ysb9kovud.jpg" alt="Front of PCB" width="880" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Back
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NF8c5cWr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ycjg7363ju5uiluea3ld.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NF8c5cWr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ycjg7363ju5uiluea3ld.jpg" alt="Back of PCB" width="880" height="485"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Programming Instructions
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Push blue button (&lt;code&gt;SW4&lt;/code&gt;) to put into programming mode&lt;/li&gt;
&lt;li&gt;Verify that yellow LED (&lt;code&gt;SW5&lt;/code&gt;) lights up&lt;/li&gt;
&lt;li&gt;Push black button (&lt;code&gt;SW2&lt;/code&gt;)  amount of times to toggle through frequencies&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;# of presses&lt;/th&gt;
&lt;th&gt;Device Security Type&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Security+ 2.0®&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;315 MHz DIP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;390 MHz DIP&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Verify that gate receivers responds (either via LED or by actual gate opening)&lt;/li&gt;
&lt;li&gt;Push blue button again to exit programming mode&lt;/li&gt;
&lt;li&gt;Verify yellow LED turns off&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>b0071eyrgg</category>
      <category>811lm</category>
    </item>
    <item>
      <title>Teardown of Automatic OBD dongle</title>
      <dc:creator>Raleigh Littles</dc:creator>
      <pubDate>Wed, 23 Dec 2020 01:27:36 +0000</pubDate>
      <link>https://dev.to/raleighlittles/wip-teardown-of-automatic-obd-dongle-4gfh</link>
      <guid>https://dev.to/raleighlittles/wip-teardown-of-automatic-obd-dongle-4gfh</guid>
      <description>&lt;h1&gt;
  
  
  Background
&lt;/h1&gt;

&lt;p&gt;In January of 2019, I purchased an Automatic® car tracker. It was a simple piece of hardware that would connect to your car's on-board diagnostics (OBD) port, and was equipped with Bluetooth and LTE. I bought it mainly to be able to log my trips, as I wanted to get a picture on exactly how much I was driving.&lt;/p&gt;

&lt;h1&gt;
  
  
  Fast forward
&lt;/h1&gt;

&lt;p&gt;This year, the company announced they were going out of business, and would shut down the service immediately.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.theverge.com/2020/5/1/21244295/automatic-labs-vehicle-tracking-service-covid-19-pandemic-rebate-may-28th" rel="noopener noreferrer"&gt;https://www.theverge.com/2020/5/1/21244295/automatic-labs-vehicle-tracking-service-covid-19-pandemic-rebate-may-28th&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Motivation
&lt;/h1&gt;

&lt;p&gt;Once the service was shut down, I realized my $99 dongle basically became a paperweight. Or did it?&lt;/p&gt;

&lt;p&gt;After all, I still had the hardware, I just don't have the infrastructure supporting it. &lt;/p&gt;

&lt;p&gt;I wanted to see if there was a way to salvage this part and hopefully turn it into something useful again.&lt;/p&gt;

&lt;h1&gt;
  
  
  Goal
&lt;/h1&gt;

&lt;p&gt;Before I can figure out a way to use this dongle, I first have to take it apart and figure out exactly what parts on it and how I can try to connect to it.&lt;/p&gt;

&lt;p&gt;That's what &lt;em&gt;this post&lt;/em&gt; exactly is -- a teardown. My goal in publishing this is that others who have this dongle can get the information they need on the part without having to physically open their unit.&lt;/p&gt;

&lt;h1&gt;
  
  
  Pieces
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Connector
&lt;/h2&gt;

&lt;p&gt;To start, let's examine the (back) of the OBD connector.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FT4Dqi5k.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FT4Dqi5k.jpg" alt="obd-connector"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remember that you're looking at this from the back view so:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pin 1 is at the top right, Pin 8 at the top left&lt;/li&gt;
&lt;li&gt;Pin 16 at the bottom right, Pin 9 at the bottom left&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You'll also notice that there's 2 empty pins: pin #9 and #13. &lt;/p&gt;

&lt;p&gt;If you search for the OBD pinout diagram online, you'll see that these 2 pins are labelled as 'vendor's choice' or something to that effect. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2Fproxy%2FRhZW1a2r2GjLig8-M2-JUsRHgU7adT2H-l-BIFWbluksQEAPsNcUUMj_pKRnsPAP4OwB3FVxkqaMP_2JMyEPhEwJXxzwf-LmzhiCy9xOaGlS0kVuxnjK5bDm69cs86hAYENqgOn87BDE9yggg2e8SG-hyQ" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2Fproxy%2FRhZW1a2r2GjLig8-M2-JUsRHgU7adT2H-l-BIFWbluksQEAPsNcUUMj_pKRnsPAP4OwB3FVxkqaMP_2JMyEPhEwJXxzwf-LmzhiCy9xOaGlS0kVuxnjK5bDm69cs86hAYENqgOn87BDE9yggg2e8SG-hyQ" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/On-board_diagnostics#OBD-II_diagnostic_connector" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/On-board_diagnostics#OBD-II_diagnostic_connector&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Board
&lt;/h2&gt;

&lt;p&gt;The OBD module itself has arranged horizontally, in 3 parts. Each of the images of the board provided has a number on it -- so when fully assembled, if you look at the board from the side:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 &amp;lt; - top
6 &amp;lt; - bottom
5 &amp;lt; - top
3 &amp;lt; - bottom
4 &amp;lt; - top
2 &amp;lt; - bottom
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(Just look at the pictures below and I promise it'll all make sense)&lt;/p&gt;

&lt;h3&gt;
  
  
  Bottom layer
&lt;/h3&gt;

&lt;p&gt;Here's the bottom view of the bottom layer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FuJF7FMI.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FuJF7FMI.jpg" alt="1-bottom"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's the top view of the bottom layer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FRhU0axv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FRhU0axv.jpg" alt="1-top"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We see that this PCB holds the "OBD sim board" on one side, and what looks to be the wireless radio on the other side.&lt;/p&gt;

&lt;p&gt;We can lookup the IMEI given, on any number of IMEI databases to get some more information about it: &lt;a href="https://www.imei.info/?imei=354421076447994" rel="noopener noreferrer"&gt;https://www.imei.info/?imei=354421076447994&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FwNkVUOH.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FwNkVUOH.png" alt="imei-lookup"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The IMEI lookup tells us the manufacturer is U-BLOX  and the model is "SARA-U260", so armed with this information we can consult the datasheet to learn more about it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.digchip.com/datasheets/download_datasheet.php?id=8846450&amp;amp;part-number=SARA-U260-00S" rel="noopener noreferrer"&gt;https://www.digchip.com/datasheets/download_datasheet.php?id=8846450&amp;amp;part-number=SARA-U260-00S&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It looks to be a standard, run-of-the-mill HSPA/GSM modem, not unlike what you would find in cell phones several years ago. The antenna connectors - ANT 801 and 802 - are housed on the other side of the board.&lt;/p&gt;

&lt;h3&gt;
  
  
  Middle layer
&lt;/h3&gt;

&lt;p&gt;Here's the top view of the middle layer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FURKworu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FURKworu.jpg" alt="2-top"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This piece is labelled "OBD IO board". This piece has a QR sticker with a marking underneath.&lt;/p&gt;

&lt;p&gt;Here's the bottom view of the middle layer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FfXpsnzl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FfXpsnzl.jpg" alt="2-bottom"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A lot of small parts, but sadly nothing really identifiable unfortunately.&lt;/p&gt;

&lt;h3&gt;
  
  
  Top layer
&lt;/h3&gt;

&lt;p&gt;Here's the top view of the top layer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FwN6tFhY.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FwN6tFhY.jpg" alt="3-top"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This part is labelled "OBD main", but doesn't seem to offer much else in terms of information. There's a QR code, but the ID on it differs from the piece we saw in the middle layer only by one character (A vs B), meaning the sticker was probably only used during the assembly process. &lt;/p&gt;

&lt;p&gt;Here's a closeup of it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FW8FYCBO.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FW8FYCBO.png" alt="qr-code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's the bottom view of the top layer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F60n5Mr3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F60n5Mr3.jpg" alt="3-bottom"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One thing we see right away is that this part contains our flash chip -- a Macronix MX25L1606EZNI-12G.&lt;/p&gt;

&lt;p&gt;According to Digikey, this is a 16 MB Flash SPI chip. &lt;a href="https://www.digikey.com/en/products/detail/macronix/MX25L1606EZNI-12G/2744758" rel="noopener noreferrer"&gt;https://www.digikey.com/en/products/detail/macronix/MX25L1606EZNI-12G/2744758&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There's a couple of other parts on this side of the board, but the etching on them has been rubbed off to the point where it's basically illegible.&lt;/p&gt;

</description>
      <category>obd</category>
      <category>teardown</category>
    </item>
  </channel>
</rss>
