Welcome to
 Welcome to riocar.org! Friday, August 6th 
Main Menu
· Web Links
· Downloads
· BBS/Forums
· Lens Compare
· Boot Logos
· Button Guide
· Developer Info
· Drive Upgrade
· Geek Guide
· Photo Gallery


rio car dot org FAQ (Frequently Asked Questions)

Category: Main -> Hijack Kernel Questions
Search the FAQ
·  About Hijack FAQ. 
·  What is the Hijack Kernel? 
·  What features does Hijack offer? 
·  What does Hijack require to work? 
·  Where can I get Hijack? 
·  Is it dangerous to install Hijack or a hacked Kernel? 
·  How do I install Hijack? 
·  Is there a way to automatically update Hijack with the newest release? 
·  How do I access Hijack's menu on the empeg/RioCar? 
·  What do all of the Hijack menu items do? 
·  How do I configure Hijack's options? 
·  What options for Hijack are available in config.ini? 

·  What does ir_translate do and how do I configure it?
 (Entry last updated on July 30th, 2002)

The ir_translate function of the Hijack Kernel is one of it's most powerful features. It allows you to completely remap any button/knob on the empeg/RioCar, the Rio Remote, the Kenwood remote, or ANY remote that the empeg/RioCar's IR sensor can detect to any other button on the empeg/RioCar or it's remotes. Want a long press of the bottom button to switch between the Tuner and the Player instead of between Info and Visual modes? Want to use a third party steering wheel remote to control your player? Ir_translate is how you'd do it. It also allows you to define 4 of your own PopUp menus that you can organize how you'd like, and they can even be nested.

All ir_translate options go under the [ir_translate] section that you add to the bottom of the config.ini file, and will take effect immediately after you sync.

Ir_translate uses the following format, where xxxxxxxx is the hexidecimal code that you want translated to yyyyyyyy, and anything following ";" is a comment and is ignored. To find the hex codes, use the "Button Codes Display" option in the Hijack Menu, as is described here. There is a list of the more common codes at the bottom of this FAQ entry.

xxxxxxxx=yyyyyyyy	;comment
Button macros (single button translated to a sequence of buttons) are also possible. These get defined by supplying multiple "new" codes on a line, as in:
xxxxxxxx=yyyyyyyy                     ;this button just sends "y"
xxxxxxxx=yyyyyyyy,zzzzzzzz,wwwwwwww   ;this button sends "y", then "z", then "w"
Hijack allows modifiers for the button codes so that certain codes will only be translated in certain instances.
Here is a quick reference list of available modifiers.
Modifier Action Notes
.L Long press One second or more, should be placed before short presses of the same code
.S Shift Lock
.N Not shifted Opposite of .S, Applies on Left side of =
.T Tuner Left of = only
.A Aux Left of = only
.M Main/mp3/player Left of = only
.C Car/DC Left of = only
.H Home/AC Left of = only
.U Menus are active Right of = only
.N Menus are not active Opposite of .U, Applies on Right side of =
The .L (Long) modifier turns a short/regular button press into a long (one second or more) button press and can be used on either side of the = sign. Note that order is important! When processing button presses, the translator searches in top-down order, and stops as soon as a match is found. So, placing a .L translation after a plain translation of the same button will have no effect -- the .L will never match when specified in that sequence. If there is a long and short press of the same button, the LONG press should always be specified first. Examples:
xxxxxxxx.L=vvvvvvvv		; (L)ong press of "x", send "v"
xxxxxxxx=zzzzzzzz			; short/normal of "x", send "z"
xxxxxxxx.L=yyyyyyyy.L		; long press of "x", send long press of "y"
aaaaaaaa=yyyyyyyy,vvvvvvvv.L	; any press of "a", send short-"y", long-"v"
The .S modifier specifies a shift lock state. When used on an "old" code (left of the = sign), the translation only applies when the shift lock state is active. The default state is not active, and can be toggled at will using translations which include a .S modifier on a value to the right of the = sign. You could use a shift lock to virtually double the number of buttons on a remote. Example:
xxxxxxxx=null.S      ; "x" toggles "shift lock" state, and sends null (more on null later)
yyyyyyyy=yyyyyyyy.S  ; "y" toggles the "shift lock" state, as well as sending "y"
zzzzzzzz.S=aaaaaaaa  ; this translation applies only when the "shift lock" is active
The .N modifier, when used on the LEFT side of the = sign, means Not shifted.

