X10 FAQ html version

Based on the X10 FAQ version 1.08 (8 Jan 95) 
by
Harrison Cooper 
Sr. Hardware Engineer
Evans & Sutherland Computer Corp
www.es.com

OUTLINE


  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 accommodate X10?
  Q113.  How do I control fluorescent and halogen lights with X10?
  Q114.  Can I use X10 in a three-way light switching application?
  Q115.  What is PLIX?
  Q116.  Can I use X10 components outside?

  Q117.  What are the various combinations of X10 wireless receivers and transmitters that work together?
  Q118.  How do I make the motion detector floodlight unit work properly?

  SECTION 2:  Information on X10 Components

  MINI-CONTROLLER (X10:MC460)
  MAXI-CONTROLLER (X10:SC503, LEV:6320).
  SUNDOWNER (X10:SD533).

  MINI-TIMER (X10:MT522, RS:61-2670).
  TELEPHONE INTERFACE (X10:TR551, RS:61-2692).
  TELEPHONE TRANSPONDER (LEV:6325).
  HOME CONTROL INTERFACE (X10:CP290, RS:61-2617).
  COMPUTER INTERFACE (X10:PL513).
  COMPUTER INTERFACE (X10:TW523).

  THERMOSTAT CONTROLLER (X10:TH2807).
  WIRELESS TRANSMITTER (X10:RT504, LEV:6313, RS:61-2560).
  WIRELESS TRANSMITTER (X10:KC674, RS:61-2565).
  WIRELESS TRANSMITTER (X10:RW684, RS:61-2562).
  WIRELESS TRANSMITTER (X10:RW694, RS:61-2664).
  WIRELESS TRANSMITTER (X10:RW724, RS:61-2563).

  WALL MOUNTED CONTROLLER (LEV:6319-4).
  WALL MOUNTED CONTROLLER (LEV:6319-4D).
  WALL MOUNTED CONTROLLER (LEV:6319-4A).
  WALL MOUNTED CONTROLLER (LEV:6319-2).
  WALL MOUNTED CONTROLLER (LEV:6319-2D).
  WALL MOUNTED CONTROLLER (LEV:6319-1A).

  DRY CONTACT TRANSMITTER (LEV:6315).
  MOMENTARY DRY CONTACT TRANSMITTER (LEV:6316).
  WIRELESS RECEIVER (X10:RR501, LEV:6314, RS:61-2608).
  WIRELESS RECEIVER (X10:TM751).
  APPLIANCE MODULE (X10:AM486).
  APPLIANCE MODULE (X10:AM466).

  FIXTURE RELAY MODULE (LEV:6375).
  DIMMING FIXTURE MODULE (LEV:6376).
  LAMP MODULE(X10:LM465).
  MOTION DETECTOR (X10:PR511, LEV:6417, RS:61-2604).
  POWER HORN (X10:PH508, RS:61-2613).
  WALL SWITCH (X10:WS467).

  SCREW IN LAMP MODULE (X10:SL575).
  WALL SWITCH 3-WAY (X10:WS477).
  WALL SWITCH 3-WAY REMOTE (part no?).
  WALL SWITCH 3-WAY KIT (X10:WS4777).
  WALL OUTLET (X10:SR227, LEV:6227).
  WALL OUTLET DUPLEX (LEV:6280).

  WALL OUTLET 220V, 15A (X10:HD243, RS:61-2668).
  WALL OUTLET 220V, 20A (X10:HD245, RS:61-2669).
  REMOTE CHIME (X10:SC546).
  UNIVERSAL LOW VOLTAGE MODULE (X10:UM506, LEV:6337, RS:61-2688).
  THERMOSTAT SET BACK (X10:TH2807).
  SYSTEM AMPLIFIER (LEV:6201).

  SIGNAL BRIDGE (LEV:6299).
  NOISE BLOCK (LEV:6282).
  NOISE FILTER (LEV:6288).

