Samsung remote IR-codes
The IRremote library could not parse samsung infrared data, but
here's the raw codes with examples how to send them. I only read
the most used buttons. Codes are already in variables :)
Codes:
// Power ON/OFF const unsigned int S_pwr[68]={4600,4350,700,1550,650,1550,650,1600,650,450,650,450,650,450,650,450,700,400,700,1550,650,1550,650,1600,650,450,650,450,650,450,700,450,650,450,650,450,650,1550,700,450,650,450,650,450,650,450,650,450,700,400,650,1600,650,450,650,1550,650,1600,650,1550,650,1550,700,1550,650,1550,650}; // channel 1 const unsigned int S_1[68]={4650,4300,700,1550,700,1550,650,1550,700,400,700,400,700,400,700,450,700,400,700,1500,700,1500,700,1550,700,450,650,400,700,450,650,450,700,400,700,400,700,450,650,1550,700,400,700,400,700,400,700,450,650,450,650,1550,700,1500,700,450,650,1550,700,1550,650,1550,700,1500,700,1550,650}; // channel 2 const unsigned int S_2[68]={4600,4350,650,1550,700,1500,700,1550,700,400,700,400,700,450,650,450,700,400,700,1500,700,1500,700,1550,700,400,700,450,650,450,700,400,700,400,700,1500,700,400,700,1550,700,400,700,400,700,450,650,450,700,400,700,400,700,1550,650,450,700,1500,700,1550,650,1550,700,1500,700,1550,650}; // channel 3 const unsigned int S_3[68]={4600,4350,700,1500,700,1550,650,1600,650,400,700,450,700,400,700,400,700,400,700,1550,650,1550,700,1500,700,400,700,450,700,400,700,400,700,400,700,400,700,1550,700,1500,700,450,650,450,700,400,700,400,700,400,700,1550,700,400,700,400,700,1550,650,1550,700,1500,700,1550,700,1500,700}; // channel 4 const unsigned int S_4[68]={4600,4350,650,1550,700,1500,700,1550,700,400,700,400,700,450,650,450,700,400,700,1500,700,1550,650,1550,700,400,700,450,650,450,700,400,700,400,700,400,700,400,700,450,650,1550,700,400,700,400,700,450,700,400,700,1500,700,1550,650,1550,700,400,700,1550,650,1550,700,1500,700,1550,650}; // channel 5 const unsigned int S_5[68]={4650,4350,700,1500,700,1550,650,1550,700,400,700,450,700,400,700,400,700,400,700,1500,700,1550,700,1500,700,450,650,450,700,400,700,400,700,400,700,1550,700,400,700,400,650,1550,700,450,650,450,700,400,700,450,650,450,650,1550,650,1550,700,400,700,1550,700,1500,700,1500,700,1550,700}; // channel 6 const unsigned int S_6[68]={4600,4350,650,1550,700,1500,700,1550,700,400,700,400,700,450,650,450,700,400,700,1500,700,1550,650,1550,700,400,700,450,700,400,700,400,700,400,700,400,700,1550,700,400,700,1500,700,450,650,450,700,400,700,400,700,1550,650,450,650,1550,700,400,700,1550,650,1550,700,1500,700,1550,650}; // channel 7 const unsigned int S_7[68]={4600,4350,700,1500,700,1550,650,1550,700,400,700,450,700,400,700,400,700,400,700,1550,650,1550,700,1500,700,400,700,450,700,400,700,400,700,400,700,450,650,450,650,1550,700,1500,700,450,700,400,700,400,700,450,650,1550,650,1550,700,450,650,400,700,1550,700,1500,700,1550,650,1550,700}; // channel 8 const unsigned int S_8[68]={4600,4350,650,1600,650,1500,700,1550,700,400,700,400,700,400,700,450,700,400,700,1500,700,1550,650,1550,700,400,700,450,650,450,700,400,700,400,700,1550,650,450,650,1550,700,1500,700,450,700,400,700,400,700,400,700,400,700,1550,700,400,700,450,650,1550,650,1550,700,1500,700,1550,650}; // channel 9 const unsigned int S_9[68]={4600,4350,700,1500,700,1550,650,1550,700,400,700,450,650,450,650,450,700,400,700,1500,700,1550,700,1550,650,400,700,450,700,400,700,400,700,400,700,450,650,1550,650,1600,650,1550,650,450,700,400,700,400,700,400,700,1550,700,400,700,400,700,400,700,1550,700,1500,700,1500,700,1550,700}; // channel 0 const unsigned int S_0[68]={4650,4300,700,1550,700,1500,700,1550,700,400,700,400,700,400,700,450,650,450,650,1550,700,1550,650,1550,700,400,700,400,700,400,700,450,700,400,700,1550,650,400,700,450,700,400,650,1550,700,400,700,450,700,400,700,400,700,1500,700,1550,700,1500,700,400,700,1550,650,1550,700,1500,700}; // source const unsigned int S_scr[68]={4600,4350,700,1550,650,1550,700,1500,700,450,650,450,700,400,700,400,700,400,700,1550,700,1500,700,1550,700,400,700,400,700,400,700,400,700,400,700,1550,700,400,700,450,650,450,650,450,700,400,700,400,700,400,700,450,650,1550,700,1500,700,1550,650,1550,700,1500,700,1550,700,1500,700}; // channel up const unsigned int S_pup[68]={4600,4350,700,1500,700,1500,700,1550,700,450,650,400,700,450,650,450,700,400,700,1500,700,1550,650,1550,700,450,650,450,700,400,700,400,700,400,700,400,700,1550,700,400,700,400,700,1550,650,450,700,400,700,400,700,1550,650,450,650,1600,650,1550,650,450,700,1500,700,1500,700,1550,650}; // channel down const unsigned int S_pdown[68]={4650,4300,700,1550,700,1500,700,1550,700,400,700,400,700,400,700,450,650,450,650,1550,700,1500,700,1550,700,400,700,400,700,400,700,450,700,400,700,400,700,400,700,450,650,450,650,1550,700,400,700,450,650,400,700,1550,700,1500,700,1550,700,1500,700,400,700,1550,650,1550,700,1500,700}; // volume up const unsigned int S_vup[68]={4600,4350,650,1550,700,1500,700,1550,700,400,700,400,700,450,650,450,700,400,700,1500,700,1550,650,1550,700,400,700,400,700,450,650,450,700,400,700,1500,700,1550,650,1550,700,400,700,450,700,400,700,400,700,400,700,450,650,450,650,450,650,1550,700,1500,700,1550,700,1500,700,1550,650}; // volume down const unsigned int S_vdown[68]={4600,4350,700,1550,650,1550,700,1500,700,450,650,450,700,400,700,400,700,400,700,1550,700,1500,700,1550,700,400,700,400,700,400,700,450,650,450,650,1550,700,1500,700,450,650,1550,700,400,700,400,700,450,700,400,700,400,700,400,700,1550,700,400,700,1500,700,1500,700,1550,700,1500,700}; // TV/DTV const unsigned int S_tv[68]={4600,4350,650,1550,700,1500,700,1550,700,400,700,400,700,400,700,450,700,400,700,1500,700,1500,700,1550,700,400,700,400,700,450,650,450,700,400,700,1500,700,1550,700,400,700,400,700,400,700,400,700,1550,700,400,700,400,700,400,700,1550,700,1500,700,1550,650,1550,700,400,700,1500,700}; // guide const unsigned int S_guide[68]={4600,4350,700,1500,700,1550,700,1500,700,450,650,450,700,400,700,400,700,400,700,1550,650,1550,700,1500,700,450,650,450,700,400,700,400,700,400,700,1550,700,1500,700,1550,650,1550,700,400,700,400,700,1550,700,400,700,400,700,400,700,450,700,400,650,1550,700,1550,650,450,700,1500,700}; // exit const unsigned int S_exit[68]={4650,4300,700,1550,650,1550,700,1550,700,400,700,400,700,450,650,450,650,450,650,1550,700,1500,700,1550,700,450,650,400,700,450,650,450,700,400,700,1500,700,400,700,1550,700,1500,700,400,700,1550,700,450,650,400,700,450,650,1550,700,400,700,400,700,1550,650,450,650,1550,700,1500,700}; // mute const unsigned int S_mute[68]={4650,4350,650,1550,650,1550,700,1550,700,400,700,400,700,400,700,450,650,450,650,1550,700,1500,700,1550,700,400,700,450,650,400,700,450,700,400,700,1500,700,1550,650,1550,700,1500,700,450,700,400,700,400,700,400,700,400,700,450,650,450,700,400,700,1500,700,1550,650,1550,700,1500,700};
Sending:
Irsend.sendRAW(S_pwr,68,38);
Remote will probably work in all samsung models, but with LE40M8 for sure. Posted by Ville Valta at 2.6.11
20 comments:
AnonymousTuesday, June 07, 2011 3:45:00 PM Hi,
You can use IRSend with Samsung.
See http://www.maartendamen.com/2010/05/jeenode-infrared-project-part-1-getting-started/
and, in http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html, find by “samsung” and it explains how to use samsung codes.
Reply
Julez StoneSunday, June 17, 2012 11:16:00 PM Hi, i cant seem to get the raw data from my samsung remote…
How did you achieve this?
Thanks, Samuel
Reply
ShineWednesday, August 08, 2012 3:08:00 PM I managed to decode Samsung Air conditioner codes. My results are at:
https://docs.google.com/spreadsheet/ccc?key=0Aupzmp8AqC8JdGtNOXhUc0R0WC1hbVdRa0p3aDVxdFE#gid=0
anyway, I'm not able to compute the checksum (2 byte of every burst). If anyone figured it out, please let me know.
Replies
AnonymousSunday, September 08, 2013 5:01:00 PM
Hey!
Your results will make more sense if you (1) invert 0/1 bits, (2) interpret data so that LSB are transmitted first. Then at least temperature will look better (that half-byte is just offset from its minimum temperature of 16C).
I do not see any checksum there: consider t=21 and t=22 commands, except for the temperature-related bits there's no difference at all. Although its not quite clear what is in the second byte of the second package, which changes usually but not always with t change.
/Dmitry.
AnonymousSunday, September 08, 2013 5:14:00 PM Or I see – the checksum is lousy enough to count just bits regardless of their position. This explains :)
Reply
richcoraSaturday, September 08, 2012 10:04:00 PM This comment has been removed by the author.
Reply Actually i need to scan some channel on my tv and i lost my remote.
Thanks a lot :)
Reply
Islam QabelThursday, February 07, 2013 3:44:00 PM
Hi
I do not understand the raw data,all i know that for samsung the data is 32 bit (data+address) plus one start bit and one stop bit, for example for Samsung TV press“1” button in HEX as follows: FB040707 which will be sent from LSB to MSB as follows
the original ordering is from MSB to LSB 1111 1011 0000 0100 0000 0111 0000 0111 sending code in reversed order is start bit +1110 0000 1110 0000 0010 0000 1101 1111+stop bit so how to understand the codes above??? please help
Reply
Islam QabelFriday, February 08, 2013 2:59:00 AM
Got it.
The first two numbers represents the start bit ON & OFF durations
the last number is ON for stop bit
so the code will be started from the third number to the number before the last number….Here is the decoding procedure:
Since for Samsung IR coding.... Start bit: 4500us ON 4500us OFF Logic "1": 560us ON 1690us OFF Logic "0": 560us ON 560us OFF Stop bit : 560us ON 560us OFF
for example:to decode Power ON/OFF
4600,4350 is the starting bit 700,1550 is "1" also for 650,1550...650,1600 650,450 is "0" also for 700,450....700,400
so the transmitting code is start bit+ “1110 0000 1110 0000 0100 0000 1011 1111” + stop bit……i tried these codes for Power ON/OFF, Volume Up, Volume down, Source input and button “1” and tested successfully on my LCD TV/PC/component monitor
Anyway thanks for the great work
Reply
AnonymousTuesday, March 12, 2013 3:17:00 PM What is the frequency used by samsung remotes?
Reply
AnonymousSunday, May 12, 2013 12:51:00 PM The 38 in the example given
Irsend.sendRAW(S_pwr,68,38);
means that the frequency is 38KHz
Reply
Thanakorn ThanprasitTuesday, May 21, 2013 11:02:00 AM It is work thank for this post
Reply
AnonymousThursday, January 30, 2014 9:37:00 AM Could someone post the code of the PIP key?
Reply
AnonymousMonday, February 24, 2014 11:09:00 PM Thank you soo much for these codes! they work! :)
Reply
AnonymousMonday, March 10, 2014 11:36:00 AM
can someone please tell me what exactly raw codes are?? I am a novice at all this.. please help! :) Thanx
Reply
gvorsterWednesday, December 09, 2015 6:41:00 PM
Works for me too on my Samsung tv! Really would like to know how to record the raw codes for Samsung. I need it to get the codes for the 'SOURCE' button on my remote, which pops up a submenu on the tv showing options for 'TV', 'HDMI1', 'HDMI2'. Are these 2 separate raw codes to send: one for the 'source' button and one for the related submenu option. Or is it one direct code for the submenu option?
Reply