Time to do the real test!Īt this point it was like 2 a.m., but I was too excited to wait. The final transmission:Īs you can see, the signals are essentially the same. I wasn't sure if this would actually matter, but I corrected it by simply updating the F_CPU flag to 1014814 from 1000000. One thing I did notice was that the ATtiny's internal clock seemed slightly fast (roughly 137/135). To debug / check my work, I used the RTL-SDR to look at the transmitted signal. I fed the button input to INT0 and had the actual transmission in the external interrupt, so that I could have ATtiny stay in powered down mode until the button was pressed. Instead of messing with timers, I just used _delay_us() for simplicity. This let me extract the actual RF signal the remote transmits. Unfortunately, I don't have a scope (though should really get one), so I went for a more indirect, but fun, approach - an RTL-SDR. Since I had a working remote and knew the schematic, I could have just used an oscilloscope to probe the signal pin for the code. In addition, there was a block diagram, functional description, and even the entire schematic. Specifically, I found that the device transmits at 318 MHz and uses OOK modulation of the carrier wave and a kind of PPM for the data encoding. Some additional searching got me the FCC ID EF4 ACP00872, and I was able to look up the device in the FCC database, which provided a ton of information. However, I did find the manufacturer's name (Linear), and some searching got me to the ACT-31B product page, which explained that each remote was factory programmed with a unique code, and that the receiver needed to be programmed to accept individual remotes. No dip switch for setting a code, and no FCC ID.