SECTION 3: Details on X10 Protocol
SECTION 4: Programming details for CP290 Home Control Interface
COMMAND 0 - SET INTERFACE BASE HOUSE CODE COMMAND 1 - SEND DIRECT COMMAND COMMAND 2: SET INTERFACE CLOCK COMMAND 3a: SEND TIMER EVENT TO INTERFACE COMMAND 3b: SEND "GRAPHICS DATA" TO INTERFACE COMMAND 4: GET CLOCK TIME AND BASE HOUSE CODE FROM INTERFACE COMMAND 5: GET TIMER EVENTS FROM INTERFACE COMMAND 6: GET "GRAPHICS DATA" FROM INTERFACE COMMAND 7: DIAGNOSTIC KEYBOARD COMMANDS TIMED EVENTS 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 accommodate 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? Q510. How do I add a relay output to the power horn?

SECTION 1: GENERAL INFORMATION

Q101. What is X10?

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?

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?

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. Note that the standard wall switch (X10:WS467) is a receiver, not a transmitter; it does not transmit X10 commands, and only takes action when it receives the appropriate X10 command or local button-push.

Q104. How many different units can X10 handle?

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?

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.
        91 Ruckman Road, Box 420         1200 Aerowood Drive, Unit 20
        Closter, NJ  07624-0420          Mississauga, Ont  L4W 2S7
        (201) 784-9700                  (416) 624-4446
        (800) 526-0027                   (800) 387-3346
        x10usa@aol.com

Q106. Who sells X10 components?