By using one of the .T (Tuner), .A (Aux), or .M (Main/mp3) modifiers, translations can also be made specific to a particular input source of the player, as a modifier on the "old" code. If you don't specify one, then the translation applies to all. Example:
xxxxxxxx.A=vvvvvvvv	; if in (A)UX mode, on press of "x" send "v"
xxxxxxxx.LT=yyyyyyyy	; if in (T)uner mode, on long press of "x" send "y"
xxxxxxxx.M=zzzzzzzz	; if in (M)ain/mp3 mode, on press of "x" send "z" 
The .C (Car/DC) and .H (Home/AC) modifiers can be used on the left of the = sign to specify button behaviors specific to car and/or home usage, as in:
xxxxxxxx.C=yyyyyyyy	; if in (C)ar, on "x" send "y"
xxxxxxxx.HM=yyyyyyyy.L	; if at (H)ome AND in (M)ain, on "x" send (L)ong "y"
There are also .U (menus are Up/active) and .N (menus are Not active) modifiers. .U can only be used on the right side of the = sign, and .N only means Not active when on the right side of the = sign. This is useful for bypassing a translation while in a menu. For instance, if you wanna alter a long press of the bottom button on the front panel, but don't want to loose it's functionality in the menu system. These also work for Hijack's PopUp menus. Example:
; on (L)ong "x", send "y" if menu (N)OT active, send (L)ong "x" if (U)p/Active.
xxxxxxxx=popup0.N, menu.U
; on "x", PopUp menu0, when in menu "x" means OK.
The fact that there are two .N modifiers is a bit confusing, but it boils down to this:
.N to the left of the = means Not shifted (opposite of .S).

.N to the right of the = means menus Not active (opposite of .U).
The various modifiers can all be combined (any sequence) in ingenious ways to produce a variety of IR behaviours.

Symbolic Names
As of Hijack v152, you can now use Symbolic Button names to correspond to the buttons on the Rio remote, Kenwood remote, and the buttons on the face of the empeg/RioCar. So instead of:
000006=20df14	; make "bottom" button act as "info"
you could also write it as:
Bottom=Info	; make "bottom" button act as "info"
(also note that leading zeroes can be stripped off if desired, i.e. "0020df14" is the same as "20df14")

The full list of Symbolic Button Names is as follows (organized by origin):
Rio Remote Kenwood Remote empeg/RioCar Face      Fakes        Sony Stalk  
Source AM Top PopUp0 KOff
Power FM Bottom PopUp1 KSOff
Time Direct Bottom PopUp1 KSource
One * Left PopUp2 KSSource
Artist Star Right PopUp3 KAtt
Two Radio KnobLeft VolAdjLow KSAtt
Album Auxiliary KnobRight VolAdjMed KFront
Three Tape Knob VolAdjHigh KSFront
Four Player BassAdj KNext
Genre CD TrebleAdj KSNext
Five CDMDCH VolAdjOff KPrev
Year DNPP KnobSeek KSPrev
Six Clock KVolUp
Repeat NextSrc KSVolUp
Seven VolAdj KVolDown
Swap HijackMenu KSVolDown
Eight Initial KRear
Title null KSRear
Nine Visual- KBottom
Shuffle KSBottom
Symbolic names are not case sensative. "Album" is the Hijack name for the #3 "Source" button. Most of the others are self-explanatory, but a few of the special ones are dealt with further in the text below. One useful pseudo-button is the NextSrc button, which does not exist on the standard remotes. This button code toggles among the available sound sources, Player -> Tuner -> Aux, and skips over the Tuner if one is not installed. "Clock" causes a 4-second popup window to appear with the current time/date in it (which can be offset with the "time_offset" option in config.ini). All of the button names should work as well as the hex codes, and are prefered. However, if the name doesn't work just use the hex code.

