<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>arduino on irq5 test</title><link>https://irq5-7854a1fdb9f4.pages.dev/tag/arduino/</link><description>Recent content in arduino on irq5 test</description><language>en-us</language><lastBuildDate>Tue, 25 Jul 2017 00:06:00 +0000</lastBuildDate><atom:link href="https://irq5-7854a1fdb9f4.pages.dev/tag/arduino/feed/" rel="self" type="application/rss+xml"/><item><title>Making USBasp Chinese Clones Usable</title><link>https://irq5-7854a1fdb9f4.pages.dev/2017/07/making-usbasp-chinese-clones-usable/</link><pubDate>Tue, 25 Jul 2017 00:06:00 +0000</pubDate><guid>https://irq5-7854a1fdb9f4.pages.dev/2017/07/making-usbasp-chinese-clones-usable/</guid><description>&lt;p>I don&amp;rsquo;t have any dedicated programmers.
I have been programming Atmel chips
&lt;a href=https://irq5-7854a1fdb9f4.pages.dev/2010/07/programming-the-attiny10/ rel=noopener>using the USB-to-serial bitbang method&lt;/a>.&lt;/p>&lt;p>Recently, I thought I&amp;rsquo;d get one because doing a re-programming cycle is taking
quite a bit of time (a disadvantage of serial port bitbanging).&lt;/p>&lt;p>A popular one on Aliexpress seems to be
&lt;a href=https://www.aliexpress.com/item/1pcs-Free-shipping-USB-ISP-USBasp-USBisp-Programmer-for-51-ATMEL-AVR-download-support-Win-7/1289376766.html rel=noopener target=_blank class=external>this &amp;ldquo;USB ISP&amp;rdquo; one&lt;/a>, so I bought one.
I chose this one because it has a nice aluminium case, and a pinout diagram
imprinted on the case, which is handy.
After having so many one-off projects with bare PCBs collecting dust,
I now appreciate the importance of having projects in their own box or case.&lt;/p>&lt;p>&lt;picture>&lt;img src=https://c1.staticflickr.com/5/4324/35866155142_0bf2674c3e_b.jpg alt="USB ISP programmer with aluminium case">&lt;/picture>&lt;/p>&lt;p>While it has &amp;ldquo;USBasp&amp;rdquo; in the item name, it turns out that this was &lt;strong>not a USBasp device&lt;/strong>,
and getting it to work like one takes some effort.&lt;/p>&lt;p>It identifies itself as a &lt;em>zhifengsoft&lt;/em> HID device when I plug it into Linux:&lt;/p>&lt;div class=highlight role=region aria-label="code block" translate=no>&lt;pre tabindex=0 class=chroma>&lt;code class=language-fallback data-lang=fallback>&lt;span class=line>&lt;span class=cl>[705621.968025] usb 3-1: new low-speed USB device number 3 using ohci-platform
&lt;/span>&lt;/span>&lt;span class=line>&lt;span class=cl>[705622.199065] usb 3-1: New USB device found, idVendor=03eb, idProduct=c8b4
&lt;/span>&lt;/span>&lt;span class=line>&lt;span class=cl>[705622.205939] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
&lt;/span>&lt;/span>&lt;span class=line>&lt;span class=cl>[705622.213194] usb 3-1: Product: USBHID
&lt;/span>&lt;/span>&lt;span class=line>&lt;span class=cl>[705622.216876] usb 3-1: Manufacturer: zhifengsoft&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>avrdude&lt;/code> does not recognize the device,
even after creating an entry with the corresponding vendor/product ID.
This particular device was designed to work with their Windows-based UI called
&lt;a href=http://www.electrodragon.com/w/ProgISP rel=noopener target=_blank class=external>ProgISP&lt;/a>
and &lt;a href=http://www.avrfreaks.net/forum/how-use-usbasp#comment-1459441 rel=noopener target=_blank class=external>will not work with avrdude&lt;/a>.&lt;/p>&lt;p>And apparently you can&amp;rsquo;t just take the USBasp firmware and flash it into
this device, because the circuit is somewhat different.&lt;/p>&lt;p>After some research based on the PCB markings, I found these sites that talk about them:&lt;/p>&lt;ul>&lt;li>&lt;a href="https://www.sciencetronics.com/greenphotons/?p=938" rel=noopener target=_blank class=external>GreenPhotons: Hacking an AVR programmer&lt;/a>&lt;/li>&lt;li>&lt;a href="https://www.sciencetronics.com/greenphotons/?p=1937" rel=noopener target=_blank class=external>GreenPhotons: Hacking an AVR programmer II&lt;/a>&lt;/li>&lt;li>&lt;a href="http://wiki.efihacks.com/index.php?title=USBasp_Experiences" rel=noopener target=_blank class=external>USBasp Experiences - efiHacks Wiki&lt;/a>&lt;/li>&lt;/ul>&lt;h1 id=disassembly>Disassembly&lt;/h1>&lt;p>Disassembling the device is simple.
While grabbing the side of the case, firmly push the USB connector inwards
and the board should slide out the other end.
You can then gently pull the board out by the IDC connector.&lt;/p>&lt;p>&lt;picture>&lt;img src=https://c1.staticflickr.com/5/4308/35964033316_b5385eed09_b.jpg alt="Disassembly how-to photo">&lt;/picture>&lt;/p>&lt;p>The programmer seems to be based off of the popular &lt;a href=http://www.fischl.de/usbasp/ rel=noopener target=_blank class=external>USBasp programmer&lt;/a>,
but modified somewhat (to what end I&amp;rsquo;m not sure).
It lacks some features offered by other USBasp programmers,
like the ability to control the target&amp;rsquo;s clock,
or to use 3.3V for certain targets.
But at $2 with a nice aluminium case, what more can you ask for?&lt;/p>&lt;p>It&amp;rsquo;s powered by an ATmega88 (I read that older versions were based on ATmega8).
The markings on the board indicate that this is a &lt;code>MX-USBISP-V4.00&lt;/code>.
You can ignore tHe date because it was never updated;
the older V3.02 also has the same date.
While the &lt;em>GreenPhotons&lt;/em> blog was talking about V3.00,
I have verified that this version suffers from the same issue.&lt;/p>&lt;p>&lt;picture>&lt;img src=https://c1.staticflickr.com/5/4310/36005584165_a81de0f13c_b.jpg loading=lazy alt="USBISP programmer, with aluminium case">&lt;/picture>&lt;/p>&lt;p>&lt;picture>&lt;img src=https://c1.staticflickr.com/5/4291/35964039616_074efac6af_b.jpg loading=lazy alt="USPISP PCB rear">&lt;/picture>&lt;/p>&lt;p>Note that there are provisions on the PCB to add a voltage regulator,
and the PCB link marked &amp;ldquo;C&amp;rdquo; can be cut to separate USB power from the
rest of the system. Link &amp;ldquo;D&amp;rdquo; can be cut if you wish to disable target power.
However, none of these options were used.&lt;/p>&lt;p>The crucial difference with this clone
is that the USB &lt;code>D-&lt;/code> pin is additionally connected to &lt;code>PD3&lt;/code>,
shown here highlighted in blue:&lt;/p>&lt;p>&lt;picture>&lt;source srcset=/posts/2017/img/zhifengsoft-schematic-diff.png.webp type=image/webp>&lt;img src=https://irq5-7854a1fdb9f4.pages.dev/posts/2017/img/zhifengsoft-schematic-diff.png loading=lazy alt="Clone difference in schematic view" width=502 height=336>&lt;/picture>&lt;/p>&lt;p>However, in the USBasp&amp;rsquo;s &lt;code>main()&lt;/code> function, &lt;code>PORTD&lt;/code>&amp;rsquo;s
data direction register was initialized like so:&lt;/p>&lt;div class=highlight role=region aria-label="code block" translate=no>&lt;pre tabindex=0 class=chroma>&lt;code class=language-c data-lang=c>&lt;span class=line>&lt;span class=cl> &lt;span class=cm translate>/* all outputs except PD2 = INT0 */&lt;/span>
&lt;/span>&lt;/span>&lt;span class=line>&lt;span class=cl> &lt;span class=n>DDRD&lt;/span> &lt;span class=o>=&lt;/span> &lt;span class=o>~&lt;/span>&lt;span class=p>(&lt;/span>&lt;span class=mi>1&lt;/span> &lt;span class=o>&amp;lt;&amp;lt;&lt;/span> &lt;span class=mi>2&lt;/span>&lt;span class=p>);&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This causes the USB &lt;code>D-&lt;/code> line to be actively driven from &lt;code>PD3&lt;/code>,
thereby impeding communication to/from the USB host.&lt;/p>&lt;p>The rest of this post will talk about (1) correcting this problem in USBasp,
and (2) uploading the firmware into your &lt;em>zhifengsoft&lt;/em> programmer.&lt;/p>&lt;p>&lt;a href="https://irq5-7854a1fdb9f4.pages.dev/2017/07/making-usbasp-chinese-clones-usable/#more">Continue reading…&lt;/a>&lt;/p></description></item><item><title>X-CTF 2016 Badge Firmware</title><link>https://irq5-7854a1fdb9f4.pages.dev/2016/07/x-ctf-2016-badge-firmware/</link><pubDate>Tue, 19 Jul 2016 00:29:00 +0000</pubDate><guid>https://irq5-7854a1fdb9f4.pages.dev/2016/07/x-ctf-2016-badge-firmware/</guid><description>&lt;p>As promised, we are releasing &lt;a href=https://github.com/geekman/badger rel=noopener target=_blank class=external>the source code for the X-CTF badge&lt;/a>,
about 1 month after the event to give interested participants the chance to take a crack at it.
If you are interested in the badge design process,
check out &lt;a href=https://irq5-7854a1fdb9f4.pages.dev/2016/06/designing-the-x-ctf-2016-badge/ rel=noopener>my previous post on the hardware aspects&lt;/a>.&lt;/p>&lt;p>Jeremias and Jeremy gave a talk at one of the Null Security meetups.
&lt;a href=https://docs.google.com/presentation/d/1ZF4eMINOdhXUD4hn7NA8P-Roj7itxtIWvhx3lzXDboI/pub rel=noopener target=_blank class=external>Check out the slides&lt;/a> if you haven&amp;rsquo;t already.
In one part, Jeremy talks about the custom firmware he wrote for his badge and the
additional challenges he set up for partipants to get more points.
The 2nd part of the talk covers the electronic badge and challenges.&lt;/p>&lt;h2 id=the-challenges>The Challenges&lt;/h2>&lt;p>The challenges try to exploit the nature of being a self-contained electronic device.
Rather than trying to replicate more CTF puzzles and simply placing them into the badge, we specially designed them for the badge.&lt;/p>&lt;p>You can find the answers to the badge puzzles (and the main CTF puzzles) in the
&lt;a href=https://github.com/quanyang/x-ctf-2016-finals rel=noopener target=_blank class=external>X-CTF GitHub repo&lt;/a>,
which was released shortly after the event.&lt;/p>&lt;p>Since there&amp;rsquo;s only a single entry point into the set of challenges (meaning you must solve each puzzle before getting to the next),
the puzzles must be designed with increasing levels of difficulty;
too difficult and the participants will totally give up.&lt;/p>&lt;p>&lt;strong>Stage 1: Catch Me If You Can&lt;/strong>&lt;/p>&lt;p>&lt;picture>&lt;img src=https://irq5-7854a1fdb9f4.pages.dev/posts/2016/img/badge-catchme-anim.gif alt="animation of challenge 1" width=589 height=59>&lt;/picture>&lt;/p>&lt;p>I particularly like this one. Unlike a program running on the computer, you can&amp;rsquo;t easily snapshot the state of the program, nor try to influence (slow down) its execution.&lt;/p>&lt;p>&lt;a href="https://irq5-7854a1fdb9f4.pages.dev/2016/07/x-ctf-2016-badge-firmware/#more">Continue reading…&lt;/a>&lt;/p></description></item><item><title>Designing the X-CTF 2016 Badge</title><link>https://irq5-7854a1fdb9f4.pages.dev/2016/06/designing-the-x-ctf-2016-badge/</link><pubDate>Wed, 22 Jun 2016 00:29:00 +0000</pubDate><guid>https://irq5-7854a1fdb9f4.pages.dev/2016/06/designing-the-x-ctf-2016-badge/</guid><description>&lt;p>&lt;picture>&lt;img src=https://c2.staticflickr.com/8/7711/27521379400_bd686d27ae_o.jpg alt="X-CTF 2016 badge with Lithium-ion battery attached">&lt;/picture>&lt;/p>&lt;p>I had the opportunity to collaborate with some NUS students to design the
electronic badge for their X-CTF event this year.&lt;/p>&lt;p>The purpose of the badge was to inspire more people to take an interest in hardware hacking,
or to get them started on electronics.
With so much hype on the Internet-of-Things (IoT) these days,
what better idea than to let participants take home their very own IoT device.
The super low cost WiFi chip, Expressif&amp;rsquo;s ESP8266, made this possible.
We also wanted it to be shaped like a gaming device, with a D-pad and an LCD.&lt;/p>&lt;p>You can see the final badge design above:
a ESP8266-based board with a backlit monochrome Nokia LCD, D-pad and a SELECT button.
Powered by a lithium-ion battery, charged via the USB port,
which also provides a serial connection to the ESP8266.&lt;/p>&lt;p>I was inspired by the SyScan 2015 badge.
It was so simple and spartan: a monochrome LCD, an LED,
a 5-way joystick switch and a 32-bit ARM processor (on the back).
As the regulator was built-in and it runs all the way down to 2.4V,
there was no need for an external regulator.&lt;/p>&lt;p>&lt;picture>&lt;img src=https://c2.staticflickr.com/8/7609/27699054572_e19061de3a_b.jpg alt="SyScan 2015 electronic badge">&lt;/picture>&lt;/p>&lt;p>&lt;a href="https://irq5-7854a1fdb9f4.pages.dev/2016/06/designing-the-x-ctf-2016-badge/#more">Continue reading…&lt;/a>&lt;/p></description></item><item><title>Testing the Shinyei PPD42NS</title><link>https://irq5-7854a1fdb9f4.pages.dev/2013/07/testing-the-shinyei-ppd42ns/</link><pubDate>Wed, 24 Jul 2013 00:20:00 +0000</pubDate><guid>https://irq5-7854a1fdb9f4.pages.dev/2013/07/testing-the-shinyei-ppd42ns/</guid><description>&lt;p>Around this time last month, the haze (or what some people call &lt;em>smog&lt;/em>) here set a record high level for the Pollutant Standards Index (PSI). This is what it looked like outside:&lt;/p>&lt;p>&lt;picture>&lt;img src=//farm4.staticflickr.com/3678/9320458829_dea662ceb5_o.jpg alt="haze vs no haze">&lt;/picture>&lt;/p>&lt;p>As our National Environment Agency only published 3 hour PSI averages, I thought it would be good if we could get our own measurements. The PSI used here is somewhat like the &lt;a href=https://en.wikipedia.org/wiki/Air_quality_index rel=noopener target=_blank class=external>Air Quality Index (AQI)&lt;/a> used in the US, and is made up of 5 components:&lt;/p>&lt;ol>&lt;li>PM10 particulate matter&lt;/li>&lt;li>sulphur dioxide (SO2)&lt;/li>&lt;li>carbon monoxide (CO)&lt;/li>&lt;li>nitrogen dioxide (NO2)&lt;/li>&lt;li>ozone&lt;/li>&lt;/ol>&lt;p>Note that the AQI includes PM2.5 particulate matter whereas PSI does not. From what we can see, I would think that a major contributor to the PSI is particulate matter (PM).&lt;/p>&lt;p>I took a brief look at the projects such as the &lt;a href=http://airqualityegg.wikispaces.com/AirQualityEgg rel=noopener target=_blank class=external>Air Quality Egg&lt;/a> and &lt;a href="https://docs.google.com/document/pub?id=1pjk6gGmM0Ge917gmD424P428mynxOy34-u9zL1_QyVs" rel=noopener target=_blank class=external>PACMAN&lt;/a>. They used either the &lt;strong>Sharp GP2Y1010AU0F&lt;/strong> or the &lt;strong>Shinyei PPD42NS&lt;/strong>. These sensors generally operate &lt;a href=http://www.shinyei.co.jp/stc/optical/main_dust_e.html rel=noopener target=_blank class=external>based on the light-scattering principle&lt;/a>, by measuring the amount of light that is scattered by particles.&lt;/p>&lt;h1 id=the-ppd42ns>The PPD42NS&lt;/h1>&lt;p>Chris Nafis has done a great job documenting the use of both the &lt;a href=http://www.howmuchsnow.com/arduino/airquality/ rel=noopener target=_blank class=external>GP2Y1010AU0F&lt;/a> and the &lt;a href=http://www.howmuchsnow.com/arduino/airquality/grovedust/ rel=noopener target=_blank class=external>PPD42NS&lt;/a>, compared against a Dylos DC1100 air quality monitor. As the GP2Y1010AU0F requires a certain pulse waveform to be supplied to its LED pin, I would say that the PPD42NS is self-contained and thus much easier to hook up.&lt;/p>&lt;p>&lt;picture>&lt;img src=//farm6.staticflickr.com/5500/9323247524_c97d976ce7_o.jpg alt="PPD42NS (front)">&lt;/picture>&lt;/p>&lt;p>On the front, it has 2 pots labelled &lt;code>VR1&lt;/code> and &lt;code>VR3&lt;/code> that have been already factory-calibrated. The IR detector is covered under the metal can. Interestingly there&amp;rsquo;s a slot by the side labelled &lt;code>SL2&lt;/code> which is unused. If you&amp;rsquo;d like to see what&amp;rsquo;s under the hood, Chris opened up the black casing and &lt;a href="http://forums.parallax.com/showthread.php/139538-air-quality-monitor-using-particle-counter?p=1185869&amp;viewfull=1#post1185869" rel=noopener target=_blank class=external>posted a photo here&lt;/a>.&lt;/p>&lt;p>&lt;picture>&lt;img src=//farm6.staticflickr.com/5468/9323247812_a1ebc49abb_o.jpg loading=lazy alt="PPD42NS PCB">&lt;/picture>&lt;/p>&lt;p>Looking at the date code grid on the PCB, the units look like they were manufactured in July 2012. The circuit consists largely of passives and an op-amp. &lt;code>RH1&lt;/code> is the resistor heater which, in theory, could be removed to save power if there was some other method of air circulation.&lt;/p>&lt;p>&lt;a href="https://irq5-7854a1fdb9f4.pages.dev/2013/07/testing-the-shinyei-ppd42ns/#more">Continue reading…&lt;/a>&lt;/p></description></item><item><title>Infrared Remote Control Protocols: Part 2</title><link>https://irq5-7854a1fdb9f4.pages.dev/2012/08/infrared-remote-control-protocols-part-2/</link><pubDate>Sat, 11 Aug 2012 00:55:00 +0000</pubDate><guid>https://irq5-7854a1fdb9f4.pages.dev/2012/08/infrared-remote-control-protocols-part-2/</guid><description>&lt;p>In the &lt;a href=https://irq5-7854a1fdb9f4.pages.dev/2012/07/infrared-remote-control-protocols-part-1/ rel=noopener>previous post&lt;/a>, techniques on how to capture an IR remote signal were presented and the most reliable one was using the Arduino sketch. The captured signal was also analyzed, although we had much of our work already done for us.&lt;/p>&lt;p>In this concluding post, a remote control whose protocol is unknown will be captured and analyzed as a case study. Lastly, we will cover the re-transmission of the IR signal. The remote control in question is for my ceiling fan, &lt;a href="http://kdk.jp/product_detail.aspx?id=235" rel=noopener target=_blank class=external>KDK model M56SR&lt;/a>. The remote also works for two other fan models M56QR and M11SU.&lt;/p>&lt;p>&lt;picture>&lt;source srcset=/posts/2012/img/kdk-remote.jpg.webp type=image/webp>&lt;img src=https://irq5-7854a1fdb9f4.pages.dev/posts/2012/img/kdk-remote.jpg alt="KDK remote control" width=800 height=534>&lt;/picture>&lt;/p>&lt;p>&lt;a href="https://irq5-7854a1fdb9f4.pages.dev/2012/08/infrared-remote-control-protocols-part-2/#more">Continue reading…&lt;/a>&lt;/p></description></item><item><title>Infrared Remote Control Protocols: Part 1</title><link>https://irq5-7854a1fdb9f4.pages.dev/2012/07/infrared-remote-control-protocols-part-1/</link><pubDate>Fri, 27 Jul 2012 00:13:00 +0000</pubDate><guid>https://irq5-7854a1fdb9f4.pages.dev/2012/07/infrared-remote-control-protocols-part-1/</guid><description>&lt;p>As I was perusing the SB-Projects site on the different &lt;a href=http://www.sbprojects.com/knowledge/ir/index.php rel=noopener target=_blank class=external>IR protocol formats&lt;/a>, I decided to make a summary but later found out that it was a pretty standard thing, as documented by a Vishay document &lt;a href=http://www.vishay.com/doc?80071 rel=noopener target=_blank class=external>&amp;ldquo;Data Formats for IR Remote Control&amp;rdquo;&lt;/a> (pdf).&lt;/p>&lt;p>The infrared remote control signals are layered on top of a carrier signal of 36 or 38kHz, therefore the signal can only be &amp;ldquo;on&amp;rdquo; or &amp;ldquo;off&amp;rdquo;. A transmission typically starts with an a burst (&amp;ldquo;on&amp;rdquo; state) that is used for the Automatic Gain Control (AGC) circuitry in the receiver, followed by the &amp;ldquo;off&amp;rdquo; state and the actual data transmission.&lt;/p>&lt;p>There are 3 basic types of data transmission formats, which are illustrated in the following diagram. Protocols can be based on these transmission formats, but need not necessarily conform to them.&lt;/p>&lt;p>&lt;picture>&lt;img src=https://irq5-7854a1fdb9f4.pages.dev/posts/2012/img/ir-modulations.png alt="Illustration of IR data transmission protocols: manchester encoding, pulse distance coding and pulse length coding." width=350 height=578>&lt;/picture>&lt;/p>&lt;p>So how do you know what your remote control uses? And how do you capture the sequence so that you can re-transmit it from an IR diode?&lt;/p>&lt;p>&lt;a href="https://irq5-7854a1fdb9f4.pages.dev/2012/07/infrared-remote-control-protocols-part-1/#more">Continue reading…&lt;/a>&lt;/p></description></item><item><title>My First Arduino</title><link>https://irq5-7854a1fdb9f4.pages.dev/2011/10/my-first-arduino/</link><pubDate>Sat, 08 Oct 2011 01:02:00 +0000</pubDate><guid>https://irq5-7854a1fdb9f4.pages.dev/2011/10/my-first-arduino/</guid><description>I finally bought myself an Arduino Uno this week.
&amp;ldquo;Wait a minute&amp;mldr; then what have you been using?&amp;rdquo; I hear you ask. Previously I had access to an Arduino Duemilanove, and used it to burn the Optiboot bootloader onto an ATmega168 that I had. The Duemilanove board used an FTDI chip which had additional pins brought out to an unsoldered header marked as X3. Following this guide by Kimio Kosaka, I downloaded the precompiled avrdude for Windows and used it to program the ATmega168 via the X3 header.&lt;p>&lt;a href="https://irq5-7854a1fdb9f4.pages.dev/2011/10/my-first-arduino/#more">Continue reading…&lt;/a>&lt;/p></description></item><item><title>Reading BIOS EEPROM chips</title><link>https://irq5-7854a1fdb9f4.pages.dev/2010/07/reading-bios-eeprom-chips/</link><pubDate>Thu, 01 Jul 2010 00:51:00 +0000</pubDate><guid>https://irq5-7854a1fdb9f4.pages.dev/2010/07/reading-bios-eeprom-chips/</guid><description>&lt;p>I had these chips extracted from the old motherboards I threw away some time ago, and I thought I&amp;rsquo;d have some use for them some day.&lt;/p>&lt;p>&lt;picture>&lt;source srcset=/posts/2010/img/p1090636.jpg.webp type=image/webp>&lt;img src=https://irq5-7854a1fdb9f4.pages.dev/posts/2010/img/p1090636.jpg alt="Photo of a few BIOS chips" width=400 height=267>&lt;/picture>&lt;/p>&lt;p>These are Electrically Erasable and Programmable Read-Only Memory (EEPROM) chips which are used to hold the BIOS code. I was curious to find out what&amp;rsquo;s in these chips and if I could re-use them for storage in my projects, so I decided to interface with them.&lt;/p>&lt;p>&lt;a href="https://irq5-7854a1fdb9f4.pages.dev/2010/07/reading-bios-eeprom-chips/#more">Continue reading…&lt;/a>&lt;/p></description></item></channel></rss>