The following companies are alleged to sell X10 components in North America. See Q108 for outside North America. 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/Info:    (905) 294-6473
 Orders only:  (800) 661-6508
 Fax:     (905) 471-3730
 BBS1:    (905) 471-9574
 BBS2:    (905) 471-6776
 
 Canadian Control and Automation Ltd
 7 Wincanton Rd.
 Markham, Ontario CANADA
 L3S-3H3
 Phone:   (905) 470-9121
 FAX:     (905) 568-3658
 
 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 (is this the right number?)
          (404) 410-1122 (is this the right number?)
 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)
          (800) 367-9836 (supposedly works in Canada, but doesn't really)
 Help:    (714) 708-0610 (also for orders from outside US)
 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
 
 Marrick Limited
 P.O. Box 950940
 Lake Mary, FL 32795
 Phone:      (407) 323-4467
 Fax:        (407) 324-1291
 BBS:        (407) 322-1429
 
 MicroMint
 4 Park St.
 Vernon, CT  06066
 Orders:     (800) 635-3355 (doesn't work in Canada)
 Phone:      (203) 871-6170
 Fax:        (203) 872-2204

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

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. An alternative solution is to install a 0.1 microfarad capcitor (240 VAC or 600 VDC) across the 220 volt line "hot-to-hot". A qualified electrician can do this across any 220 volt double pole breaker. This will bridge the signal from one side to the other.

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. If moving the transmitter does not work or is not feasible, the solution may be 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 (false ON/OFF signals, for example), often caused by TVs or wireless intercomms. Locate interference sources by unplugging them one at a time. See details on commercially available nosie blocks and filters in Section 2 below if moving the transmitter away from interference sources does not work or is not feasible.

If a WALL OUTLET 220V, 15A (X10:HD243) or WALL OUTLET 220V, 20A (X10:HD245) doesn't seem to work in an apartment or office building, that may be because the building has a three phase power system and the X10 outlets are designed to work on a single (split) phase system such as found in a home. There is no solution to this.

Some power strips that have filters in them to protect electronic equipment effectively filter out X10 signals. Cheaper power strips that protect against voltage spikes only do not affect X10 signals. Try moving X10 transmitters or receivers from power strips to a standard outlet if they don't seem to be working.

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. See also Q113.

Q108. Will X10 work on 220/240V?

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 on anything else than 60 Hz 110V is a bit hazy in North America. The following companies are reputed to sell X10 devices for European use:

 Busch-Jaeger Elektro GmbH
 P.O. box 1280
 D-5880 Luedenscheid
 Germany
 Phone: +49 2351 956-0
 Fax  : +49 2351 956-694
 
 Celtel (Celtec?) Ltd
 P.O. Box 135
 Basingstoke
 RG25 2HZ
 U.K.
 Phone:  0256 474900
 Fax:    0256 818064
 
 WDC Home Automation
 Somewhere in the U.K.
 0635 866707??
 0635 871141 ??
 
The following companies are reputed to sell X10 devices in Australia:
 
 CEBus Australia
 PO BOX 178
 Greensborough VIC 3088
 Australia
 Phone:   03 467 7194
 Fax:     03 467 8422
 
 Midac Technologies
 Upper Monkerai
 New South Wales 2415
 Australia
 Phone:   049 94 7069 
 Fax:     049 94 7039
 
 The Smart Company
 5 Mouat Street
 PO Box 127
 Fremantle, Western Australia  6160
 Australia
 Phone:  09 430 8887
 Fax:    09 430 8886

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

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.

See also Q115 for information on PLIX, which simplifies interface requirements considerably.

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

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. Also try BBS listed for other companies in A106 above.

Other sources:
 
 FTP:  ftp.digibd.com:/pub/rick/x10.shar
       oak.oakland.edu:/pub/msdos/x_10/   (CP290 software)
       mrcnext.cso.uiuc.edu:/asre/
       cs.sunysb.edu:/pub/386BSD/xten.tgz
       id.wing.net:/pub/pgf/x10/x10.tar.gz (UNIX CP290 software)
 
 
 WWW:  http://www.digibd.com/people/rick
       http://web.cs.ualberta.ca/~wade/HyperHome/

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

Try the following:

 
Magazines:
 
 Electronic House (is this the editorial address???)
 EH Publishing
 P.O. Box 339
 Stillwater, OK 74076-9923
 Phone:   (405) 624-8015  (800) 375-8015 ???
 FAX:     (405) 743-3374
 
 Electronic House (is this the address for subscriptions only???)
 P.O. Box 7972
 Riverton NJ 08077-8672
 Phone:   (508) 358-3400
 FAX:     (508) 358-5195
 
 Practical Home Automation magazine
 3043 South Laredo Circle
 Aurora, CO USA 80013-1805
 Phone:   (303) 699-5541
 FAX:     (303) 766-2696
 BBS:     (303) 680-3864 (8N1, 2400-9600 V.32)
 
Books:
 
 "How to automate your home", 2nd Edition byDavid Gladdis, published 1991
   by David Gladdis, ISBN 0-9632170-0-3, available from Baran-Harper and 
   possibly other X-10 mail-order companies
 
WWW:
 
 http://web.cs.ualberta.ca/~wade/HyperHome/
 
X10 Expertise for hire:
 
 Canadian Control and Automation Ltd
 7 Wincanton Rd.
 Markham, Ontario CANADA
 L3S 3H3
 Phone:   (905) 470-9121
 FAX:     (905) 568-3658
 Custom engineered home automation systems, security,fully distributed 
 A/V, home theater, energy management solutions, also SmartHouse(tm) 
 certified 
 
 T. Brusehaver
 Empowered Home
 10608 Alabama Circle
 Bloomington, MN 55438
 Phone:   (612) 887-1342
 X10 hardware and software, development in other areas of home automation,
 energy saving devices, smart occupancy sensors, infrared control
 
 Rick Sloan
 IntelliHome Controls
 15 - 8 Deerfield Drive
 Nepean, ON, CANADA  K2G 3R6
 Phone:    (613) 723-1427
 FAX/BBS:  (613) 723-2370
 E-mail:   al904@freenet.carleton.ca
 X10 hardware and software, development in other areas of home automation, 
 energy saving devices,smart occupancy sensors, products for disabled 
 persons, infrared control

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

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 three-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 to replace conventional switches in conventional wiring, both for simple on/off and three-way control. See Q114.

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. Of course, you may wish to put in a conventional switch somewhere so you could manually enable/disable the light fixture independent of X10 on/off control.

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 three-way (or four-way, or more) 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 and halogen lights with X10?

Lamp modules and standard X10 wall switch (e.g. X10:WS467) generally do not work well anything other than incandescent lights. There are several reasons why this is so.

Both lamp modules and wall switches cut out part of the power sine wave to dim the lights that are connected to them; the waveform available at the load is no longer a simple sine wave, but a sharply-truncated version of a sine wave. Even at full brightness, there is some power cut [Can anyone confirm this?]. This is not too critical for a simple incandescent light. For a compact fluorescent lamp that has some electronic circuitry in the base to drive it, however, this is not a good idea since the circuitry is designed around the expectation of a stable waveform at standard voltage. Trying to dim a compact fluorescent by modifying the input power supply is like trying to turn down the volume on your radio by putting it on a dimmer circuit. It may sort of work with unpredictable results, but cause damage to the load being dimmed.

Standard lamp modules and appliance modules have full access to house current since they are plugged directly into a power outlet. Standard X10 wall switch modules, however, rely on getting their power from current leaking through the filament of the incandescent bulb(s) in the circuit they control even when the bulb is off. If the load they control is not a standard incandescent bulb, there may be no (or not enough) current to the switch and it may not operate as designed. This may be especially true for fluorescent bulbs, or special power saving bulbs that have diodes built into the base.

As noted above, the voltage output from lamp modules and standard X10 wall switches is not a pure sine wave. Tranformers are generally designed for a certain frequency or range of frequencies (e.g. 50-60 Hz). They may not be able to handle the higher frequency harmonics present in the sharply truncated sine wave output from a lamp module or wall switch. As a result, they may heat up and/or burn out. This is true of halogen or fluorescent lamps that have an integrated transformer. It's true of any device with a transformer (e.g. some radios and computers) or with a motor (e.g. garage door opener or electric fan).

A standard APPLIANCE MODULE (X10:AM486) may work for loads that are other than incandescent lights. Note that when used with a compact fluorescent bulb, the local control mode in the appliance module often senses a small current flow and keeps turning on. See Section 5 on defeating local control. Using an appliance module on a halogen light should work in most applications, but will not permit remote dimming. If the light has a built-in dimming control, this can still be used.

There are special modules designed for fluorescent lights and other loads. Some of these may be in wall switch form but require a neutral power connection (not all existing wiring designed for a manual on/off switch have the neutral connection). Others (e.g. LEV:6375) wire directly into the light fixture and rely on control from some X10 transmitter (e.g. LEV:6319-4 series). Halogen flood lights work fine in MOTION DETECTOR (X10:PR511, LEV:6417).

There has been some success reported in using the standard X10 inacandescent wall switch for controlling halogen lights that do not have a transformer in the light fixture. There are many types of halogen bulbs; mileage may vary. Use at own risk.

Despite the information above and warnings on X10 lamp modules and wall switches that they be used only for incandescent loads, people persist in trying to use them for other loads. There are unconfirmed reports that doing so will cause the module/switch to catch fire (luckily this rarely happens more than once for a single installation). One should be very sure that one understands the full implication of going against the manufacturers' recommendations when directly connecting a device to the main power supply which will be left unattended in a valuable home.

Q114. Can I use X10 in a three-way light switching application?

The way lights are normally wired is with a single on/off SPST switch. When the contacts are closed, the light is on; when open, the light is off:

               *on--------------
              /                |
        -----*                 |
               *(off)        LIGHT
                               |
        ------------------------

In a three-way switching application, a pair of SPDT switches (often at the top and bottom of stairs) are wired so that the light can be turned on or off from either switch. (This is sometimes called two-way switching.) Note that for three-way switching, neither the switches nor the wiring are the same as for normal on/off switching:

 
               *----------------*
              /                  
        -----*                    *---------
                                 /          |
               *----------------*         LIGHT
                                            |
        -------------------------------------

In a situation where a light is already wired for three-way switching, X10 can easily be used. Install the WALL SWITCH 3-WAY KIT (X10:WS4777) -- see section 2 below. This contains one WALL SWITCH 3-WAY (master) and one WALL SWITCH 3-WAY REMOTE. Put the master in place of one switch and the remote in place of the other, wiring carefully as shown in the instructions that accompany the kit. Note that this is for incandescent lights only and not for appliances, motors or fluorescent lights.

In fact, this will work where lights are already wired for four- or more- way switching as well. All you need is one additional WALL SWITCH 3-WAY REMOTE (available separately) to replace each additional SPDT conventional switch.

If you are wiring a circuit with the intent of using X10 in a three-way (or more) light switching application, don't wire it as shown above. A much simpler and more flexible method is described in Q112.

Q115. What is PLIX?

PLIX stands for Power Line Interface to X-10. It is an 18 pin DIP ASIC which performs all the timing and decoding necessary to interface a PL-513 transmitter or a TW-523 transmitter/receiver to a microprocessor's TTL I/O port. In a nutshell, it does all the bit twiddling necessary to send and receive X-10 commands using a TW-523, simplifying the interface for home automation software. This allows even interpreted BASIC to send and receive commands to X-10 devices.

The PLIX chip can send and receive one command at a time. It can receive and buffer one X-10 command "in the background" (i.e. without any attention from the host processor) but if a second command comes in before the first is read the earlier data is overwritten.

The PLIX Evaluation Board kit (PLIX-EKit) is a PLIX chip, printed circuit board, and all required components. You must assemble it. By hanging a PLIX-EKit off the parallel printer port on your IBM PC and running the appropriate software, you can send and receive X-10 commands from your IBM PC. The PLIX chip also includes an AC Power Failure detect line, which on the PLIX-EKit is wired to generate an interrupt request to the host PC in the event of a power failure. As a minimum setup you would probably need a TW-523 interface and a "straight through" modular telephone cord, plus some kind of power supply (either a 9V battery or a simple power pack) and a case if you need it.

The PLIX chip comes with some simple software in BASIC, and there is sample C code available via anonymous ftp from mrcnext.cso.uiuc.edu:/asre/plix.c Knowledge of BASIC, Pascal, or C would be more than sufficient to do your own programming.

The PLIX chip and data sheet is $20 + shipping, and the EKit is $39 + shipping, both available from the MicroMint.

Q116. Can I use X10 components outside?

From time to time you may wish to control loads outside your home with X10. Generally this should be a WALL OUTLET (X10:SR227, LEV:6227) or an APPLIANCE MODULE (X10:AM466). There are two considerations you must bear in mind in installing these.

First, the X10 device must be protected from moisture. An appliance module should not put put outside; you might want to put it in your garage or garden shed (assuming you have power in these locations) and run an extension cord to the load out under the door. A more flexible approach would be to put an X10 wall outlet in an existing outside electrical box. This must be a weather proof box with tight cover. If you intend to leave something plugged into it for long periods of time, you will have to find or make some kind of cover that protects the X10 wall outlet from moisture.

Second, the X10 device should be on a circuit protected a ground fault circuit interrupter (GFCI, sometimes known as GFI). These are special outlets that shut down very quickly when they detect some leakage current. These can put in serial with an appliance module (appliance module plugged into GFCI outlet), or in parallel (X10 wall outlet wired on load side of GFCI outlet) as shown below (North American wiring assumed):

                  GFCI
                 outlet
  house current   _____         _____
  ________________|* *|---------|* *|  X10 appliance module (plugged into
  ________________| * |---------| * |   GFCI outlet, protected from
  ________________|   |---------|   |   elements)
            (line)|* *|         -----
                  | * |          ||+-------------
                  -----          |+--------------  load (plugged into
                                 +---------------   appliance module)
 
 
  house current   _____           _____  
  ________________|* *|___________|* *|
  ________________| * |___________| * |
  ________________|   |___________|   |----------  load (plugged into
            (line)|* *|(load)     |* *|----------   X10 wall outlet)
                  | * |           | * |----------
                  -----           -----  
                  GFCI           X10 wall
                 outlet           outlet (in weather proof box)

One final warning is about installing the X10 wall switch in an area where it will get cold. Apparently the triac in it doesn't work at low temperatures. For this reason, you should avoid even putting it in an outside wall.

Q.117 What are the various combinations of X10 wireless receivers and transmitters that work together?

WIRELESS TRANSMITTER (X10:RT504, LEV:6313, RS:61-2560) will work with WIRELESS RECEIVER (X10:RR501, LEV:6314) or WIRELESS RECEIVER (X10:TM751). To control 16 units, use two X10:RR501 (one set to 1-8, the other set to 9-16) or one X10:TM751.

The surface mount two, three and four button WIRELESS TRANSMITTERS (X10:684, X10:724, X10:694 respectively) will work for all codes with WIRELESS RECEIVER (X10:TM751). When used with WIRELESS RECEIVER (X10:RR501, LEV:6314), respectively they will only work for units 1-2, 1-3, or 1-4 if the receiver is set for 1-8; or 9-10, 9-11, or 9-12 if the receiver is set for 9-16.

The WIRELESS TRANSMITTER (X10:KC674) works for all codes with WIRELESS RECEIVER (X10:TM751). With the WIRELESS RECEIVER (X10:RR501, LEV:6314), it will only work for units 1-2 with the reciever set on 1-8.

All the transmitters work with X10 security systems to some degree. Check before investing. You should not use the WIRELESS RECEIVER (X10:TM751 or X10:RR501, LEV:6314) if you have an X10 security system (their timing is slightly different and the signals they put on the power line will interfere with each other). You should not have two wireless receivers of any type in close proximity (e.g. in same AC power bar) to each other (their local oscillators may interfere with each other).

The bottom line is that the WIRELESS RECEIVER (X10:TM751) is much more flexible than the WIRELESS RECEIVER (X10:RR501, LEV:6314) strictly for control purposes. If you already have an X10 security system, you should not need a separate wireless receiver.

Q118. How do I make the motion detector floodlight unit work properly?

MOTION DETECTOR (X10:PR511, LEV:6417) is a useful device that functions as both X10 receiver and transmitter. It contains a sensor head to detect motion, an X10 receiver to turn on the attached floodlights, and an X10 transmitter to turn on up to four X10 units when motion is detected or four other X10 units at dusk and off again at dawn. It also has a shutoff control with a variable timer to turn the lights (and remote units) off after motion has stopped. It has a photocell control with variable sensitivity to determine when dusk and dawn occur.

The most common problems with the motion detector can be solved by reading the short owner's manual that comes with it. This may seem obvious, but the answers to the most frequently asked questions are in fact in the manual.

If the detector does in fact detect motion during daylight hour and you want it to do so only at night, you need to adjust the DUSK control. Note that each time you change this, the new value will not become effective for ten minutes, or one minute if you turn the power off and then on again.

The floodlights on the detector be triggered on either by motion (turns off after a set time), or by darkness (turns off in the morning). This mode is set on the THIS UNIT switch, either SENSOR (for motion) or DUSK (for darkness). Halogen floodlights work fine with this device.

Independent of the setting of the THIS UNIT switch, the detector can turn on and off up to four remote X10 units when it detects motion. These units are the four units that follow in numerical sequence from the unit number of the detector. Thus if the detector is UNIT 1, when motion is detected (sensitivity controlled by RANGE control), the detector will send X10 signals to turn any or all of (individually selectable) UNITs 2, 3, 4, and 5 ON for the same house code, and turn them OFF again after the selected time (controlled by TIME DELAY control) has elapsed. As a second example of the unit codes, if the detector is UNIT 14, then any or all of UNITs 15, 16, 1 and 2 for the same house code can be triggered for motion detection. To reiterate, the detector can detect motion and trigger up to four external devices even if the floodlights themselves are set to come on at dusk and go off at dawn.

Independent of the setting of the THIS UNIT switch, and independent of any signals sent to remote units upon detection of motion, the detector can trigger up to four remote units on at dusk and off again at dawn. These remote units are the four units that are +5, +6, +7 and +8 from the unit number of the detector. Thus if the detector is UNIT 1, at dusk it will send X10 signals to turn any or all of (individually selectable) UNITs 6, 7, 8 and 9 ON for the same house code at dusk and OFF again at dawn, according to the sensitivity set on the DUSK control. As a second example of the unit codes, if the detector is UNIT 14, then an or all of UNITS 3, 4, 5, and 6 for the same house code can be triggered to be on only during hours of darkness. To reiterate, the detector can turn on up to four remote units during darkness even if the floodlights themselves are set to come on only when the detector detects motion.

The external units triggered by motion cannot be the same as those triggered by dusk/dawn. Also if the DUSK control is adjusted to the minimum to detect motion even during the day, the detector will not be useable for switching lights on and off at sundown and sunup. In this case, the attached floodlights will come on during the day, either continuously if THIS UNIT is set to DUSK, or whenever motion is detected if set to SENSOR.

One typical application would be to have the detector overlooking a back door or patio. At dusk, the detector would turn on the front exterior lights and some interior ones to make the empty house look lived-in. When the detector detects motion in the back yard, it would turn on the attached floodlights, other interior lights and a recording of vicious dog. These would go off after the set time. Late in the evening, some sort of X10 timer would turn off the lights that came on at dusk, to simulate the occupants going to bed.

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, RS:61-2670). 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, RS:61-2692). 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, RS:61-2617). 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, RS:61-2560). 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, RS:61-2565). Turns any two units on or off by sending radio signals to WIRELESS RECEIVER (X10:TM571 or RR501), keychain size

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

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

