X10 FAQ version 1.01 (12 June 94) 

Please mail all input to me; don't follow up in news.  With your help, we
can make this even more useful! Thanks for all the input so far.

============================================================================
 .-----  .-.    .-.               Timothy C. Green                  |\^/|
(  /       :   /  '                CD, PEng, MEng                _|\|   |/|_
  /    /      / -+                 (403) 459-3609                >         <
 /    (__./  (__.:                t.green@ieee.org                >_./|\._<
============================================================================


CHANGES SINCE LAST VERSION

ADDED:
Q107.  solution to another common problem
Q109.  details on TW523
Q110.  more online software sources
Q112.  How should I design the wiring of my new home to accomodate X10? 
Q113.  How do I control fluorescent lights with X10? 

CHANGED:
Sections 1,2:  note that version of CP290 for Commodore 64/128 is available.  
Each version comes with appropriate software and serial cable, but CP290 
box is the same.
Section 2:  changed a few part numbers and corrected minor details
Section 3:  made minor corrections
Section 4:  COMMAND 1, FFFF=0101 is in fact a documented command
Section 4:  now in part 2 along with Section 5




OUTLINE:

--part 1--

SECTION 1:  General Information
Q101.  What is X10?
Q102.  What sort of X10 transmitters exist?
Q103.  What sort of X10 receivers exist? 
Q104.  How many different units can X10 handle? 
Q105.  Who makes X10 components?
Q106.  Who sells X10 components?
Q107.  How do I solve common X10 problems? 
Q108.  Will X10 work on 220/240V? 
Q109.  How do I send and receive X10 signals with my computer? 
Q110.  Where do I get X10 software for my computer?
Q111.  Where do I look for more information on X10?
Q112.  How should I design the wiring of my new home to accomodate X10?
Q113.  How do I control fluorescent lights with X10? 

SECTION 2:  Information on X10 Components 

SECTION 3:  Details on X10 Protocol 

--part 2--

SECTION 4:  Programming details for CP290 Home Control Interface 

SECTION 5:  Modifications to X10 hardware 
Q501.  How do I modify appliance modules for momentary operation? 
Q502.  How do I add local dimming capability to wall switch modules? 
Q503.  How do I modify the maxi-controller to accomodate more than 16 units? 
Q504.  How do I modify the mini-controller to control more units? 
Q505.  How do I modify the mini-controller to control all units for a single 
housecode? 
Q506.  How do I modify the mini-controller to control only units 9-12 or 
13-16?
Q507.  How do I modify the mini-controller for momentary operation? 
Q508.  How do I repair a "blown" lamp module? 
Q509.  How do I defeat local control of lights and appliances? 


--part 1--

SECTION 1:  GENERAL INFORMATION 
===============================


Q101.  What is X10? 

A101.  X10 is a communications protocol for remote control of electrical
devices.  It is designed for communications between X10 transmitters and
X10 receivers which communicate on standard household wiring.  Transmitters
and receivers generally plug into standard electrical outlets although some
must be hardwired into electrical boxes.  Transmitters send commands such
as "turn on", "turn off" or "dim" preceded by the identification of the
receiver unit to be controlled.  This broadcast goes out over the
electrical wiring in a building.  Each receiver is set to a certain unit
ID, and reacts only to commands addressed to it.  Receivers ignore commands
not addressed to them.

Note that "X-10" is a trademark of X-10 (USA) Incorporated an possibly of
X-10 Home Controls Incorporated (in Canada) as well.  This FAQ uses "X10"
unless referring specifically to a product of the holder of the "X-10"
trademark.


Q102.  What sort of X10 transmitters exist? 

A102.  The simplest X10 transmitter is a small control box with buttons.
The buttons select which unit is to be controlled, and which control
function is to be sent to the selected units (e.g. "turn on", "all units
off", etc).  There are also clock timer transmitters which can be
programmed to send X10 commands at certain times.  Some of these can be
programmed with buttons on the timer; some must be connected to a computer
to select the times.  There are other special purpose transmitters that
send certain X10 commands at sunup or sundown, upon detecting movement, or
as commanded by tones over a telephone.  This is not an all inclusive list,
and more detail on specific transmitters is given in Section 2. 


Q103.  What sort of X10 receivers exist? 

A103.  The simplest X10 receiver is a small module with an electrical plug
(to connect to a standard wall outlet), an electrical outlet (to provide
controlled power to the device it's controlling) and two dials (to set the
unit ID code) on it.  An appliance module has relay inside which switches
power to its outlet on or off in response to X10 commands directed to it.
A lamp module is similar, but has a triac instead of a relay and will
respond to dimming commands as well as on or off commands.  Other receivers
can be wired into wall outlets or into lamp fixtures.


Q104.  How many different units can X10 handle? 

A104.  X10 specifies a total of 256 different addresses:  16 unit codes (1-
16) for each of 16 house codes (A-P).  Normally a transmitter is set to a
certain house code (generally selectable by means of a dial) and so can
control at most 16 unit codes.  There is no restriction on using multiple
transmitters each set to a different house code on the same wiring.  Also,
several receivers could be set to the same house code and unit code so a
single command issued by an X10 transmitter could control multiple
receivers in parallel.


Q105.  Who makes X10 components?

A105.  Many different companies either make and/or distribute X10
components under different names.  Some types are sold by more than one
company (probably made by same OEM).  Some are specific to only one
company.  Not all companies handle the complete range of components.  Some
companies selling X10 components and their associated product names are: 

 - Radio Shack:  Plug 'N Power

 - Leviton:   Decora Electronic Controls
        Leviton Mfg. Co. Inc.           Leviton Manufacturing of Canada
        59-25 Little Neck Pkwy          165 Hymus Blvd
        Little Neck, NY  11362-2591    Point Claire, QC  H9R 1G2
        (718) 229-4040
        (800) 824-3005

 - Stanley:  Light Minder 

 - X-10:  Powerhouse 
        X-10 (USA) Inc.                 X-10 Home Controls Inc.
        185A LeGrand Ave.               1200 Aerowood Drive, Unit 20
        Northvale, NJ 07647             Mississauga, Ont  L4W 2S7
        (201) 784-9700                  (416) 624-4446
        (800) 526-0027                   (800) 387-3346


Q106.  Who sells X10 components?

A106.  The following companies are alleged to sell X10 components in North
America.  See Q108 for Europe.  Listing in this FAQ is not an endorsement
or recommendation of any kind:

 Baran-Harper Group Inc.
 77 Drakefield Road
 Markham, ON  L3P 1G9
 Help:    (905) 294-6473
 Orders:  (800) 661-6508
 Fax:     (905) 471-3730
 BBS1:    (905) 471-9574
 BBS2:    (905) 471-6776

 Complete Home Automation
 Phone:   (800) 766-4226 (doesn't work in Canada)

 Home Automation, Inc.
 2709 Ridgelake Dr.
 Metairie, LA 70002
 Phone:   (504) 833-7256
 Fax:     (504) 833-7258

 Home Automation Laboratories
 5500 Highlands Pkwy, Suite 450
 Smyrna, GA 30082-5141
 Orders:  (800) 466-3522
 Catalog: (800) 935-4425
 Help:    (404) 319-6000
 Fax:     (404) 438-2835
 BBS:     (404) 319-6227 (300-14.4,8,N,1)

 Home Automation and Security
 286 Ridgedale Ave.
 East Hanover, NJ 07936
 Orders:  (800) 254-5950
 Help:    (201) 887-1117
 Fax:     (201) 887-5170

 Home Automation Systems, Inc.
 151 Kalmus Drive, Suite M6
 Costa Mesa, CA 92626
 Orders:  (800) 762-7846 (doesn't work in Canada)
 Help:    (714) 708-0610
 Fax:     (714) 708-0614

 Home Control Concepts
 9520 Padgett St. Suite 108
 San Diego, CA 92126
 Orders:  (800) 266-8765 (doesn't work in Canada)
 Help:    (619) 693-8887
 Fax  :   (619) 693-8892

 Hybrid Technical Systems, Inc.
 4765 Franchise Street
 Charleston, SC 29418
 Orders:  (800) 289-2001 (doesn't work in Canada)
 America Online:  HybridTech
 Compuserve:    71561,2604

 JaMar Distributing
 1292 Montclair Drive, 
 Pasadena, MD  21222
 Orders:  (800) 477-8142 (doesn't work in Canada)
 Fax:     (410) 437-3757
 Help:    (410) 437-4181

 JDS Technologies
 16750 W. Bernardo Drive
 San Diego, CA 92127
 Orders:     (800) 983-5537
 Help:       (619) 487-8787
 Fax:        (619) 451-2799

 Vaux Electronics, Inc.
 2750 S. Hardy Dr., Suite 1
 Tempe, AZ 85282
 Phone:   (602) 894-2350
 Fax:     (602) 894-5212


Q107.  How do I solve the most common X10 problems? 

A107.  There is a common problem that you may encounter in setting up your
home with X10 modules.  This happens mostly in larger homes, say larger
than 2000 square feet (185 square metres).  The symptoms are that some
receiver modules may not work when commanded from some transmitters, or
they may only work sporadically.

This could be caused by too much isolation between the two sides of the
power line (assuming North American wiring standards):  a transmitter on
one side will not transmit reliably to a receiver on the other side.  Try
your X10 system with and without your electric stove turned on; turning the
stove on may bridge both sides of the power line, but is not the
recommended permanent solution.  A better way would be to install a signal
bridge which is available as a commercial product.  See section 2 below for
details.

This could also be because the distance from the transmitter to the
receiver is too great and the signals are two weak to activate the
receiver.  The solution to this is to install a signal amplifier.  This is
available as a commercial product.  See Section 2 below for details. 

Noise blocks or noise filters may solve other more obscure problems.  See
details on these commercially available products in Section 2 below.

Another common problem with X10 devices is not reading the documentation 
that comes with them.  People still insist on trying to use dimmer switches 
or lamp modules on electric fans or fluorescent lights (symptom can be 
fire), or trying to control low wattage lamps (symptom may be unreliable 
operation for less than 50W for some modules).  Solution:  RTFM. 


Q108.  Will X10 work on 220/240V? 

A108.  There are X10 receiver modules designed to control 240 volt loads,
but only where these are part of a standard North American wiring system,
e.g. for the electric stove or electric drier.  See section 2 below. 

Knowledge of how X10 works in Europe on 50 Hz, 220 V is a bit hazy in North
America.  The following two companies are reputed to sell X10 devices for
European use:

 Busch-Jaeger Elektro GmbH
 P.O. box 1280
 D-5880 Luedenscheid
 Voice: +49 2351 956-0
 Fax  : +49 2351 956-694

 Celtel Ltd
 P.O. Box 135
 Basingstoke
 RG25 2HZ
 U.K.


Q109.  How do I send and receive X10 signals with my computer? 

A109.  The easiest way of giving your computer some control over X10 
modules is via the CP290 Home Control Interface.  This is a small box that 
connects to a standard RS-232 serial port and has its own internal battery 
backed up seven day clock. It is sold with software to work with a PC, Mac, 
Apple ][, or Commodore 64/128, and comes with the appropriate serial cable 
(the CP290 box itself is the same for all).  Once you set up to 128 events 
(on, off, dim) using your computer, you can turn off the computer and the 
box will transmit scheduled X10 commands on a daily or weekly schedule. The 
CP290 also has an "immediate" mode to send X10 commands from the computer 
to X10 receivers.  Details on programming the CP290 are in Section 4. 

There are also other X10 modules to interface computers directly to the
power line to send and/or receive X10 commands.  These are the PL513 (send
only) and the TW523 (send and receive).  

The TW523 is a low level two-way interface to the power line.  It contains 
a PIC controller to decode incoming signals and store them for transmission 
to the host computer.  It's essentially a 120KHz modulator and demodulator, 
with just enough smarts to recognize a valid X-10 command code.  Due to the 
tight timing requirements and lack of drivers, applications are limited to 
systems developers and experienced hobbyists willing to code in assembly. 

The computer interfaces to the TW523 through an RJ-11 modular phone jack 
which has the following signals: signal (not AC) ground, receive output, 
zero-cross output and transmit input.  All signals are optocoupled, and the 
outputs are open-collector.  A logic high (greater than 4V) on the transmit 
input modulates the AC line with the 120KHz carrier wave.  The zero-cross 
output is a square wave coincident with the 60Hz AC line.  The receive 
output is an envelope of the X-10 signal, and is low when the 120KHz signal 
for `bit=1' is present during a valid code. 

The signal applied to the transmit input must encompass all of the bits for 
all 3 phases of the line (i.e. 3 bits per half AC cycle).  The computer 
must follow the full transmission protocol detailed in Section 3 of the 
FAQ, but only needs to send the proper envelope for the transmission as the 
TW523 converts the digital envelope into bursts of 120KHz carrier. 

The receive output is buffered through the PIC in the TW523.  The first 
valid X-10 code cycle on the AC line alerts the PIC (and is lost to the 
controlling computer).  During the second code cycle (all codes in X-10 
protocol are sent twice), the TW523 outputs a low when there is 120KHz 
carrier on the AC line, and only during the bit time for the local AC 
phase.  The signals for the other two AC phases are not echoed to the 
controlling computer.  The output is open-collector at all other times.  
The logic is reversed; when there's a valid `bit=1' (120KHz carrier), the 
output is low, and high otherwise. Since the TW523 responds to all signals 
on the AC line, it also echoes any sent by the controlling computer, 
allowing for collision detection similar to that used by the Ethernet 
protocol (CSMA/CD). 

[Question: does it output only the second transmission when echoing local 
transmissions?] 

These units may be supplied with parallel or serial port adaptors.  These 
use handshaking bits in non-standard ways, so normal serial and parallel 
portdrivers are not of any use.  In particular, the serial port UART cannot 
be used with these units.


Q110.  Where do I get X10 software for my computer? 

A110.  The CP290 Home Control Interface comes with software for either IBM 
PC, Mac, Apple ][, or Commodore 64/128.  This is rudimentary, but 
functional.  

Baran-Harper Group Inc in Ontario runs a bulletin board that has a good
selection of software for the CP290 and TW523.  Their BBS numbers are (905)
471-9574 and (905) 471-6776.

Other sources:

 FTP:  ftp.digibd.com /pub/rick/x10.shar
       oak.oakland.edu /pub/msdos/x_10

 WWW:  http://www.digibd.com/people/rick


Q111.  Where do I look for more information on X10?

A111.  Try the following:

Magazines:

 Electronic House
 EH Publishing
 P.O. Box 339
 Stillwater, OK 74076-9923
 Phone:   (405) 624-8015
 1 year: $17.95, 2 years $31.95

Books:

 [none so far]


Q112.  How should I design the wiring of my new home to accomodate X10?

A112.  Most X10 receivers and transmitters can be plugged or wired into 
conventional wiring in any home without any special preparation or design.  
However, if you have the luxury of designing the wiring in your home before 
it is built, there are a few things you may wish to consider. 

A conventional light switch is wired into the circuit between the power 
panel and the light it controls.  Wiring conventional two-way (or more) 
switches for use at the top and bottom of the stairs for example, takes 
special wiring and foresight.  There are X10 wall switches (e.g. X10:WS467, 
X10:WS4777; see Section 2 below) to replace conventional switches in 
conventional wiring.  

You may wish, however, to put dedicated control modules (see LEV:6375, 
LEV:6376 in Section 2) into built-in light fixtures and wire these fixtures 
directly to the power supply with no conventional switch.  You could then 
turn the lights on or off from X10 transmitter anywhere in the house.  

You would probably want to install wall mounted controllers (see LEV:6319 
series) instead of light switches at convenient places like entrances or 
stairways.  The wiring for these wall mounted controllers is just like the 
wiring for a power outlet:  two wires direct to the power supply.  This is 
NOT the same as wiring for a conventional light switch.  By changing the 
settings on the control modules and the wall mounted controllers you can 
link any switch to any light.  Any light can be controlled in a "two-way", 
"three-way" manner just by adding more wall mounted controllers wherever 
convenient.

A motion/sunup/sundown detector (e.g. X10:PR511) is a good addition to any 
house.  You will probably want to wire this in a conventional circuit 
controlled by a conventional light switch.  This way you can disable it 
(stop it from sending X10 signals) if you have to. 

Other things you could consider are dedicated outlets in convenient 
locations for Christmas lights (few house builders ever think of this).  
This will avoid running extension cords out the garage or off the outdoor 
light fixtures.  With these controlled by X10, you could then have your 
X10:CP290 turn them on or off as required.  In Canada and other 
occasionally frigid climates you might consider controlling the outlet for 
your block heater by X10, but watch that the power drawn by the heater 
doesn't exceed the capacity of the X10 receiver.

You may wish to document clearly how you have wired the house in case you 
ever sell it.  It may not be obvious to the next occupant, or to any 
electrician he hires to "fix" things. 

Don't forget telephone wiring.  For the ultimate house, you'll want at 
least one unlisted telephone line for remote control of your house from a 
DTMF phone anywhere in the world.  This will take a telephone interface 
such as X10:TR551 or LEV:6325.  While this might see like an expensive 
luxury, think of what you could do by calling to turn off your fax machine, 
and turn on your computer so that you could call it (on a separate line) to 
transfer data.  When done, you turn it off (or better, have it turn itself 
off by sending the proper command to its X10 interface) and turn on the fax 
machine again. 


Q113.  How do I control fluorescent lights with X10? 

A113.  Fluorescent lights are not meant to be dimmed.  Trying to do so with 
an X10 device designed to dim incandescent lights reportedly causes the X10 
device to catch fire.  (Luckily, this rarely happens twice to the same X10 
device!)  Instead use a module designed for fluorescent lights (e.g. 
LEV:6375).  If you try a standard APPLICANCE MODULE (X10:AM486) with a 
compact fluorescent bulb, you may find that the local control mode senses a 
small current draw and keeps turning it on.  See Section 5 on defeating 
local control. 


SECTION 2:  INFORMATION ON X10 COMPONENTS 
========================================== 

Manufacturers' numbers shown below are coded as follows: 

 X10:  X-10 Powerhouse 
 LEV:  Leviton Decora Electronic Controls 
 RS:   Radio Shack Plug 'N Power


MINI-CONTROLLER (X10:MC460).  Controls either units 1-4 or 5-8 (selectable)
for any single house code.  Functions: on, off, dim, all lights on, all
off.  Connects to standard wall outlet.

MAXI-CONTROLLER (X10:SC503, LEV:6320). Controls units 1-16 for any single 
house code.   Functions:  on, off, dim, all lights on, all off.  Connects 
to standard wall outlet.

SUNDOWNER (X10:SD533).  Same as MINI-CONTROLLER.  Also will turn four units
on at sundown and off at sunup as determined by internal photocell.
Connects to standard wall outlet.

MINI-TIMER (X10:MT522).   Battery backed up clock, controls units 1-8 for
any house code.  Functions (daily cycle):  on or off at exact time or
approximate time.  Manual control: off on, all lights on

TELEPHONE INTERFACE (X10:TR551).  Answers phone, controls 10 modules from
commands on remote DTMF phone 

TELEPHONE TRANSPONDER (LEV:6325).  Answers phone, controls all 256 possible
units for commands on remote DTMF phone, three digit access code, confirms
all commands with synthesized voice

HOME CONTROL INTERFACE (X10:CP290).  Battery backed up clock, seven day 
cycle, 128 events set by computer connected to RS-232 interface, any house 
code, any unit codes.  Manual control:  units 1-8 for the base house code 
set on the unit, on or off.  Comes with software for any one of (not all) 
PC, Mac, Apple ][ or Commodore 64/128 and appropriate serial cable.  
Computer can be turned off or disconnected once the interface has been 
programmed and it continues on by itself. 

COMPUTER INTERFACE (X10:PL513).  Send only computer interface module.

COMPUTER INTERFACE (X10:TW523).  Semi-intelligent computer interface to the
power line, recommended for developers only.  It plugs into an outlet and
allows a computer or microcontroller to talk and listen directly to the X10
command codes on the AC line.  It's roughly the size of a lamp module.  See 
details in Q109.

THERMOSTAT CONTROLLER (X10:TH2807). Attaches to appliance module.  Small
heater underneath any thermostat fools it into thinking house is warm and
furnace need not be turned on.  Good for use with automatic timer (e.g.
MINI-TIMER or HOME CONTROL INTERFACE). 

WIRELESS TRANSMITTER (X10:RT504, LEV:6313).  Controls units 1-8 or 9-16 for 
any house code by sending radio signals to a WIRELESS RECEIVER (X10:RR501, 
LEV:6314). 

WIRELESS TRANSMITTER (X10:KC674).  Turns any two units on or off by sending
radio signals to WIRELESS RECEIVER (X10:TM571 or RR501), keychain size

WIRELESS TRANSMITTER (X10:RW684).  Turns any two units on or off by sending
radio signals to WIRELESS RECEIVER (X10:TM571 or RR501), surface mount 

WIRELESS TRANSMITTER (X10:RW694).  Turns any four units on or off by
sending radio signals to WIRELESS RECEIVER (X10:TM571 or RR501), surface
mount

WIRELESS TRANSMITTER (X10:RW724).  Turns any three units on, off or dim by
sending radio signals to WIRELESS RECEIVER (X10:TM571 or RR501), surface
mount 

WALL MOUNTED CONTROLLER (LEV:6319-4).  Turns any four consecutive units on
or off.  Push button switches.  Wired into rectangular wall box. 

WALL MOUNTED CONTROLLER (LEV:6319-4D).  Turns any three consecutive units
on, off or dim.  Push button switches.  Wired into rectangular wall box.

WALL MOUNTED CONTROLLER (LEV:6319-4A).  Turns any three consecutive units
on or off.  Also provides ALL ON and ALL OFF commands.  Push button
switches.  Wired into rectangular wall box. 

WALL MOUNTED CONTROLLER (LEV:6319-2).  Turns any two consecutive units on
or off.  Push button switches.  Wired into rectangular wall box.

WALL MOUNTED CONTROLLER (LEV:6319-2D).  Turns any unit on, off or dim. Push
button switches.  Wired into rectangular wall box.

WALL MOUNTED CONTROLLER (LEV:6319-2D).  Turns any unit on or off.  Push
button switches.  Wired into rectangular wall box.

WALL MOUNTED CONTROLLER (LEV:6319-1A).  Provides ALL ON and ALL OFF
commands.  Push button switches.  Wired into rectangular wall box. 

DRY CONTACT TRANSMITTER (LEV:6315).  Transmits X10 ON and OFF signals to
four consecutive units in response to make or break connections of dry
contact sensors (e.g. photocells, external alarm systems).  Wired into
rectangular wall box.

MOMENTARY DRY CONTACT TRANSMITTER (LEV:6316).  Similar to DRY CONTRACT
TRANSMITTER (LEV:6315) but triggers on momentary changes in the external
dry contact sensors.

WIRELESS RECEIVER (X10:RR501, LEV:6314).  Receives X10 commands by radio 
signals from WIRELESS TRANSMITTER (X10:RT504, LEV:6313) and retransmits 
them into house wiring for any eight units.  Also has integrated appliance 
module.

WIRELESS RECEIVER (X10:TM751).  Receives X10 commands by radio signals
from WIRELESS TRANSMITTER and retransmits them into house wiring for any
two units.  Also has integrated appliance module.

APPLIANCE MODULE (X10:AM486).  Responds to any house code, any single unit.
Turns load (15A, motors up to 1/3 HP, 500W for lights) either on or off.
Two conductor 

APPLIANCE MODULE (X10:AM466).  Same as APPLIANCE MODULE (X10:AM486), but
three conductor

FIXTURE RELAY MODULE (LEV:6375).  This module does not plug into an outlet, 
but must be wired into the circuit.  It switches a relay that handles 5A 
for incandescent or fluorescent lights.  Responds to ON, OFF, ALL LIGHTS 
ON, and ALL OFF commands.                            

DIMMING FIXTURE MODULE (LEV:6376).  Similar to FIXTURE RELAY MODULE 
(LEV:6375) but has no relay and will dim up to 300W incandescent lights.  
Responds to DIM and BRIGHTEN commands as well as ON, OFF, ALL LIGHTS ON, 
and ALL OFF commands. 

LAMP MODULE(X10:LM465).  Responds to any house code, any single unit.
Turns incandescent light (300W max) on, off, or dim.  Reportedly melts if
connected to anything else.

MOTION DETECTOR (X10:PR511, LEV:6417).  At sundown, sends ON command for 
any up to four consecutive units and sends OFF again at sunup.  Also only 
when dark, sends ON command to up to four other consecutive units when
motion detected.  Two floodlight sockets turned on/off for either
sundown/sunup or when motion detected (selectable). Adjustable sensitivity
for sunup/sundown and on/off time delay for motion.  For outside use.  Must
be wired into round electrical box.

WALL SWITCH (X10:WS467).  Replaces standard wall switch, wired into
rectangular wall box.  Manual toggle of on or off.  May be locked in off
position.

WALL SWITCH 3-WAY (X10:WS477).  Same as standard WALL SWITCH, but for use
with three way switch (on/off at two or more locations). 

WALL SWITCH 3-WAY REMOTE (part no?).  Used with WALL SWITCH 3-WAY.  For
on/off at two or more locations, one must be WALL SWITCH 3-WAY, others must
be WALL SWITCH 3-WAY REMOTE.  One of these is included with WS4777, but 
they are also available separately.

WALL SWITCH 3-WAY KIT (X10:WS4777).  Kit of WALL SWITCH 3-WAY (X10:WS477) 
and WALL SWICH 3-WAY REMOTE. 

WALL OUTLET (X10:SR227, LEV:6227).  Similar to APPLIANCE MODULE 15 A, 800W) 
but replaces standard wall outlet, wired into rectangular wall box.  One 
outlet is X10 controlled; other is always on.

WALL OUTLET DUPLEX (LEV:6280).  Similar to WALL OUTLET, but each outlet is
considered separate X10 unit, controlled separately.

WALL OUTLET 220V, 15A (X10:HD243).  Controls 220V appliances (e.g. water
heater) up to 15 A, monophase or split two phase, standard North American
wiring.

WALL OUTLET 220V, 20A (X10:HD245).  Same as WALL OUTLET 220V 15A but for up
to 20 A.

REMOTE CHIME (X10:SC546).  Chimes when turned on.  Selectable for any house
code, any unit code.  Could be used with MOTION DETECTOR to warn when
someone is approaching.

UNIVERSAL LOW VOLTAGE MODULE (X10:UM506, LEV:6337).  Selectable for any 
house code, any unit code.  Closes external circuit (selectable continuous 
or momentary) in response to X10 command.  Has integrated REMOTE CHIME
function.  Plugs into standard wall outlet.  For controlling sprinklers,
curtain closers whose control signals are not 120V but rely on simple
switch closing.

SYSTEM AMPLIFIER (LEV:6201).  Boosts signals on one phase and retransmits
them on the other in North American 120/240V wiring system.  Installed on
its own 15A breaker at main electrical panel.  Often required for large
buildings over 5000 square feet (465 square metres).

SIGNAL BRIDGE (LEV:6299).  Couples signals from one phase to other in North
American 120/240V wiring system.  Installed on its own 15A breaker in
rectangular wall box.  Often required in medium sized buildings over 2000
square feet (185 square metres), or smaller where commands do not pass
reliably.

NOISE BLOCK (LEV:6282).  Installed between incoming power line and main
panel to keep extraneous electronic noise and signals from entering or
leaving X10 network.  Useful in apartments or attached homes sharing same
transformer with others.  100A per phase.

NOISE FILTER (LEV:6288).  Looks like appliance module.  Installed between
power outlet and power cord of particularly noisy appliance that is
interfering with X10 signals. 


SECTION 3:  DETAILS ON X10 PROTOCOL 
==================================== 

Note:  This section applies to 60 Hz North American wiring.  Relevance of
this to European wiring is not known.

Each ONE bit in a legitimate X10 transmission is a 1 millisecond (mS) pulse 
code modulated burst of 120KHz on the AC line, and each ZERO is the absence 
of that burst.  The exact length of the burst may not be too critical in 
most applications.  The burst is sent three times for each bit, once at 
each AC zero-crossing (accounting for zero-crossing in 3-phase).  That 
means once each 2.778 mS.  The next bit is sent on the following zero-
crossing.  This is done to get the quietest time on the AC line for the 
receiver, whatever phase of the AC it's on.  The zero crossing gives the 
best signal-to-noise ratio for data transmission because everything should 
be shut down then (i.e. the voltage is low). 

              .  .  .                                                     .
           .           .                                               .
        .                 .                                         .
     .                       .                                   .
  ._____________________________._____________________________.___________
  ^         ^         ^         ^ .       ^         ^     .   ^         ^
  1         1         1         2    .    2         2  .      3        etc.
                                         .           .
                                            .  .  .


In addition, each bit is sent both true and complemented, and each code 
sequence is sent twice.  That's a lot of bit redundancy, and just barely 
enough to make it past the noise on the line, depending on actual 
conditions. 

A single normal command takes eleven cycles of the AC line to finish.  All 
legal commands must first start with the header 1110, a unique code as 
described below.  The header bits take two cycles at one bit per half 
cycle.  The next four cycles are the four-bit House Code, but it takes 
eight bits total because each bit is sent true then complemented.  This is 
similar to biphase encoding, as the bit value changes state half-way 
through the transmission, and improves transmission reliability.  The last 
five AC cycles are the Unit / Function Code, a five bit code that takes ten 
bits (again, true then complemented).  For any codes except the DIM, BRIGHT 
and the data following the EXTENDED DATA function, there's a mandatory 
three cycle pause before sending another command  DIM and BRIGHT don't 
necessarily need a pause, and the data after the EXTENDED DATA command 
absolutely MUST follow immediately until all bytes have been sent.  The 
EXTENDED DATA code is handy, as any number of eight-bit bytes may follow. 
The data bytes must follow the true/complement rule, so will take eight 
cycles per byte, with no pause between bytes until complete. The only legal 
sequence that doesn't conform to the true/complement rule are the start 
bits 1110 that lead the whole thing off, likely because the modules need 
some way to tell when it's OK to start listening again. 

A full transmission containing everything looks like this (see the end of
this section for the actual command codes):

   1 1 1 0  H8 /H8 H4 /H4 H2 /H2 H1 /H1  D8 /D8 D4 /D4 D2 /D2 D1 /D1 F /F
   (start)         (House code)                 (Unit/Function code)

So, to turn on Unit 12 of House code A, send the following:

   1 1 1 0   0 1 1 0 1 0 0 1   1 0 0 1 1 0 1 0 0 1  (House A, Unit 12)

then wait at least three full AC cycles and send it again, then wait three
and send:

   1 1 1 0   0 1 1 0 1 0 0 1   0 1 0 1 1 0 0 1 1 0  (House A, Function ON)

again wait three cycles and send it the last time.  Total transmission
would have been 264 discrete bits (don't forget the 3-phase) and would take
53 cycles of the AC line, or about .883 seconds.

It's perfectly allowable to stack the Unit or Function codes together, so
sending Unit 2  Unit 3  Unit 12  ON (separated by 3 cycles minimum) will
turn on all 3 units.  Stacking ON and OFF codes is annoying and flashes the
lights quickly (roughly 4 Hz).


X10 COMMAND CODES

         House Codes                         Unit/Function Codes

       H8  H4  H2  H1                        D8  D4  D2  D1   F

    A   0   1   1   0                  1      0   1   1   0   0
    B   1   1   1   0                  2      1   1   1   0   0
    C   0   0   1   0                  3      0   0   1   0   0
    D   1   0   1   0                  4      1   0   1   0   0
    E   0   0   0   1                  5      0   0   0   1   0
    F   1   0   0   1                  6      1   0   0   1   0
    G   0   1   0   1                  7      0   1   0   1   0
    H   1   1   0   1                  8      1   1   0   1   0
    I   0   1   1   1                  9      0   1   1   1   0
    J   1   1   1   1                 10      1   1   1   1   0
    K   0   0   1   1                 11      0   0   1   1   0
    L   1   0   1   1                 12      1   0   1   1   0
    M   0   0   0   0                 13      0   0   0   0   0
    N   1   0   0   0                 14      1   0   0   0   0
    O   0   1   0   0                 15      0   1   0   0   0
    P   1   1   0   0                 16      1   1   0   0   0
                           All Units Off      0   0   0   0   1
                            All Units On      0   0   0   1   1
                                      On      0   0   1   0   1
                                     Off      0   0   1   1   1
                                     Dim      0   1   0   0   1
                                  Bright      0   1   0   1   1
                          All Lights Off      0   1   1   0   1
                           Extended Code      0   1   1   1   1
                            Hail Request      1   0   0   0   1   Note 1
                        Hail Acknowledge      1   0   0   1   1
                             Pre-Set Dim      1   0   1   X   1   Note 2
                           Extended Data      1   1   0   0   1   Note 3
                            Status is On      1   1   0   1   1
                           Status is Off      1   1   1   0   1
                          Status request      1   1   1   1   1   Note 4

Note 1:  Hail Request is transmitted to see if there are any other X10
         compatible transmitters within listening range.

Note 2:  In a Pre-Set Dim function, the D1 bit represents the MSB of the
         level and the 4 House code bits represent the 4 least significant
         bits.  No known X10 device responds to the Pre-Set Dim function.

Note 3:  The Extended Data code is followed by eight-bit bytes which can
         be any data you might want to send (like temperature).  There
         must be no delay between the Extended Data code and the actual
         data bytes, and no delay between data bytes.

Note 4:  The X10 RF to AC Gateway model RR501 is a two-way module.  If the
         RR501 is addressed by transmitting its House Code and Unit Code and
         then the STATUS REQUEST is transmitted, the RR501 will respond by
         transmitting Status ON if it's turned on, or Status OFF if it's off.


RECOMMENDED SPECIFICATIONS TO ENSURE RELIABLE COMMUNICATION TO ALL X10
DEVICES:

  Carrier Oscillation Frequency         120KHz +/- 5%  (s/b 2%, but 5% OK)

  Zero Crossing Detection               100uS +/- 100uS

  Width of Transmitted Carrier          1mS +/- 50uS

  Transmitter output power              60 mW average (5V pk-pk into 5 ohms)

  Isolation Voltage                     2500V RMS. 60Hz for 1 min.



SECTION 4:  PROGRAMMING DETAILS FOR CP290 HOME CONTROL INTERFACE 
================================================================ 

Reference:  X10 CP290 Home Control Interface Programming Guide for
Advanced Programmers

The CP290 Home Control Interface communicates with the host computer via a
simplified RS-232 interface.  Serial communication takes place at 600 baud,
eight data bits, no parity, and one stop bit.  The reference recommends a
pause of one millisecond between transmitted bytes, although in many
applications this seems not to be required. This probably depends on the
efficiency of the serial communications software used to send data to the
interface.

The serial connector on the CP290 is a five pin DIN connector.  As seen
from the back of the interface, the pinouts are as follows: 

            5 - no connection  *       *  1 - no connection
          4 - data to computer  *     *  2 - data from computer
                                   *
                             3 - signal ground


There are eight possible commands that the computer can send to the CP290.
Each command starts with 16 hex FF bytes (each 0xff, or eight ones) for
synchronization purposes.  These are followed by the command code 0-7 and
then a variable number of bytes as required by the syntax of each command.
The inteface requires a checksum of data bytes that follow the command code
(see details for each command for exceptions) as the last byte in a
command.

The interface responds to each command with 6 hex FF bytes (each 0xFF, or
eight ones) for synchronization purposes.  This is followed by a status
byte, and depending on the command, other information.  The interface
generates a checksum for all bytes following the status byte and sends it
as the last byte in a reply to a command.


COMMAND 0 - SET INTERFACE BASE HOUSE CODE

The CP290 maintains a value called the base house code, which defaults to
house code A on power up.  This is equivalent to setting the house code on
other X10 controllers; the eight buttons on the CP290 control units 1-8 on
or off for the base house code.  Note that setting the base house code with
this command will clear all data in the interface.

Command syntax (computer to interface): 

        bytes 0-15:      1111 1111 - synchronization
                16:      0000 0000 - command 0 
                17:      HHHH 0000 - base house code to set 

               where HHHH =  0000 - house code M
                             0001             E
                             0010             C
                             0011             K
                             0100             O
                             0101             G
                             0110             A
                             0111             I
                             1000             N
                             1001             F
                             1010             D
                             1011             L
                             1100             P
                             1101             H
                             1110             B
                             1111             J

Return (interface to computer):

        bytes 0-5:      1111 1111- synchronization
                6:      0000 000X - interface status

                where X = 0 - interface has lost all memory 
                          1 - interface is OK 


COMMAND 1 - SEND DIRECT COMMAND 

It is possible to send X10 commands from the computer onto the power line
via the CP290. This is not particularly fast.

Command Syntax (computer to interface): 

        bytes 0-15:      1111 1111 - synchronization
                16:      0000 0001 - command 1 
                17:      LLLL FFFF - dimming level and function 
                18:      HHHH 0000 - house code for this command
                19:      UUUU UUUU - unit codes bitmapped 9-16
                20:      VVVV VVVV - unit codes bitmapped 1-8 
                21:      CCCC CCCC - checksum 

                where   LLLL = 1111 - dimmest (not quite full off) 
                                ... - intermediate brightness values
                               0000 - brightest (not quite full on) 

                        FFFF = 0000 - units off (*)
                               0001 - lights on, not appliances (*)
                               0010 - turn on
                               0011 - turn off
                               0100 - if light off, turn on full; in any
                                        case, dim to full off.  Responds as
                                        0011 (*)
                               0101 - if light off, turn on full; else
                                        brighten to full; then dim LLLL
                                        (LLLL+1?) steps.  Responds as 0100.
                               0110 - if light off, turn on full; else
                                        brighten by LLLL+1 steps. Responds
                                        as 0101. (*)
                               0111 - no obvious effect.  Responds as 0110.
                               1000 - no obvious effect.
                               1001 - no obvious effect.
                               1010 - no obvious effect.
                               1011 - no obvious effect.
                               1100 - no obvious effect.  Responds as 1011.
                               1101 - no obvious effect.  Responds as 1100.
                               1110 - no obvious effect.  Responds as 1101.
                               1111 - no obvious effect.  Responds as 1110.

                                where (*) indicates behavior undocumented
                                        in the reference

                        HHHH - as for Command 0

                        UUUU UUUU - units bitmapped as
                                9 10 11 12 13 14 15 16 

                        VVVV VVVV - units bitmapped as
                                1 2 3 4 5 6 7 8 

                        CCCC CCCC - sum of bytes 17-20

Return (interface to computer): 

        bytes 0-5:      1111 1111 - synchronization
                6:      0000 000X - interface status
         (pause while X10 command is sent onto power line)
             7-12:      1111 1111 - synchronization
               13:      0000 000X - interface status
               14:      HHHH FFFF - house code and function
               15:      UUUU UUUU - unit codes bitmapped 9-16
               16:      VVVV VVVV - unit codes bitmapped 1-8
               17:      HHHH 0000 - base house code
               18:      CCCC CCCC - sum of bytes 14-17

               where all values are as explained above; response function
                        codes are same as command function codes except as
                        noted


COMMAND 2:  SET INTERFACE CLOCK

This command sets the internal clock in the CP290.

Command syntax (computer to interface): 

        bytes 0-15:      1111 1111 - syncrhonization
                16:      0000 0010 - command 2 
                17:      00mm mmmm - minutes 0-59 
                18:      000h hhhh - hours 0-23
                19:      0ddd dddd - bitmapped day of week Sun - Mon 
                20:      CCCC CCCC - sum of bytes 17-19 

                where ddd dddd is day of week bitmapped as
                                Sun Sat Fri Thu Wed Tue Mon

Return (interface to computer):

        bytes 0-5:      1111 1111 - synchronization
                6:      0000 000X - interface status


COMMAND 3a:   SEND TIMER EVENT TO INTERFACE 

This command sends a timer event to the interface.  The computer can then
be disconnected and the event will be sent over the power line as X10
commands at the appropriate time.  Events are stored eight bytes per event
in locations 0-1023 in the 2K RAM inside the interface.

Command syntax (computer to interface): 

        bytes 0-15:      1111 1111 - synchronization
                16:      0000 0011 - command 3 
                17:      AAAA AAAA - LSB of event address 
                18:      0000 00AA - MSB of event address
                19:      NNNN MMMM - mode 
                20:      0ddd dddd - bitmapped days Sun - Mon
                21:      000h hhhh - hour 0-23
                22:      00mm mmmm - minute 0-59
                23:      VVVV VVVV - bitmapped unit codes 1-8
                24:      UUUU UUUU - bitmapped unit codes 9-16 
                25:      HHHH 0000 - house code for this event
                26:      LLLL FFFF - level and function 
                27:      CCCC CCCC - sum of bytes 19-26

                where    0000 00AA AAAA AAAA (bytes 18 and 17) =

                         0000 0000 0000 0000 for event 0 
                         0000 0000 0000 0100 for event 1
                         0000 0000 0000 1000 for event 2
                         .... (increases by 8 for each event)
                         0011 1111 1111 1100 for event 127


                         MMMM = 0000 - clear
                                0001 - ?
                                0010 - tomorrow only then clear
                                0011 - ?
                                0100 - today only then clear
                                0101 - ?
                                0110 - ?
                                0111 - ?
                                1000 - at exact time
                                1001 - at approximate time
                                1010 - ?
                                1011 - ?
                                1100 - ?
                                1101 - ?
                                1110 - ?
                                1111 - ?

                         NNNN = MMMM                  - program event
                         NNNN = MMMM = 0000           - clear event
                         NNNN not = 0000; MMMM = 0000 - store event but
                                   put it on hold (will not take place)

        Actually, setting for NNNN and MMMM is a bit vague.  The reference
        indicates that NNNN = 0 and MMMM is function code as shown above.
        The software provided with the CP290 uses NNNN = MMMM except when
        "freezing" an event (deactiving it, but not erasing it).  Frozen
        events also have UUUU UUUU = VVVV VVVV = 0.  It's not clear how a
        frozen event knows what units it is to control.  Not clearing the
        unit mask confuses the standard CP290 software...

Return (interface to computer): 

        bytes 0-5:      1111 1111 - synchronization
                6:      0000 000X - interface status


COMMAND 3b:  SEND "GRAPHICS DATA" TO INTERFACE 

In the 2K RAM of the interface, locations 1024 through 1535 are accessible
from the external computer, but are not used for events or any other
purpose by the interface.  In the CP290 these are referred to as the
locations for graphics data.  For each of 256 possible units, the memory
locations could be used to indicate (under control of an external program)
the on/off condition of a unit, or the type of unit it is (possibly an
index to a graphics icon).  This command writes data from the computer two
bytes at a time to these memory locations in the interface. 

Command syntax (computer to interface): 

        bytes 0-15:     1111 1111 - sychronization
                16:     0000 0011 - command 3 
                17:     AAAA AAA0 - LSB of data address
                18:     0000 0AAA - MSB of data address
                19:     GGGG GGGG - data byte 0
                20:     GGGG GGGG - data byte 1
                21:     CCCC CCCC - sum of bytes 19 and 20

                where   0000 0AAA AAAA AAAA(bytes 18 and 17) =

                        0000 0100 0000 0000 for data pair 0
                        0000 0100 0000 0010 for data pair 1
                        ... (increases by 2 for each subsequent data pair)

                        GGGG GGGG - can be anything relevant to the
                                        external program, since this data
                                        is not used by the interface 

Return (interface to computer): 

        bytes 0-5:      1111 1111 - sychronization
                6:      0000 000X - interface status


COMMAND 4:  GET CLOCK TIME AND BASE HOUSE CODE FROM INTERFACE 

This command reads the time from the internal interface clock and also gets
the current base house code.  It is an innocuous way of testing for the
presence of the interface, and to see if it has lost its memory since the
last time events were downloaded to it.  If there is no reply to this
command after several seconds, the computer could assume that the interface
was not (properly) connected. 

Command syntax (computer to interface): 

        bytes 0-15:     1111 1111 - synchronization
                16:     0000 0100 - command 4 

Return (interface to computer): 

        bytes 0-5:      1111 1111
                6:      0000 000X - interface status
                7:      00mm mmmm - minute (0-59) 
                8:      000h hhhh - hour (0-23) 
                9:      0ddd dddd - bitmapped days Sun - Mon 
               10:      HHHH 0000 - base house code
               11:      CCCC CCCC - sum of bytes 7-10


COMMAND 5:  GET TIMER EVENTS FROM INTERFACE

This command requests the interface to send to the computer the events that
it has stored in its memory. 

Command syntax (computer to interface): 

        bytes 0-15:     1111 1111 - synchronization
                16:     0000 0101 - command 5

Return (nterface to computer): 

        bytes 0-5:      1111 1111 
                6:      0000 000X - interface status
                for( event = 0 ; event < 128 ; event = event+1 ) 
                {
                   if( event is not erased )
                   {
                         7:     NNNN MMMM - mode 
                         8:     0ddd dddd - bitmapped days Sun - Mon 
                         9:     000h hhhh - hour 0-23
                        10:     00mm mmmm - minute 0-59
                        11:     VVVV VVVV - bitmapped unit codes 1-8
                        12:     UUUU UUUU - bitmapped unit codes 9-16 
                        13:     HHHH 0000 - house code for this event
                        14:     LLLL FFFF - level and function 
                    }
                    else
                         7:     1111 1111 - indicates event in that
                                                location is erased
                }
        last byte:   CCCC CCCC - sum of all bytes for valid events
                                        starting with byte 7; does not
                                        include the 1111 1111 for locations
                                        where event has been erased


COMMAND 6:  GET "GRAPHICS DATA" FROM INTERFACE 

This command requests the interface to send the "graphics data" that it has
stored in its memory.  See COMMAND 3b above.  Graphics data is not used in
any way by the interface.

Command syntax (computer to interface): 

        bytes 0-15:     1111 1111 - synchronization
                16:     0000 0110 - command 6

Return (interface to computer): 

        bytes 0-5:      1111 1111 
                6:      0000 000X- status
                for( unit = 0 ; unit < 256 ; unit = unit+1 ) 
                {
                   if( graphics data for unit has been stored )
                   {
                        7:      GGGG GGGG
                        8:      GGGG GGGG
                   } 
                   else
                        7:      1111 1111
                }
        last byte:      CCCC CCCC - sum of all data pairs for all units
                                        starting with byte 7; excludes the
                                        single 1111 1111s in cases where
                                        data for that unit has not been
                                        stored

COMMAND 7:  DIAGNOSTIC 

This command tells the interface to run a self-check on its hardware and
firmware.  Pin 4 on the interface goes low for 10 seconds; this may
generate extraneous characters that are detected by the attached computer.
At the end of this time, the interface sends its status if it can.  Note
that this command will scramble or clear any data stored in the interface. 

Command syntax (computer to interface):

        bytes 0-15:     1111 1111 
                16:     0000 0111 - command 7 

Return (interface to computer): 

        bytes ?:        extraneous characters for 10 seconds 
            0-5:        1111 1111 - synchronization
              6:        0000 000T - test status 

             where 0000 000T = 0 - interface is OK
                               1 - interface has a fault


KEYBOARD COMMANDS

If X10 commands are sent using the keys on the top of the CP290, the
interface will send a report to the computer so it can keep track of the
status of units. 

Report (interface to computer):

              0-5:      1111 1111 - synchronization
                6:      0000 000X - interface status
                7:      HHHH FFFF - house code and function
                8:      UUUU UUUU - unit codes bitmapped 9-16
                9:      VVVV VVVV - unit codes bitmapped 1-8
               10:      HHHH 0000 - base house code
               11:      CCCC CCCC - sum of bytes 14-17 

                where FFFF is the function return code described for
                        Command 1 (SEND COMMAND DIRECT)


TIMED EVENTS

When the CP-290 sends X10 commands in accordance with an event programmed
into it, it will send a report to the comptuer so the computer can keep
track of the status of units.  This report is in the same format as the
report for keyboard commands described above.


SECTION 5:  MODIFICATIONS TO X10 HARDWARE
=========================================

WARNING:  Modifying X10 hardware as described in this section will void the 
warranty of the hardware.  Any modifications you do are at your own risk 
and the results are entirely your own responsibility.  You may end up 
damaging the hardware beyond use.  Remember, X10 devices are connected 
directly to the power line, and can kill you.  If you feel uncomfortable 
about any of this, don't do it. The modifications in this section have been 
tried by one or more people.  They may not work for you, due to variation 
in technical skill, or variation in X10 equipment lots.  Again, you are on 
your own; use at your own risk! 


Q501.  How do I modify appliance modules for momentary operation?

A501.  Normally appliance modules turn on and stay on in response to an ON 
command, and off in response to an OFF command. In response to an ON 
command appliance modules modified as described in this section will pulse 
on then off twice, returning to the off position. 

Procedure:

        1.  Make sure module is off, unplug it and then take cover off. 

        2.  Locate 330K resistor below the IC chip.  Remove it. 

        3.  Reassemble and test the module. 


The module clicks twice because each X10 command is issued twice.  Thus the 
two commands causes two on/off cycles.  If you would like the module to be 
normally on, make sure that the module was left on before you start the 
mod. 


Q502.  How do I add local dimming capability to wall switch modules? 

A502.  There are X10 wall switches with local dimming capability, but these 
are not as widely available and reasonably priced as the X-10 WS467.  This 
switch has a local on/off toggle and a slide button to lock it off.  The 
light it controls can be dimmed only from a remote X10 transmitter. 

The difference in circuitry between the switches with and without local 
dimming capability is minor.  Those with local dimming capability have a 
jumper wire where those without local dimming have a resistor and 
capacitor.  To convert a switch without local dimming to one with local 
dimming, you will need to remove the resistor and capacitor and replace 
them with a wire.  You will need  a jeweler's flat-blade screwdriver, a 
soldering iron, and a desoldering bulb or solder-up wick.  You may find 
needle nose pliers to be helpful as well. 

Procedure: 

        1.  Make sure the switch is functioning properly before starting. 

        2.  Take the module apart all the way.  Using the screwdriver, 
press down on the tabs at the four corners of the back cover, and pop the 
cover off. Be careful not to break the tabs. Remove the circuit board from 
the case by prying the side of the case away from the side of the board 
with the screwdriver far enough so that the PCB can clear the tabs which 
hold it in place. As the PCB comes out, be careful not to lose the small 
metal tab or the tiny spring-loaded rod which form part of the cutoff 
switch. Also remove the plastic piece which holds the cutoff switch 
assembly in place; removing the switch assembly now will make it easier to 
reassemble the switch properly later. The following is a crude ASCII 
diagram of the component side of the WS467 PC board, showing relative 
locations of various components. 



 |---------------------------------|
 |                                 |          TRIAC
 |                                 |            /
 |                                 |          /
 |                                 |        /   Notes: The WS467 has a small
 |                                 |      /     1/4 watt resistor soldered
 |                                 |    /       between holes 1 and 2, as
 | |---------------|               |  /         well as an electrolytic
 | |     I C       |           |-| |/           capacitor soldered between
 | |---------------|  o 1      | |/|            holes 3 and 4. Remove these
 |                2 o          |-| |            components and solder a
 |                    o            |            jumper wire between holes
 |                   3   o         |            1 and 3 to restore local
 |                      4          |            dimming.
 |                                 |
 |                                 |
 |                                 |
 |                                 |
 |   (Other circuitry omitted      |
 |     for clarity.)               |
 |                                 |
 |---------------------------------|

          WS467 PC Board
          Conponent Side

        3.  Once the switch has been disassembled and the PCB removed from 
the case, examine the component side of the board closely while referring 
to figure 1. Locate the small electrolytic capacitor and 1/4 watt resistor 
located just below and to the right of the IC on the board. Note that there 
is probably a larger 1/2 watt resistor in close proximity to the correct 
one - make sure you pick the right resistor. Now flip the board over and 
locate the 4 pads to which these two components are soldered. After warming 
up your soldering iron, use the solder wick or desoldering bulb to remove 
the solder from those pads, and remove the components from the board. NOTE: 
you could also simply cut the components off the board, leaving the lead 
stubs soldered in place, but desoldering the components will result in a 
much neater job. 

        4.  Again referring to the diagram in figure 1, install a small 
jumper wire between holes 1 and 3. Solder the wire to the pads on the foil 
side of the PCB. 

        5.  Reassemble the case, pop the circuit board back in, and pop the 
back cover on. Turn the switch over and look closely into the hole where 
the cutoff switch assembly fits. There you will see a pair of small metal 
protrusions as well as a shorter metal contact area. Replace the small 
metal tab into its position between the two taller metal protrusions, 
positioned so that the other end of the metal tab can contact the shorter 
metal contact area. Pop the cutoff switch assembly back into place, making 
sure that neither the tiny spring-loaded rod nor the metal tab fall out 
while you do so. 

        6.  Install the switch in the wall, and test normal operations 
(local on/off control, remote on/off/dim control, and the function of the 
cutoff switch). 

        7.  Finally, test the local dimming function: Press and hold the 
button on the switch. The light will come on, and then slowly cycle through 
a bright-to-dim-to-bright sequence. Release the button when the desired 
level of lighting is achieved. A quick tap on the button will turn the 
light on and off. 


Q503.  How do I modify the maxi-controller to accomodate more than 16 units?

A503.  The maxi-controller controls 16 units on a single house code. For 
those of applications with more than 16 units (and the thoughts of grouping 
units together or glueing a dime to the house code select slot aren't that 
appealing), a maxi controller can be made to control an alternate house 
code with the addition of a momentary contact pushbutton. 

The following procedure modifies the maxi-controller to use house code I 
normally and control house code K with the push of a button. 

Procedure: 

        1.  Open the maxi-controller.  There is no need to remove the 
circuit board. 

        2.  Install a miniature normally open momentary contact push button 
switch (e.g. RS 275-1571A) in a hole *carefully* drilled in the back of the 
top piece of the case so the switch will stick out the back when all is 
done).  Avoid the components and the mounting post.  Position it roughly 
behind the red LED on the Powerhouse brand of the maxi. Another way to 
describe its location: If you have the standard label 1-16 in position, the 
button goes behind approximately 12 (maybe a bit towards 11). 

        3.  Using a short jumper wire, solder one post of the switch to pin 
7 of the IC (GI 8417) and the other lead to pin 10. Use as little heat on 
the IC pins as possible to get a good solder without destroying it. 

        4.  Reassemble making sure nothing is shorting (jumper leads, 
etc.). 

        5.  Set house code rotary to position I and test units on house 
code I. To operate house code K, push in pushbutton and hold it while 
selecting the unit(s) and the operation (on,off,dim,bright,all lights on, 
or all units off). 

Note that the pins 7 to 10 mod will also allow you to control house codes 
J/L, H/F, G/E, B/D, A/C, P/N, or O/M by changing the rotary switch. 

Untried variations:  Using the chart below, you could connect via 
pushbutton pins 7 and either 8, 9, 10, or 11 alternatively or more than one 
if necessary to produce a desired combination. If you absolutely had to 
produce a house code alternative where you need to turn a 1 into 0 instead, 
you could use a normally closed pushbutton and cut a trace. 

Maxi controller with GI 8417 IC (can jumper a "1" from pin 7)

PIN     8   9   10  11
---    --  --   --  --

J       0   0   0   0
I       0   0   0   1
L       0   0   1   0
K       0   0   1   1
H       0   1   0   0
G       0   1   0   1
F       0   1   1   0
E       0   1   1   1
B       1   0   0   0
A       1   0   0   1
D       1   0   1   0
C       1   0   1   1
P       1   1   0   0
O       1   1   0   1
N       1   1   1   0
M       1   1   1   1


Q504.  How do I modify the mini-controller to control more units?

A504.  This answer should be read in conjunction with the instructions for 
modifying the maxi-controller in Q503. 

Unfortunately, the truth table for the mini-controller appears to be all 
different for that for the maxi-controller, and there isn't a real good 
place to mount the pushbutton.  Besides, if you really need to control a 
bunch of units, you wouldn't have the mini-controller in the first place. 

However, the following seems to apply:

Mini controller with 8925 IC (can jumper a "1" from pin 3)

PIN     5   6    7   8
---    --  --   --  --

M       0   0   0   0
O       0   0   0   1
E       0   0   1   0
G       0   0   1   1
C       0   1   0   0
A       0   1   0   1
K       0   1   1   0
I       0   1   1   1
N       1   0   0   0
P       1   0   0   1
F       1   0   1   0
H       1   0   1   1
D       1   1   0   0
B       1   1   0   1
L       1   1   1   0
J       1   1   1   1


Q505.  How do I modify the mini-controller to control all units for a 
single housecode (i.e. all "bands")? 

A505.  The X10 mini controller is capable of addressing four of the sixteen 
X10 unit codes.  A slide switch on the controller allows the user to select 
the "band" of units 1-4 or 5-8.  A simple modification allows the selection 
of two additional bands, 9-12 and 13-16.  This covers the entire spectrum 
of X10 units accessible from a single house-code. 

This modification applies to the "Radio Shack" branded mini controller, 
number 61-2677B.  By visual inspection of the circuit board and internal 
components, it appears that this modification also applies to "Stanley" 
branded mini controller number 360-3090.  It appears that both of these 
units were manufactured for X10 for sale under the distributers' own brand 
name, and are essentially identical inside. 

There was an earlier model of the mini controller that was available from
Radio Shack, and possibly other sources.  Legend has it that the old unit was
even easier to modify for access to all four bands.  In fact, one legend says
that the unit was equipped with a four-band switch, two positions of which
were simply blocked off by the plastic bezel sticker applied over the plastic
cabinet.  I don't know what the truth is, not having one of the old mini
controllers to study.  What I do know is that this modification was not
developed for the old controller.

The old mini controller had four switches for the unit codes, plus individual
switches for ON, OFF, DIM, BRIGHT, ALL LIGHTS ON, and ALL UNITS OFF.  To turn
on unit three, one would depress two switches:  3 and ON.

The new mini controller does not have ON and OFF switches apart from the unit
codes. Instead it has an ON and OFF switch for each of the four unit codes.
(In the case of the Radio Shack unit, there are four rocker switches, up for ON
and down for OFF.  The Stanley unit has individual switches for 1 ON, 1 OFF,
2 ON, 2 OFF, etc.)  Pressing one of these switches sends both the unit code and
the ON or OFF command.  The user can then follow up by using the DIM or BRIGHT
switches, or the ALL LIGHTS ON or ALL UNITS OFF switches.

Procedure: 

        1.  Unplug the unit and open the case by removing the four 
phillips-head screws. Put both halves of the case in a safe place.  When 
handling the printed circuit board, orbserve the usual precautions for 
static-sensitive devices. 

        2.  Locate the place where the existing "band" switch is located.  
This is nothing more than a plastic handle on a metal slider that runs in a 
trough molded into the top part of the case.  The slider makes contact with 
three large pads on the printed circuit board. 

        3.The hardest part of the modification is finding a new switch to 
use for the four-position band selector!  It is possible to use a two-pole 
four-throw rotary switch.  I'll let you figure out how to do the encoding 
if you decide on that.  I found a suitable switch in my junk-box and 
mounted it in a position that replaces the old band switch.  This entailed 
some amount of cutting and gluing on the plastic case.  I will assume that 
you are doing the same.  Find a small slide switch that has four positions.  
It should have two rows of five contacts.  As the switch is moved, it 
should short two adjacent contacts at a time.  Looking into the pins in the 
back of the switch, one should see the following connection pattern for 
each switch position: 

     position 1         position 2         position 3         position 4 
   +-------------+    +-------------+    +-------------+    +-------------+
   |1--2  3  4  5|    |1  2--3  4  5|    |1  2  3--4  5|    |1  2  3  4--5|
   |             |    |             |    |             |    |             |
   |A--B  C  D  E|    |A  B--C  D  E|    |A  B  C--D  E|    |A  B  C  D--E|
   +-------------+    +-------------+    +-------------+    +-------------+

Physically, the switch should fit in pleasingly with the rest of the panel. 
This usually means that it should be rather small.  This is a good time to
decide exactly where to put it.  The most logical place is directly in place
of the existing band switch.  This may require hacking away part of the
printed circuit board.

        5.  Orient the printed circuit board in front of you, such that the 
foil side is down, and the power cord attaches to the board on your left.  
The big chip should be slightly right of center, and most of the components 
will be near your belly.  Make sure that the chip has 24 pins, and is 
marked 78567.  To your right of the chip is a small metal-can transformer.  
Further right and up, should be an electrolytic capacitor, around 1000 mFd 
at 25 V.  The capacitor's negative lead is well marked.  Locate the 
positive lead. 

        6.  If the new switch does not physically replace the old one, 
disable the old switch by removing the slider from it. 

        7.  Looking into the back of the switch, wire pin A to 4 to IC pin 
11.  Wire switch pin B to 3 to D to the + lead of the capacitor.  Wire 
switch pin C to IC pin 12.  The result should look something like this: 

      .------------. 
      |            |
      |  +---------|---+
      |  |1  2 _3_ 4  5|
      |  |    /   \    |
      |---A  B  C  D  E|
      |  +------|--|---+
      |         |  |
      |         |  `-----> to capacitor +
      |         `--------> to IC, pin 12
      `------------------> to IC, pin 11


The intent of this circuit is to impress one of four binary codes on the 
IC's pins 11 and 12.  This tells the controller chip which band of X10 
units to address.  The logic levels to be presented to the chip are 
provided by dead air and the + lead of the electrolytic capacitor.  The 
truth table is: 

   unit     switch     switch    |  pin 11   pin 12 
   band     position   shorting  |  sees     sees
   -----    --------   -------- -+- ------   -----
    1-4        1       1&2, A&B  |  cap      air
    5-8        2       2&3, B&C  |  air      cap
    9-12       3       3&4, C&D  |  cap      cap
   13-15       4       4&5, D&E  |  air      air


        7a.  Rotary switch option.  This version is untested, but should 
work.  It is for rotary switch lovers out there.  Get a 2-pole 4-throw 
rotary switch and wire it as follows: 

        .------------------------------> to capacitor + 
        |     |              |  |    
        1_ 2  3  4        1_ 2  3  4
        |\                |\
          \- - - - - - - - -\
           \                 \
            O                 O
            |                 |
            |                 `--------> to IC, pin 12
            `--------------------------> to IC, pin 11

You probably want to avoid binary or BCD-encoded thumbwheel switches because
the base station coding scheme is offset slightly from normal binary coding
(and the switch output).  You would have to relabel the switch positions, not
to mention blocking off the unused positions.

        8.  Put the box back together.  Screw it shut again before applying 
power.  Try it out. 

(dennisg@filenet.com) 


Q506.  How do I modify the mini-controller to control only units 9-12 or 
13-16? 

A506.  Read in conjunction with Q505.

Proecedure: 

        1.  Open mini-controller and pull back the circuit board. Be 
careful not to let all the switch tops fall out. 

        2.  Locate the three pads underneath the slide switch. Notice that 
the unmodified mini selects 1-4 or 5-8 depending on whether the center 
position makes connection with one side or the other. 

        3.  To modify the mini to control only units 9-12, solder a jumper 
such that all three pads connect together. 

        4.  To modify the mini to control units 13-16, simply remove the 
slide switch. 

Untried variation #1: If you solder the jumper as to not interfere with the
slide switch, then you could jumper just one side and then use the slide to
select 1-4 or 9-12 or .. jumpering the other side, 5-8 or 9-12.

Untried variation #2: If you mangle the slide switch so that it only has
the contacts on one side or the other, you could use the slide switch to
select 1-4 or 13-16, or .. removing the other side 5-8 or 13-16. A possible
problem here is that the half-mangled slide switch may not "sit right".


Q507.  How do I modify the mini-controller for momentary operation? 

A507.  When a Mini-Controller is modified as below, your key presses are 
undone as soon as you release the key.  Thus pressing 'on' and then 
releasing, sends an 'ON' and then a 'OFF' command.  This is also true for 
'All Unit' commands.  This mod only works on model 'MC460' Mini-
Controllers, and not the 'MC260' (If anyone knows how to identify the two, 
please post). 

Procedure: 

        Inside the mini controller, connect pin 3 and 14 of the black IC 
marked 78567.  You may want to make the connection with a little switch to 
return the controller to normal mode. 

(Edward Cheung <netcomsv.netcom.com!asylum.gsfc.nasa.gov!cheung>) 


Q508.  How do I repair a "blown" X10 lamp module? 

A508.  X10 lamp modules have a bad habit of dying premature deaths.  Most 
of the time, the problem can be traced back to a bad triac.  Why the triac 
is the weak link has been debated hotly, but that is not the purpose of 
this article.  It is possible to "resurrect" the module by simply replacing 
the triac.  Caution must be stressed here; there are a lot of triacs 
available, but whichever one you use must have an isolated tab.  The most
universally available replacement is from Radio Shack, part number
276-1000.  In addition to having an isolated tab, it also has a higher
rating than the original one, so will be less likely to fail.


Q509.  How do I defeat local control of lights and appliances? 

A509.  A standard appliance or lamp module will turn itself on if the power 
switch on the device it is connected to is switched on.  This provides 
local control.  This is not always desirable, however.  Local control 
depends on the current draw through the module; if it exceeds a certain 
value, the device turns on.  Some devices (compact fluorescent lamps, for 
example) seem to have low impedance and keep switching themselves on even 
when explicitly turned off.  This local control can be disabled for 
appliance modules.  

Procedure:  

        Inside each module, there is an integrated circuit labeled 
"PICO-570".  Cut the lead that goes from pin 7 of this integrated 
circuit to the hot AC connection. 

=====================

X10 FAQ ENDS

============================================================================
 .-----  .-.    .-.               Timothy C. Green                  |\^/| 
(  /       :   /  '                CD, PEng, MEng                _|\|   |/|_
  /    /      / -+                 (403) 459-3609                >         <
 /    (__./  (__.:                t.green@ieee.org                >_./|\._<
============================================================================