Sony Stalk Info
As of v245, Hijack now includes full support for the Sony Stalk interface. If you have a Sony "Rotary Commander" RM-X4S connected to a Tuner module, then Hijack can intercept and translate the various buttons on the device, similar to the way it handles buttons on the IR remotes.

The Stalk has ten individual buttons, plus a shift function, giving a total of twenty assignable actions. These can be referenced in the [ir_translate] section using the button "names" shown in the table above.

On the stalk, buttons pressed while the "Vol" knob is pressed in equate to a "shifted" button. All of the names beginning with "KS" designate a "shifted" button press. In this way, the "shift" function of the Stalk is kept distinct from the "shift state" functionality of Hijack's pre-existing [ir_translate] functionality.

The Front, Bottom, and Rear names refer to the three unlabelled buttons on the Stalk. Next and Prev refer to the Seek rotary, and the rest are pretty much as factory labelled on the Stalk. Hijack automatically compensates for "left" mounted operations, which can be specified in config.ini using Emplode.

Initial Button Sequences
Also available is support for initial sequences of button presses to be run as soon as the player starts up. This is specified using Initial= lines, possibly with .C, .H, and/or input source modifiers. Example:
;If in (C)ar in (T)uner or (A)ux, when player starts, send "x" then "y"
For this to work, however, you must also have these two lines together in config.ini:
PopUp Menus
"PopUp" menus can be defined and then attached to any button (except the knob). Up to four PopUp's can be defined: PopUp0, PopUp1, PopUp2, and PopUp3. PopUp0 is slightly special, in that (1) it is the only menu that can be bound to the knob button, and (2) the most recently used Car/Home menu positions are saved/restored over power cycles for convenience. Here is the recommended way to get started with PopUps:
This creates a PopUp menu for the most commonly needed Rio-Remote buttons for situations when the remote is unavailable (usually in the car). To attach this menu to the "quick knob press" (as was the default until v154), just go into the main Hijack menu and select "PopUp0" in the "Knob Press Redefinition" menu. This restores the pre-v154 behaviour. If you want to assign a PopUp menu to a button other than the knob, then just translate it:
Bottom.L=PopUp0      ; long press of front-panel bottom button pops up a menu
And for the real hacker types, here is a more complex example, featuring nested menus:
Bottom.LU=PopUp1	; long press of bottom button when menus are up, PopUp1
Bottom.LN=PopUp0	; long press of bottom button when not in menus, PopUp0
Items on a PopUp menu are never translated, which means they are restricted to sending a single button code at a time. While it might be useful sometimes to have a menu item send multiple button codes, this was not possible to implement in any reasonable fashion inside Hijack, so it ain't there.

The PopUp menus can be given different names as follows:
PopUp1=Tweak    ; rename PopUp1 menu to "Tweak" instead
Note that this is done in the [hijack] section of config.ini, not the [ir_translate] section. Names are restricted to eight characters or less, so that they will fit in the PopUp box on screen when activated.

Timing of IR Translations
The IR translator normally delays sending the final "release" of a translation sequence until you actually release the physical button. If you want the final release code to not wait for you to let go of the button, then append a "null" button code to the end of the new sequence. Null is the symbolic name for "0xffffff".
; Pioneer CD-SR80 remote
AD5240.L=Top.L,null       ; long press of up button = standby
Verifying Translations
If you are unsure whether or not your translations are being accepted, then connect to the serial port and then restart the player. The IR translations that were in ERROR will be dumped out during startup, and a pop up window will show on the empeg/RioCar to indicate errors. See this FAQ entry for details on how to use hyperterminal to connect with the serial port.

Reference for Commonly Used Remotes
Rio Remote (ERC-1A) codes:

	20DF00     ;1/Time
	20DF01     ;2/Artist
	20DF02     ;3/Source
	20DF03     ;Source/Power
	20DF04     ;4
	20DF05     ;5/Genre
	20DF06     ;6/Year
	20DF07     ;Tuner-Bank
	20DF08     ;7/Repeat
	20DF09     ;8/Swap
	20DF0A     ;9/Title
	20DF0B     ;Select Mode
	20DF0C     ;Cancel/Mark
	20DF0D     ;0/Shuffle
	20DF0E     ;Search
	20DF0F     ;Sound/EQ
	20DF10     ;Prev-Rew
	20DF11     ;Next/Ffwd
	20DF12     ;Menu(OK)
	20DF13     ;Volume+
	20DF14     ;Info/Details
	20DF15     ;Visual/VisFavs
	20DF16     ;PlayPause/Hush
	20DF17     ;Volume-