WIRELESS TRANSMITTER (X10:RW724, RS:61-2563). 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 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, RS:61-2608). 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, RS:61-2604). 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.

POWER HORN (X10:PH508, RS:61-2613). This is a very loud (100dB) piezo electric device used as the audible indicator to scare away or deafen intruders. It sounds in response to X10 signals, usually generated by other components in a complete X10 alarm system.

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.

SCREW IN LAMP MODULE (X10:SL575). Same function as lamp module (X10:465) but screws in between existing light fixture and bulb. Controls up to 150 watts.

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, RS:61-2668). 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, RS:61-2669). 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, RS:61-2688). 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.

THERMOSTAT SET BACK (X10:TH2807). Supplies a small amount of heat under conventional thermostat to fool into turning heating off. Plugs into an appliance module (e.g. X10:AM486) or an X10 wall outlet (e.g. X10:SR227, LEV:6227)

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:


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 SPECS 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 interface 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 - synchronization
                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 - synchronization
                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 - synchronization
                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 (interface 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 computer 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?

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?

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 relativelocations 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 Component 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. They share a common connection. 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 accommodate      more than 16 units? 

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?

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")?

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?

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?

The following answer comes from oadebc@robots.gsfc.nasa.gov:

Description:

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. 

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

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. 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 [Does this part actually have an isolated tab?], or Digi-Key part number L4008L6-ND. In addition to having an isolated tab, it also has a higher rating than the original one, so will be less likely to fail.

If you don't know a triac from a mouse trap, you'd better not try to replace it.

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

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" or "PICO-536C"  Cut the lead that goes from pin 7 of this integrated 
circuit to the hot AC connection.

Q510. How do I add a relay output to the power horn?

The following answer comes from oadebc@robots.gsfc.nasa.gov:

Description:

I have always wanted to add a relay output to the power horn. With this feature, I can switch on a more powerful outside bell, an autodialer, or any other load upon detection of a violation. When I opened the case, I was surprised to learn that unit was already designed to do just that, except the necessary components have been left out. There even are two holes in the back of the unit for screw terminals that are covered by a small sticker. After tracing the circuit, I selected some replacements listed below.

Procedure:

The procedure requires the installation of eight components that should be commonly available. Open the case by removing the four screws in the back. On the PC board you will see near the bottom (side away from the AC plug) the silk screening for the relay output portion. Install the following components (all resistors 1/4 watt with exceptions):


  R30 - 1Kohm (1/2Watt)
  R32 - 12Kohm
  R33 - 12Kohm
  R34 - 200Kohm
  R35 - 200Kohm
  D16 - Any Silicon Diode (not Zener)
  RL1 - Your relay (see note below)
  TR8 - 2N2222 Switching Transistor

For the screw terminals, you can use a set taken from an unused (X-10) alarm sender, or you can decide on your own interface. The relay could be tricky. I was lucky and was able to find a relay that fit after some modifications. It does appear to me however that Radio Shack sells micro relays that would fit.

Operation:

The relay will close as soon as the horn starts blaring (and vise versa). Your current rating will certainly depend on the relay you choose. If you are so inclined, you could even disconnect the piezo horns, and have a unit that silently turns on a load upon an alarm violation.

Changing the reaction time of the Horn:

After some poking around I found out specifically how the Horn is triggered. A capacitor is charged a small amount every time an ALL UNITS OFF command is received after an ALL UNITS ON command. When this voltage reaches 7.0 Volts, the Horn starts a-blarin'. This usually takes 20 seconds after the alarm system is triggered, an amount that I think is just too long. The capacitor that determines the reaction time is C13, located near pin 18 of the 78566 chip. The 'stock' value of this capacitor is 22uF, and it takes five transitions of the command to trigger the horn. By using a 10uF capacitor this amount is reduced to only two needed transitions. Summary:

        Standard Horn (22uF) trigger time is 20 seconds.
        Modified Horn (10uF)                 8  seconds.

The quick reaction time will hopefully cause the intruder to stop his break in attempt sooner.

Effects of Combining the two Mods:

If you want the load that is switched by the relay be flashed on and off, you can combine the two modifications. The on to off duty cycle can be changed by changing C13. Actually what I have done is to socket C13, so that I can open the case and easily change the reaction time of the horn.

Conclusion:

I (oadebc@robots.gsfc.nasa.gov) am curious to know if anyone finds this mod useful. Please let me know any questions or comments. Have fun, and I will trust that you will not hold me responsible for your failures (only for your successes 8-).