Media Remote: Difference between revisions

From Xenon Wiki
Jump to navigation Jump to search
imported>Tuxuser
(Fixed pic)
imported>Tuxuser
 
Line 307: Line 307:
The remote control works as a lowbase of the xbox360, so the power on and off still work in Linux, also you can get all the IR codes into linux. So 'if' a Mediacenter is ever ported to Xbox 360 Linux, you could use the official remote. (IR codes and info retrieved by Icekiller, with SMC.C from tmbinc, small remote by kwkward)
The remote control works as a lowbase of the xbox360, so the power on and off still work in Linux, also you can get all the IR codes into linux. So 'if' a Mediacenter is ever ported to Xbox 360 Linux, you could use the official remote. (IR codes and info retrieved by Icekiller, with SMC.C from tmbinc, small remote by kwkward)


[[Category:Hardware]]
[[Category:Xbox360_Hardware]]

Latest revision as of 00:24, 7 January 2014

General Information

Media-remote.jpg

Standard Media Remote•The standard remote (as opposed to the Universal Media Remote) was only released in limited quantities with Xbox 360 premium packages at launch.

  • The difference between the Universal Media Remote and the Standard Remote appears to just be the button additions.
  • The remote uses the IR port located on the front of the Xbox 360.
  • Some Windows Media Center Edition computers recognize this remote as a normal Media Center remote.

Confirmed Facts

  • All Windows Media Center remotes are recognized by the Xbox 360.


Linux Facts

Big remote Big remote

  • IRCODE , Function
  • {'26','Button Y'},
  • {'25','Button B'},
  • {'24','DVD menu'},
  • {'23','BACK'},
  • {'22','OK'},
  • {'20','Button left'},
  • {'21','Button right'},
  • {'19','Stop button'},
  • {'18','Pause button'},
  • {'17','Rec button'},
  • {'16','Play button'},
  • {'15','Fast rewind <<'},
  • {'14','fast foward >>'},
  • {'11','Volume down'},
  • {'10','Volume up'},
  • {'09','Button 9 on ke*ypad part'},
  • {'08','Button 8 on ke*ypad part'},
  • {'07','Button 7 on ke*ypad part'},
  • {'06','Button 6 on ke*ypad part'},
  • {'05','Button 5 on ke*ypad part'},
  • {'04','Button 4 on keypad part'},
  • {'03','Button 3 on keypad part'},
  • {'02','Button 2 on keypad part'},
  • {'01','Button 1 on keypad part'},
  • {'00','Button 0 on keypad part'},
  • {'1a','Go to ending >|'},
  • {'1b','Go to beginning |<'},
  • {'1c','Unknown'},
  • {'1d','100 on remote'},
  • {'1e','Button up'},
  • {'1f','Button down'},
  • {'0a','Clear'},
  • {'0b','ENTER'},
  • {'0c','Unknown'},
  • {'0d','Windows Media Start'},
  • {'0e','Mute'},
  • {'0f','Info'},
  • {'4f','Display'},
  • {'51','Title'},
  • {'64','Big X button on top, use as alternative 'on'?'},
  • {'68','Button X'},
  • {'66','Button A '},
  • {'6c','Channel up'},
  • {'6d','Channel down'};

the small remote 'image insert here'

  • IRCODE , Function
  • {'64','guide'},
  • {'19','stop'},
  • {'18','pause'},
  • {'16','play'},
  • {'15','rewind'},
  • {'14','fast forward'},
  • {'1A','chapter next'},
  • {'1B','chapter prev'},
  • {'4F','display'},
  • {'51','title'},
  • {'24','dvd menu'},
  • {'23','back'},
  • {'0F','info'},
  • {'1E','up'},
  • {'1F','down'},
  • {'20','left'},
  • {'21','right'},
  • {'22','ok'},
  • {'12','A'},
  • {'25','B'},
  • {'13','X'},
  • {'26','Y'},
  • {'0D','windows'},
  • {'17','record'};


Proof of concept code by Icekiller

/*
 * Example code of how to use the build in IR of the xbox 360
 * Code rewritten based on tmbinc's smc.c
 * free to use under GPL
 * 
 * 20 januari 2008 by Icekiller
 */

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <getopt.h>
#include <string.h>
#include <time.h>

