Decode IR signal of Panasonic HD camcorder HC-X900M remote controller

If you want to customize your own remote controller for Panasonic HD video camera HC-X900M, or build it into your own system to control multiple camcorders just like my old post “Synchronize multiple Canon Rebel T4i video shooting with reverse-engineered RC-6 protocol“, this post will help you decode the Infra-red signal emitting from its remote controller “N2QAEC000024”.

The appearance of the remote controller already discloses a fact that N2QAEC000024 is more complex than Canon’s RC-6, which has only two buttons. With N2QAEC000024, you basically can control almost everything of the camcorder. And oscilloscope verifies my assumption.

N2QAEC000024

Again you must build a fast-responsive IR signal detector as we talked about in my previous post, otherwise you may lose high-frequency pulses. As I figured out the shortest pulse is only about 9.6us wide. Here are some plots from my oscilloscope:

Screen Capture

Figure 1. Overall, there are two groups of pulses about 74ms apart. Actually, the two are duplicates of each other, and I think the second is for redundancy check purpose.

Screen Capture

Figure 2. Zooming in on one of groups doesn’t help too much to understand what’s inside as there are still too many pulses.

Screen Capture

Figure 3. The very beginning part of a pulses group.

Screen Capture

Figure 4. Some random section.

Screen Capture

Figure 5. Zooming in to the unit pulse.

After quite a lot of hard work counting the number of pulses and measuring the width of the waveform, I was able to conclude its IR signal protocol as follows:

  • Unit pulse (the shortest pulses combined together to form different logic) is about 9.6us high followed by 17.6us low. Totally takes about 27.2us.
  • Transmission starts with 129 unit pulses followed by low for about 1.6ms.
  • Data is 64-bit wide. Logic High is composed of 16 consecutive unit pulses followed by low for about 0.416ms. Logic Low is low all the way for about 0.851ms.
  • Data for START/STOP video capture is: 0b11011111, 0b11111110, 0b11111110, 0b10101111, 0b10110111, 0b11010111, 0b01011101, 0b10111101, or in hex 0xDFFEFEAFB7D75DBA. The MSB bit gets sent out first. (This was later proved to be incorrect. See below for corrected decoding)

I haven’t tried to decode other buttons, but they should follow the same rule with different data sequence.

[Added on 11/26/2013]
I need to correct my original post that the IR signal is not 64-bit long, but 72-bit long (so far). The “start/stop record” command is all the way low (0x00) for the 9th byte, that’s why I mistakenly concluded that the data was only 8-byte long. I recently decoded some of other IR commands (power on/off, menu, up, down, left, right, ok button) and found  that some of them are longer than 64 bits. So I conclude again that the IR signal is 72-bit long SO FAR. Also, the delay between the two repeats (Figure 1) is 67.192ms, reducing from 74ms.

Here are the decoded new buttons:

  • “Start/Stop Record”
    0b11011111, 0b11111110, 0b11111110, 0b10101111, 0b10110111, 0b11010111, 0b01011101, 0b10111101, 0b00000000
  • “Menu”
    0b11011111, 0b11111110, 0b11111110, 0b10101111, 0b10110111, 0b10101101, 0b10111010, 0b10111110, 0b00000000
  • “Power”
    0b11011111, 0b11111110, 0b11111110, 0b10101111, 0b10110111, 0b11010101, 0b01111101, 0b11010110, 0b00000000
  • “Up”
    0b11011111, 0b11111110, 0b11111110, 0b10101101, 0b11011011, 0b11111011, 0b01010111, 0b01111010, 0b00000000
  • “Down”
    0b11011111, 0b11111110, 0b11111110, 0b10101101, 0b11011011, 0b10111101, 0b10101111, 0b01111010, 0b00000000
  • “Left”
    0b11011111, 0b11111110, 0b11111110, 0b10101101, 0b11011011, 0b10101110, 0b11010110, 0b11011110, 0b10000000
  • “Right”
    0b11011111, 0b11111110, 0b11111110, 0b10101101, 0b11011011, 0b11011101, 0b10101010, 0b11011110, 0b10000000
  • “OK”
    0b11011111, 0b11111110, 0b11111110, 0b10101111, 0b10110111, 0b11101011, 0b01111111, 0b11100000, 0b00000000

With new codes, I am now able to simultaneously remote-control 45 HC-X900M video cameras to turn on/off, format cards, change settings and etc,.

11 Replies to “Decode IR signal of Panasonic HD camcorder HC-X900M remote controller”

  1. Thanks so much for this, there was nothing accurate online for me to reference for the data sent by this remote. Any chance you happened to take a look at any of the other buttons or will I be borrowing time on my schools oscilloscope?

  2. I believe there is a typo in binary “REC”
    Looking at the hex : 8th byte is 1,0,1,1,1,0,1,0 and 9th would be 1,0,0,0,0,0,0,0 (at least these two work for me )
    Great job anyway. Thanks a million !

    1. Hello AKD
      I search code for button W (zoom out) and EXT DISPLAY
      My remote control is broken. I am unable do decode.
      Tank you.

  3. I’m new to this and have zero experience in any field on this topic. I’m going to buy a Panasonic HC-X920 and need a remote for it. So far, Panasonic has only released info for controlling the camera via wifi which is garbage and not logical in the field. The only other option is apparently an android app which also seems a bit unstable. Is it possible to hack the remote for the HC-X900 to work flawlessly with the HC-X920? Or any hack on the market to control this camera with an IR remote? It has an IR sensor so I was hoping somebody somewhere could help me.

      1. I found this
        Tested and working

        # Please make this file available to others
        # by sending it to
        #
        # this config file was automatically generated
        # using lirc-0.8.4a(default) on Sat May 15 20:21:57 2010
        #
        # contributed by
        #
        # brand: Panasonic N2QAEC000024
        # model no. of remote control: N2QAEC000024
        # devices being controlled by this remote: Panasonic HDC-SD200
        #

        begin remote

        name N2QAEC000024
        bits 24
        flags SPACE_ENC
        eps 30
        aeps 100

        header 3468 1731
        one 446 1269
        zero 446 424
        ptrail 447
        pre_data_bits 24
        pre_data 0x40040E
        gap 74451
        toggle_bit_mask 0x0

        begin codes
        capture_still 0x14667C
        T/+ 0x14465C
        W/- 0x14C6DC
        start/stop 0x143329
        power 0x143C26
        ext_display 0x14EAF0
        date/time 0x14E6FC
        search_back 0x14405A
        play 0x14504A
        search_forw 0x14C0DA
        still_adv_back 0x14E0FA
        pause 0x14607A
        still_adv_forw 0x14F0EA
        skip_back 0x149288
        stop 0x14001A
        skip_forw 0x145248
        delete 0x140E14
        menu 0x146A70
        up 0x940B91
        left 0x94CB51
        right 0x944BD1
        down 0x948B11
        ok 0x141A00
        end codes

        end remote

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.