RemoteJack: Arduino Awaits in Ambush to Thwart Unwanted TV Channel Changes




Introduction: RemoteJack: Arduino Awaits in Ambush to Thwart Unwanted TV Channel Changes

About: Did I unplug the solder iron?
WARNING: An Instructables bug keeps removing the name of the IRremote.h library surrounded by <> following the #include statement in my RemoteJack code at the bottom of the guide. Please remember to put it back before you compile and upload to Arduino. 


For those of you who are still struggling with powerful siblings over TV channel selections, I give you the RemoteJack.

This Arduino contraption sits somewhere in between the TV and the holder of the remote control. While inactive, you can change channels all  you want. But once you activate RemoteJack, it just waits in ambush for any remote control signal. Once it intercepts one, it will sends a random remote control code (which you select) to the TV, cable box, satellite receiver, etc that's guaranteed to drive those who unjustly changed the channel mad.


The RemoteJack project is based on Ken Shirriff's IR remote library

  • Arduino Uno
  • 38KHz IR receiver (3-pin)
  • IR transmitter LED
  • 100 Ohms resistor
  • Breadboard
  • Jumper wires

  1. Build the RemoteJack circuit
  2. Decode your remote buttons: Upload to your Arduino the IRrecvDump.ino  then capture the remote button codes you wish to use with the RemoteJack. This is the remote button code that RemoteJack will transmit at random whenever RemoteJack detects any incoming remote signal, such as a channel change.  For example, you can choose your remote's on/off button or the channel increment/decrement button as the button code you want RemoteJack to transmit at random.  You decide what command the RemoteJack should send to your TV or device. With the IRrecvDump.ino loade into your Arduino, open the Arduino serial monitor and point the remote at the RemoteJack IR receiver. Click any remote control button of choice to display its code in the serial monitor window in HEX. Save the codes for the buttons you wish to use in the RemoteJack. Also, this sketch will tell you which remote vendor-specific library method  to use. My remote controls were detected by the sketch as NEC remotes. There is an IR send and receive method in the IR remote library for various manufacturers such as Sony, NEC, etc. You have to use the method/function that matches your remote. Out of the box, Ken's IR remote library supports NEC, SONY , RC5, RC6 remote control standards and can also decode/transmit many non-standard remote control codes.
  3. Type the remote button code(s) you selected from above step in my RemoteJack.ino sketch (below) then upload the sketch to the Arduino.
  4. With the RemoteJack located somewhere between  the TV and the remote control path, give it a shot. Press any button on the remote and watch the TV (or any target device) behave erratically. Make sure the tip of the IR LED is pointing in the direction of the TV receiver. This is important for good IR transmission.

Remember this is just for fun so please don't go too far. Do this at your own risk.


  RemoteJack: Intercepts any remote control signal then adds to it
  preselected remote button codes in random numbers simulating random
  remote button clicks. You need to replace my remote button code and method with yours.
  Remixed by: Hazim Bitar (techbitar)
  Contact: techbitar at gmail dot com
  LICENSE: IRremote library copyright by Ken Shirriff
  Everything else is in the public domain.


int STATUS_PIN = 13;
int BUTTON_PIN = 12;
int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);
IRsend irsend;

decode_results results;

void setup()
  irrecv.enableIRIn(); // Start the receiver

void loop() {
  if (irrecv.decode(&results)) {
    digitalWrite(STATUS_PIN, HIGH);
    Serial.println(results.value, HEX);
    for (int i = 0; i < random(3,10) ; i++) {
// Change the method below and its two parameters based on the output of the
IRrecvDump.ino sketch.
irsend.sendNEC(0x80BF4BB4, 32);

    // sendNEC(unsigned long data, int nbits)
    // sendSony(unsigned long data, int nbits)
    // sendRC5(unsigned long data, int nbits)
    // sendRC6(unsigned long data, int nbits)
    digitalWrite(STATUS_PIN, LOW);

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Be the First to Share


    • Backyard Contest

      Backyard Contest
    • Silly Hats Speed Challenge

      Silly Hats Speed Challenge
    • Finish It Already Speed Challenge

      Finish It Already Speed Challenge

    12 Discussions


    3 years ago

    getting this error in IRDump
    In function 'void dump(decode_results*)':

    IRDump:56: error: 'LG' was not declared in this scope


    6 years ago on Introduction

    How about having it remember the code to return to the last channel being watched? That way, any attempt to change the channel will automatically go back to what you were watching?

    prince ta
    prince ta

    Reply 4 years ago

    for future references:

    you can do this: if forward button is pressed (detect it's code & make condition) then send backward button code via your ir transmitter led, & vice versa.


    6 years ago on Introduction

    dude not working
    At IRrecvDump.ino i get a variable or field dump declared as void.
    At the code i get an IRrecv does not name a type.


    6 years ago on Introduction

    Got a question!

    How come the signal from the remote doesn't reach directly to the TV?
    What I'm trying to say, is that the whole idea is solid, but how can the jack interrupt the whole signal from the remote without anything of the IR signal leaking to the TV?

    When you press a button, not all the signal is caputred and resent by the jacker, some of it reach the TV! Why that doesn't happen in your case?


    7 years ago on Introduction

    now make it change inputs to a channel saying TOUGH LUCK and then change it back


    7 years ago on Introduction

    Hi! great I'ble! i have a doubt,and TBH, I'm very new to this. i uploaded "IRrecvDump" to the board, and i got the codes i needed(mine is an RC5 remote). so, what part of your program should i change now so that it works with my remote?


    7 years ago on Introduction

    Nice idea.

    You make some nice quality ibles. Is that a picture you have taken yourself of the Arduino w/ protoshield? Also what do you use to put the red arrows and the black lettering in the picture?



    Reply 7 years ago on Introduction

    Thanks WWC. I have a Canon video camera with still photo capabilities and a flash. I use Photoshop for the arrows and text.