#define SMC_FILENAME "/dev/smc"

int smc_fd;
void wait(int seconds)
{
    clock_t endwait;
    endwait = clock() + seconds * CLOCKS_PER_SEC;
    while (clock() < endwait) {
    }
}

int main(int argc, char **argv)
{
    int first = 1;
    /* try open SMC. if this doesn't work, bail out. */
    smc_fd = open(SMC_FILENAME, O_RDWR);
    if (smc_fd < 0) {
	perror(SMC_FILENAME);
	return 1;
    }

    while (1) {
	unsigned char msg[16];
	int option_index = 0, c;
	msg[0] = 0x16;
	/* prepare message */
	memset(msg, 0, 16);

	if (c != 'w') {
	    msg[0] = 0x16;

	    int i;

	    if (write(smc_fd, msg, 16) != 16) {
		perror("write");
		break;
	    }
	}

	if ((c == 'w') || (msg[0] < 0x80)) {
	    int wait_for = msg[0];
	    while (1) {
		msg[0] = 0x16;
		if (read(smc_fd, msg, 16) != 16)
		    perror("read");

		int valueread;
		valueread = msg[3];

		if (msg[0] != 0x16)
		    switch (valueread) {
		    case 0x26:
			printf("Button Y");
			break;
		    case 0x25:
			printf("Button B");
			break;
		    case 0x24:
			printf("DVD menu");
			break;
		    case 0x23:
			printf("Back");
			break;
		    case 0x22:
			printf("OK");
			break;
		    case 0x21:
			printf("Button left");
			break;
		    case 0x20:
			printf("Button right");
			break;
		    case 0x19:
			printf("Stop button");
			break;
		    case 0x18:
			printf("Pause button");
			break;
		    case 0x17:
			printf("Rec button");
			break;
		    case 0x16:
			printf(">");
			break;
		    case 0x15:
			printf("<<");
			break;
		    case 0x14:
			printf(">>");
			break;
		    case 0x13:
			printf("Button X");
			break;
		    case 0x12:
			printf("Button A");
			break;
		    case 0x11:
			printf("Volume down");
			break;
		    case 0x10:
			printf("Volume up");
			break;
		    case 0x09:
			printf("Button 9");
			break;
		    case 0x08:
			printf("Button 8");
			break;
		    case 0x07:
			printf("Button 7");
			break;
		    case 0x06:
			printf("Button 6");
			break;
		    case 0x05:
			printf("Button 5");
			break;
		    case 0x04:
			printf("Button 4");
			break;
		    case 0x03:
			printf("Button 3");
			break;
		    case 0x02:
			printf("Button 2");
			break;
		    case 0x01:
			printf("Button 1");
			break;
		    case 0x00:
			printf("Button 0");
			break;
		    case 0x1a:
			printf(">|");
			break;
		    case 0x1b:
			printf("<");
			break;
		    case 0x1c:
			printf("Unknown");
			break;
		    case 0x1d:
			printf("Unknown");
			break;
		    case 0x1e:
			printf("Button up");
			break;
		    case 0x1f:
			printf("Button down");
			break;
		    case 0x0a:
			printf("Clear");
			break;
		    case 0x0b:
			printf("ENTER");
			break;
		    case 0x0c:
			printf("Unknown");
			break;
		    case 0x0d:
			printf("WMS");
			break;
		    case 0x0e:
			printf("Mute");
			break;
		    case 0x0f:
			printf("Info");
			break;
		    case 0x4f:
			printf("Display");
			break;
		    case 0x51:
			printf("Title");
			break;
		    case 0x64:
			printf("Guide");
			break;
		    case 0x68:
			printf("Button X");
			break;
		    case 0x66:
			printf("Button A");
			break;
		    }
		printf("\n", valueread);
		if (msg[0] == wait_for)
		    break;
	    }
	}
	wait(1);
    }

}

The remote control works as a lowbase of the xbox360, so the power on and off still work in Linux, also you can get all the IR codes into linux. So 'if' a Mediacenter is ever ported to Xbox 360 Linux, you could use the official remote. (IR codes and info retrieved by Icekiller, with SMC.C from tmbinc, small remote by kwkward)