Kenwood Remote (RCA-R6A) codes:

	b94600     ;0
	b94601     ;1
	b94602     ;2
	b94603     ;3
	b94604     ;4
	b94605     ;5
	b94606     ;6
	b94607     ;7
	b94608     ;8
	b94609     ;9
	b9460A     ;PrevTrack
	b9460B     ;NextTrack
	b9460C     ;AM
	b9460D     ;FM
	b9460E     ;Prog
	b9460F     ;DirecT
	b94614     ;Volume+
	b94615     ;Volume-
	b9461B     ;Star *
	b9461C     ;Tuner
	b9461D     ;Tape
	b9461E     ;CD
	b9461F     ;CD-MD-CH
	b9465E     ;DNPP

Front panel codes:

	000000     ;Top
	000002     ;Right
	000004     ;Left
	000006     ;Bottom
	000008     ;Knob pressed
	00000a     ;Knob Right
	00000b     ;Knob Left

Pioneer CD-SR80 Steering Wheel Remote codes:

	AD520A     ;Volume up
	AD520B     ;Volume down
	AD520C     ;ATT
	AD5212     ;Band
	AD521A     ;Source
	AD5240     ;Up Arrow
	AD5241     ;Down Arrow
	AD5242     ;Left Arrow
	AD5243     ;Right Arrow
	AD5219     ;Func
	AD520D     ;Audio

Kenwood KCA-RC600/700 Remotes

	b9460A     ;PrevTrack 
	b9460B     ;NextTrack 
	b9460C     ;AM 
	b9460D     ;FM 
	b94613     ;src 
	b94614     ;Volume+ 
	b94615     ;Volume- 
	b94616     ;att 

Sample ir_translate
Here's a chunk of the ir_translate setup I use for my Pioneer CD-SR80 steering wheel remote
; The shift key
AD520C.L=play.L,null		; press and hold "ATT" = hush
AD520C=null.S			; "ATT" = Shift Key
; "Func" sends two codes for no reason, this ignores them
; Map the directional buttons to mimic those on the front panel
AD5240.L=20DF03.L,null		; long press of top button = standby
AD5241.L=Bottom.L,null		; long press of bottom button = toggle visual/info
AD5242.LT=20DF10.L,null		;in Tuner, Long left press scans back
AD5242.T=20DF10			;in Tuner, left press seeks back
AD5243.LT=20DF11.L,null		;in Tuner, Long right press scans forward
AD5243.T=20DF11			;in Tuner, left press seeks forward
; Volume Up / Down
; Band Button
AD5212.T=Tuner			; if in Tuner, toggle AM / FM
AD5212.LM=Artist,null		; long press if in Player, tweak Artist
AD5212.M=Shuffle			; if in Player, toggle shuffle
; Source Button
AD521A.LM=Album,null		; if in Player, tweak Source (Album)
AD521A=NextSrc			; switch to next source
; Func Button
AD5219=Visual			; switch to next visual
; Audio Button
AD520D.LM=Info.L,null		; long press if in Player, display track details
AD520D=Info			; switch info mode

·  How do I access the built in FTP server, and what can I do with it? 
·  How do I access the built in web (HTTP) server, and what can I do with it? 
·  How can I secure my player if i'm on a LAN? 
·  Why am I getting a "Hijack Config Error" message at boot up? 
·  Why doesn't the temperature ever change in 'Vital Signs'? 
·  What are the Patch files for (as opposed to the .zimage files)? 
·  I can't get the Restore Visuals feature to work! 
·  What other Userland Apps have been made to work with Hijack? 
·  How can I compensate Mark Lord for this work of genius? 
·  How do I adjust the VolAdj settings, and what do they mean? 
·  FAQ Changelog 

Copyright © 2001-2018 riocar.org
All logos and trademarks on this site are property of their respective owners. The comments are property of their posters.