home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 15 / CD_ASCQ_15_070894.iso / vrac / x10_faq1.zip / X10_FAQ1 < prev   
Text File  |  1994-06-10  |  69KB  |  1,552 lines

  1. X10 FAQ version 1.000 (29 May 94)
  2.  
  3. Please mail all input to me; don't follow up in news.  With your help, we
  4. can make this useful! Thanks for all the input so far.
  5.  
  6. ============================================================================
  7.  .-----  .-.    .-.               Timothy C. Green                  |\^/|
  8. (  /       :   /  '                CD, PEng, MEng                _|\|   |/|_
  9.   /    /      / -+                 (403) 459-3609                >         <
  10.  /    (__./  (__.:                t.green@ieee.org                >_./|\._<
  11. ============================================================================
  12.  
  13.  
  14. CHANGES SINCE LAST VERSION
  15.  
  16. [Since last version was only draft outline, this is the real first version.
  17. Ergo, changes are too numerous to list.]
  18.  
  19.  
  20. OUTLINE:
  21.  
  22. --part 1--
  23. SECTION 1:  General Information
  24. Q101.  What is X10?
  25. Q102.  What sort of X10 transmitters exist?
  26. Q103.  What sort of X10 receivers exist? 
  27. Q104.  How many different units can X10 handle? 
  28. Q105.  Who makes X10 components?
  29. Q106.  Who sells X10 components?
  30. Q107.  How do I solve common X10 problems? 
  31. Q108.  Will X10 work on 220/240V? 
  32. Q109.  How do I send and receive X10 signals with my computer? 
  33. Q110.  Where do I get X10 software for my computer?
  34. Q111.  Where do I look for more information on X10?
  35. SECTION 2:  Information on X10 Components
  36. SECTION 3:  Details on X10 Protocol
  37. SECTION 4:  Programming details for CP290 Home Control Interface
  38. --part 2--
  39. SECTION 5:  Modifications to X10 hardware
  40. Q501.  How do I modify appliance modules for momentary operation?
  41. Q502.  How do I add local dimming capability to wall switch modules?
  42. Q503.  How do I modify the maxi-controller to accomodate more than 16 units?
  43. Q504.  How do I modify the mini-controller to control more untits?
  44. Q505.  How do I modify the mini-controller to control all units for a
  45. single housecode?
  46. Q506.  How do I modify the mini-controller to control only units 9-12 or
  47. 13-16?
  48. Q507.  How do I modify the mini-controller for momentary operation?
  49. Q508.  How do I repair a "blown" lamp module?
  50. Q509.  How do I defeat local control of lights and appliances?
  51.  
  52.  
  53. --part 1--
  54.  
  55. SECTION 1:  GENERAL INFORMATION 
  56. ===============================
  57.  
  58.  
  59. Q101.  What is X10? 
  60.  
  61. A101.  X10 is a communications protocol for remote control of electrical
  62. devices.  It is designed for communications between X10 transmitters and
  63. X10 receivers which communicate on standard household wiring.  Transmitters
  64. and receivers generally plug into standard electrical outlets although some
  65. must be hardwired into electrical boxes.  Transmitters send commands such
  66. as "turn on", "turn off" or "dim" preceded by the identification of the
  67. receiver unit to be controlled.  This broadcast goes out over the
  68. electrical wiring in a building.  Each receiver is set to a certain unit
  69. ID, and reacts only to commands addressed to it.  Receivers ignore commands
  70. not addressed to them.
  71.  
  72. Note that "X-10" is a trademark of X-10 (USA) Incorporated an possibly of
  73. X-10 Home Controls Incorporated (in Canada) as well.  This FAQ uses "X10"
  74. unless referring specifically to a product of the holder of the "X-10"
  75. trademark.
  76.  
  77.  
  78. Q102.  What sort of X10 transmitters exist? 
  79.  
  80. A102.  The simplest X10 transmitter is a small control box with buttons.
  81. The buttons select which unit is to be controlled, and which control
  82. function is to be sent to the selected units (e.g. "turn on", "all units
  83. off", etc).  There are also clock timer transmitters which can be
  84. programmed to send X10 commands at certain times.  Some of these can be
  85. programmed with buttons on the timer; some must be connected to a computer
  86. to select the times.  There are other special purpose transmitters that
  87. send certain X10 commands at sunup or sundown, upon detecting movement, or
  88. as commanded by tones over a telephone.  This is not an all inclusive list,
  89. and more detail on specific transmitters is given in Section 2. 
  90.  
  91.  
  92. Q103.  What sort of X10 receivers exist? 
  93.  
  94. A103.  The simplest X10 receiver is a small module with an electrical plug
  95. (to connect to a standard wall outlet), an electrical outlet (to provide
  96. controlled power to the device it's controlling) and two dials (to set the
  97. unit ID code) on it.  An appliance module has relay inside which switches
  98. power to its outlet on or off in response to X10 commands directed to it.
  99. A lamp module is similar, but has a triac instead of a relay and will
  100. respond to dimming commands as well as on or off commands.  Other receivers
  101. can be wired into wall outlets or into lamp fixtures.
  102.  
  103.  
  104. Q104.  How many different units can X10 handle? 
  105.  
  106. A104.  X10 specifies a total of 256 different addresses:  16 unit codes (1-
  107. 16) for each of 16 house codes (A-P).  Normally a transmitter is set to a
  108. certain house code (generally selectable by means of a dial) and so can
  109. control at most 16 unit codes.  There is no restriction on using multiple
  110. transmitters each set to a different house code on the same wiring.  Also,
  111. several receivers could be set to the same house code and unit code so a
  112. single command issued by an X10 transmitter could control multiple
  113. receivers in parallel.
  114.  
  115.  
  116. Q105.  Who makes X10 components?
  117.  
  118. A105.  Many different companies either make and/or distribute X10
  119. components under different names.  Some types are sold by more than one
  120. company (probably made by same OEM).  Some are specific to only one
  121. company.  Not all companies handle the complete range of components.  Some
  122. companies selling X10 components and their associated product names are: 
  123.  
  124.  - Radio Shack:  Plug 'N Power
  125.  
  126.  - Leviton:   Decora Electronic Controls
  127.         Leviton Mfg. Co. Inc.           Leviton Manufacturing of Canada
  128.         59-25 Little Neck Pkwy          165 Hymus Blvd
  129.         Little Neck, NY  11362-2591    Point Claire, QC  H9R 1G2
  130.         (718) 229-4040
  131.         (800) 824-3005
  132.  
  133.  - Stanley:  Light Minder 
  134.  
  135.  - X-10:  Powerhouse 
  136.         X-10 (USA) Inc.                 X-10 Home Controls Inc.
  137.         185A LeGrand Ave.               1200 Aerowood Drive, Unit 20
  138.         Northvale, NJ 07647             Mississauga, Ont  L4W 2S7
  139.         (201) 784-9700                  (416) 624-4446
  140.         (800) 526-0027                   (800) 387-3346
  141.  
  142.  
  143. Q106.  Who sells X10 components?
  144.  
  145. A106.  The following companies are alleged to sell X10 components in North
  146. America.  See Q108 for Europe.  Listing in this FAQ is not an endorsement
  147. or recommendation of any kind:
  148.  
  149.  Baran-Harper Group Inc.
  150.  77 Drakefield Road
  151.  Markham, ON  L3P 1G9
  152.  Help:    (905) 294-6473
  153.  Orders:  (800) 661-6508
  154.  Fax:     (905) 471-3730
  155.  BBS1:    (905) 471-9574
  156.  BBS2:    (905) 471-6776
  157.  
  158.  Complete Home Automation
  159.  Phone:   (800) 766-4226 (doesn't work in Canada)
  160.  
  161.  Home Automation, Inc.
  162.  2709 Ridgelake Dr.
  163.  Metairie, LA 70002
  164.  Phone:   (504) 833-7256
  165.  Fax:     (504) 833-7258
  166.  
  167.  Home Automation Laboratories
  168.  5500 Highlands Pkwy, Suite 450
  169.  Smyrna, GA 30082-5141
  170.  Orders:  (800) 466-3522
  171.  Catalog: (800) 935-4425
  172.  Help:    (404) 319-6000
  173.  Fax:     (404) 438-2835
  174.  BBS:     (404) 319-6227 (300-14.4,8,N,1)
  175.  
  176.  Home Automation and Security
  177.  286 Ridgedale Ave.
  178.  East Hanover, NJ 07936
  179.  Orders:  (800) 254-5950
  180.  Help:    (201) 887-1117
  181.  Fax:     (201) 887-5170
  182.  
  183.  Home Automation Systems, Inc.
  184.  151 Kalmus Drive, Suite M6
  185.  Costa Mesa, CA 92626
  186.  Orders:  (800) 762-7846 (doesn't work in Canada)
  187.  Help:    (714) 708-0610
  188.  Fax:     (714) 708-0614
  189.  
  190.  Home Control Concepts
  191.  9520 Padgett St. Suite 108
  192.  San Diego, CA 92126
  193.  Orders:  (800) 266-8765 (doesn't work in Canada)
  194.  Help:    (619) 693-8887
  195.  Fax  :   (619) 693-8892
  196.  
  197.  Hybrid Technical Systems, Inc.
  198.  4765 Franchise Street
  199.  Charleston, SC 29418
  200.  Orders:  (800) 289-2001 (doesn't work in Canada)
  201.  America Online:  HybridTech
  202.  Compuserve:    71561,2604
  203.  
  204.  JaMar Distributing
  205.  1292 Montclair Drive, 
  206.  Pasadena, MD  21222
  207.  Orders:  (800) 477-8142 (doesn't work in Canada)
  208.  Fax:     (410) 437-3757
  209.  Help:    (410) 437-4181
  210.  
  211.  JDS Technologies
  212.  16750 W. Bernardo Drive
  213.  San Diego, CA 92127
  214.  Orders:     (800) 983-5537
  215.  Help:       (619) 487-8787
  216.  Fax:        (619) 451-2799
  217.  
  218.  Vaux Electronics, Inc.
  219.  2750 S. Hardy Dr., Suite 1
  220.  Tempe, AZ 85282
  221.  Phone:   (602) 894-2350
  222.  Fax:     (602) 894-5212
  223.  
  224.  
  225. Q107.  How do I solve the most common X10 problems? 
  226.  
  227. A107.  There is a common problem that you may encounter in setting up your
  228. home with X10 modules.  This happens mostly in larger homes, say larger
  229. than 2000 square feet (185 square metres).  The symptoms are that some
  230. receiver modules may not work when commanded from some transmitters, or
  231. they may only work sporadically.
  232.  
  233. This could be caused by too much isolation between the two sides of the
  234. power line (assuming North American wiring standards):  a transmitter on
  235. one side will not transmit reliably to a receiver on the other side.  Try
  236. your X10 system with and without your electric stove turned on; turning the
  237. stove on may bridge both sides of the power line, but is not the
  238. recommended permanent solution.  A better way would be to install a signal
  239. bridge which is available as a commercial product.  See section 2 below for
  240. details.
  241.  
  242. This could also be because the distance from the transmitter to the
  243. receiver is too great and the signals are two weak to activate the
  244. receiver.  The solution to this is to install a signal amplifier.  This is
  245. available as a commercial product.  See Section 2 below for details. 
  246.  
  247. Noise blocks or noise filters may solve other more obscure problems.  See
  248. details on these commercially available products in Section 2 below.
  249.  
  250.  
  251. Q108.  Will X10 work on 220/240V? 
  252.  
  253. A108.  There are X10 receiver modules designed to control 240 volt loads,
  254. but only where these are part of a standard North American wiring system,
  255. e.g. for the electric stove or electric drier.  See section 2 below. 
  256.  
  257. Knowledge of how X10 works in Europe on 50 Hz, 220 V is a bit hazy in North
  258. America.  The following two companies are reputed to sell X10 devices for
  259. European use:
  260.  
  261.  Busch-Jaeger Elektro GmbH
  262.  P.O. box 1280
  263.  D-5880 Luedenscheid
  264.  Voice: +49 2351 956-0
  265.  Fax  : +49 2351 956-694
  266.  
  267.  Celtel Ltd
  268.  P.O. Box 135
  269.  Basingstoke
  270.  RG25 2HZ
  271.  U.K.
  272.  
  273.  
  274. Q109.  How do I send and receive X10 signals with my computer? 
  275.  
  276. A109.  The easiest way of giving your computer some control over X10
  277. modules is via the CP290 Home Control Interface.  This is a small box that
  278. connects to a standard RS-232 serial port and has its own internal battery
  279. backed up seven day clock. It is sold with software to work with a PC, Mac
  280. or Apple ][ (the hardware is the same for all).  Once you set up to 128
  281. events (on, off, dim) using your computer, you can turn off the computer
  282. and the box will transmit scheduled X10 commands on a daily or weekly
  283. schedule. The CP290 also has an "immediate" mode to send X10 commands from
  284. the computer to X10 receivers.
  285.  
  286. There are also other X10 modules to interface computers directly to the
  287. power line to send and/or receive X10 commands.  These are the PL513 (send
  288. only) and the TW523 (send and receive).  
  289.  
  290. More details on these components are in Section 2. 
  291.  
  292.  
  293. Q110.  Where do I get X10 software for my computer? 
  294.  
  295. A110.  The CP290 Home Control Interface comes with software for either IBM
  296. PC, Mac, or Apple ][.  This is rudimentary, but functional.  There is also
  297. some control software for the CP290 on the Simtel mirrors.  Try ftp:
  298. oak.oakland.edu  in the directory  /pub/msdos/x_10 .
  299.  
  300. Baran-Harper Group Inc in Ontario runs a bulletin board that has a good
  301. selection of software for the CP290 and TW523.  Their BBS numbers are (905)
  302. 471-9574 and (905) 471-6776.
  303.  
  304.  
  305. Q111.  Where do I look for more information on X10?
  306.  
  307. A111.  Try the following:
  308.  
  309. Magazines:
  310.  
  311.  Electronic House
  312.  EH Publishing
  313.  P.O. Box 339
  314.  Stillwater, OK 74076-9923
  315.  Phone:   (405) 624-8015
  316.  1 year: $17.95, 2 years $31.95
  317.  
  318. Books:
  319.  
  320.  [none so far]
  321.  
  322.  
  323. SECTION 2:  INFORMATION ON X10 COMPONENTS 
  324. ==========================================
  325.  
  326. Manufacturers' numbers shown below are coded as follows: 
  327.  
  328.  X10:  X-10 Powerhouse 
  329.  LEV:  Leviton Decora Electronic Controls 
  330.  RS:   Radio Shack Plug 'N Power
  331.  
  332.  
  333. MINI-CONTROLLER (X10:MC460).  Controls either units 1-4 or 5-8 (selectable)
  334. for any single house code.  Functions: on, off, dim, all lights on, all
  335. off.  Connects to standard wall outlet.
  336.  
  337. MAXI-CONTROLLER (X10:SC503, DEC:6320). Controls units 1-16 for any single
  338. house code.   Functions:  on, off, dim, all lights on, all off.  Connects
  339. to standard wall outlet.
  340.  
  341. SUNDOWNER (X10:SD533).  Same as MINI-CONTROLLER.  Also will turn four units
  342. on at sundown and off at sunup as determined by internal photocell.
  343. Connects to standard wall outlet.
  344.  
  345. MINI-TIMER (X10:MT522).   Battery backed up clock, controls units 1-8 for
  346. any house code.  Functions (daily cycle):  on or off at exact time or
  347. approximate time.  Manual control: off on, all lights on
  348.  
  349. TELEPHONE INTERFACE (X10:TR551).  Answers phone, controls 10 modules from
  350. commands on remote DTMF phone 
  351.  
  352. TELEPHONE TRANSPONDER (LEV:6325).  Answers phone, controls all 256 possible
  353. units for commands on remote DTMF phone, three digit access code, confirms
  354. all commands with synthesized voice
  355.  
  356. HOME CONTROL INTERFACE (X10:CP290).  Battery backed up clock, seven day
  357. cycle, 128 events set by computer connected to RS-232 interface, any house
  358. code, any unit codes.  Manual control:  units 1-8 for the base house code
  359. set on the unit, on or off.  Comes with software for any one of (not all)
  360. PC, MAC or Apple ][.  Computer can be turned off or disconnected once the
  361. interface has been programmed and it continues on by itself. 
  362.  
  363. COMPUTER INTERFACE (X10:PL513).  Send only computer interface module.
  364.  
  365. COMPUTER INTERFACE (X10:TW523).  Send and receive computer interface
  366. module.
  367.  
  368. THERMOSTAT CONTROLLER (X10:TH2807). Attaches to appliance module.  Small
  369. heater underneath any thermostat fools it into thinking house is warm and
  370. furnace need not be turned on.  Good for use with automatic timer (e.g.
  371. MINI-TIMER or HOME CONTROL INTERFACE). 
  372.  
  373. WIRELESS TRANSMITTER (X10:RT504, DEC:6313).  Controls units 1-8 or 9-16 for
  374. any house code by sending radio signals to a WIRELESS RECEIVER (X10:RR501,
  375. DEC:6314).
  376.  
  377. WIRELESS TRANSMITTER (X10:KC674).  Turns any two units on or off by sending
  378. radio signals to WIRELESS RECEIVER (X10:TM571 or RR501), keychain size
  379.  
  380. WIRELESS TRANSMITTER (X10:RW684).  Turns any two units on or off by sending
  381. radio signals to WIRELESS RECEIVER (X10:TM571 or RR501), surface mount 
  382.  
  383. WIRELESS TRANSMITTER (X10:RW694).  Turns any four units on or off by
  384. sending radio signals to WIRELESS RECEIVER (X10:TM571 or RR501), surface
  385. mount
  386.  
  387. WIRELESS TRANSMITTER (X10:RW724).  Turns any three units on, off or dim by
  388. sending radio signals to WIRELESS RECEIVER (X10:TM571 or RR501), surface
  389. mount 
  390.  
  391. WALL MOUNTED CONTROLLER (LEV:6319-4).  Turns any four consecutive units on
  392. or off.  Push button switches.  Wired into rectangular wall box. 
  393.  
  394. WALL MOUNTED CONTROLLER (LEV:6319-4D).  Turns any three consecutive units
  395. on, off or dim.  Push button switches.  Wired into rectangular wall box.
  396.  
  397. WALL MOUNTED CONTROLLER (LEV:6319-4A).  Turns any three consecutive units
  398. on or off.  Also provides ALL ON and ALL OFF commands.  Push button
  399. switches.  Wired into rectangular wall box. 
  400.  
  401. WALL MOUNTED CONTROLLER (LEV:6319-2).  Turns any two consecutive units on
  402. or off.  Push button switches.  Wired into rectangular wall box.
  403.  
  404. WALL MOUNTED CONTROLLER (LEV:6319-2D).  Turns any unit on, off or dim. Push
  405. button switches.  Wired into rectangular wall box.
  406.  
  407. WALL MOUNTED CONTROLLER (LEV:6319-2D).  Turns any unit on or off.  Push
  408. button switches.  Wired into rectangular wall box.
  409.  
  410. WALL MOUNTED CONTROLLER (LEV:6319-1A).  Provides ALL ON and ALL OFF
  411. commands.  Push button switches.  Wired into rectangular wall box. 
  412.  
  413. DRY CONTACT TRANSMITTER (LEV:6315).  Transmits X10 ON and OFF signals to
  414. four consecutive units in response to make or break connections of dry
  415. contact sensors (e.g. photocells, external alarm systems).  Wired into
  416. rectangular wall box.
  417.  
  418. MOMENTARY DRY CONTACT TRANSMITTER (LEV:6316).  Similar to DRY CONTRACT
  419. TRANSMITTER (LEV:6315) but triggers on momentary changes in the external
  420. dry contact sensors.
  421.  
  422. WIRELESS RECEIVER (X10:RR501, DEC:6314).  Receives X10 commands by radio
  423. signals from WIRELESS TRANSMITTER (X10:RT504, DEC:6313) and retransmits
  424. them into house wiring for any eight units.  Also has integrated appliance
  425. module.
  426.  
  427. WIRELESS RECEIVER (X10:TM751).  Receives X10 commands by radio signals
  428. from WIRELESS TRANSMITTER and retransmits them into house wiring for any
  429. two units.  Also has integrated appliance module.
  430.  
  431. APPLIANCE MODULE (X10:AM486).  Responds to any house code, any single unit.
  432. Turns load (15A, motors up to 1/3 HP, 500W for lights) either on or off.
  433. Two conductor 
  434.  
  435. APPLIANCE MODULE (X10:AM466).  Same as APPLIANCE MODULE (X10:AM486), but
  436. three conductor
  437.  
  438. LAMP MODULE(X10:LM465).  Responds to any house code, any single unit.
  439. Turns incandescent light (300W max) on, off, or dim.  Reportedly melts if
  440. connected to anything else.
  441.  
  442. MOTION DETECTOR (X10:PR511, DEC:6417).  At sundown, sends ON command for
  443. any up to four consecutive units and sends OFF again at sunup.  Also only
  444. when dark, sends ON command to up to four other consecutive units when
  445. motion detected.  Two floodlight sockets turned on/off for either
  446. sundown/sunup or when motion detected (selectable). Adjustable sensitivity
  447. for sunup/sundown and on/off time delay for motion.  For outside use.  Must
  448. be wired into round electrical box.
  449.  
  450. WALL SWITCH (X10:WS467).  Replaces standard wall switch, wired into
  451. rectangular wall box.  Manual toggle of on or off.  May be locked in off
  452. position.
  453.  
  454. WALL SWITCH 3-WAY (X10:WS4777).  Same as standard WALL SWITCH, but for use
  455. with three way switch (on/off at two or more locations).  Comes with WALL
  456. SWITCH 3-WAY REMOTE.
  457.  
  458. WALL SWITCH 3-WAY REMOTE (part no?).  Used with WALL SWITCH 3-WAY.  For
  459. on/off at two or more locations, one must be WALL SWITCH 3-WAY, others must
  460. be WALL SWITCH 3-WAY REMOTE.  One of these is included with WS4777, but
  461. they are available separately.
  462.  
  463. WALL OUTLET (X10:SR227, DEC:6227).  Similar to APPLIANCE MODULE 15 A, 800W)
  464. but replaces standard wall outlet, wired into rectangular wall box.  One
  465. outlet is X10 controlled; other is always on.
  466.  
  467. WALL OUTLET DUPLEX (LEV:6280).  Similar to WALL OUTLET, but each outlet is
  468. considered separate X10 unit, controlled separately.
  469.  
  470. WALL OUTLET 220V, 15A (X10:HD243).  Controls 220V appliances (e.g. water
  471. heater) up to 15 A, monophase or split two phase, standard North American
  472. wiring.
  473.  
  474. WALL OUTLET 220V, 20A (X10:HD245).  Same as WALL OUTLET 220V 15A but for up
  475. to 20 A.
  476.  
  477. REMOTE CHIME (X10:SC546).  Chimes when turned on.  Selectable for any house
  478. code, any unit code.  Could be used with MOTION DETECTOR to warn when
  479. someone is approaching.
  480.  
  481. UNIVERSAL LOW VOLTAGE MODULE (X10:UM506, DEC:6337).  Selectable for any
  482. house code, any unit code.  Closes external circuit (selectable continuous
  483. or momentary) in response to X10 command.  Has integrated REMOTE CHIME
  484. function.  Plugs into standard wall outlet.  For controlling sprinklers,
  485. curtain closers whose control signals are not 120V but rely on simple
  486. switch closing.
  487.  
  488. SYSTEM AMPLIFIER (LEV:6201).  Boosts signals on one phase and retransmits
  489. them on the other in North American 120/240V wiring system.  Installed on
  490. its own 15A breaker at main electrical panel.  Often required for large
  491. buildings over 5000 square feet (465 square metres).
  492.  
  493. SIGNAL BRIDGE (LEV:6299).  Couples signals from one phase to other in North
  494. American 120/240V wiring system.  Installed on its own 15A breaker in
  495. rectangular wall box.  Often required in medium sized buildings over 2000
  496. square feet (185 square metres), or smaller where commands do not pass
  497. reliably.
  498.  
  499. NOISE BLOCK (LEV:6282).  Installed between incoming power line and main
  500. panel to keep extraneous electronic noise and signals from entering or
  501. leaving X10 network.  Useful in apartments or attached homes sharing same
  502. transformer with others.  100A per phase.
  503.  
  504. NOISE FILTER (LEV:6288).  Looks like appliance module.  Installed between
  505. power outlet and power cord of particularly noisy appliance that is
  506. interfering with X10 signals. 
  507.  
  508.  
  509. SECTION 3:  DETAILS ON X10 PROTOCOL 
  510. ==================================== 
  511.  
  512. Note:  This section applies to 60 Hz North American wiring.  Relevance of
  513. this to European wiring is not known.
  514.  
  515. Each ONE bit in a legitimate X10 transmission is a 1 millisecond (mS)
  516. pulse code modulated burst of 120KHz on the AC line, and each ZERO is the
  517. absence of that burst.  The burst is sent three times for each bit, once at
  518. each AC zero-crossing (accounting for zero-crossing in 3-phase).  That
  519. means once each 2.778 mS.  The next bit is sent on the following zero-
  520. crossing.  This is done to get the quietest time on the AC line for the
  521. receiver, whatever phase of the AC it's on.  The zero crossing gives the
  522. best signal-to-noise ratio for data transmission because everything should
  523. be shut down then (i.e. the voltage is low).
  524.  
  525.               .  .  .                                                     .
  526.            .           .                                               .
  527.         .                 .                                         .
  528.      .                       .                                   .
  529.   ._____________________________._____________________________.___________
  530.   ^         ^         ^         ^ .       ^         ^     .   ^         ^
  531.   1         1         1         2    .    2         2  .      3        etc.
  532.                                          .           .
  533.                                             .  .  .
  534.  
  535.  
  536. In addition, each bit is sent both true and complemented, and each code
  537. sequence (except for DIM and BRIGHT) is sent twice.  That's a lot of bit
  538. redundancy, and just barely enough to make it past the noise on the line.
  539.  
  540. A single normal command takes eleven cycles of the AC line to finish.  All
  541. legal commands must first start with the header 1110, a unique code as
  542. described below.  The header bits take two cycles at one bit per half
  543. cycle.  The next four cycles are the four-bit House Code, but it takes
  544. eight bits total because each bit is sent true then complemented.  This is
  545. similar to biphase encoding, as the bit value changes state half-way
  546. through the transmission, and improves transmission reliability.  The last
  547. five AC cycles are the Unit / Function Code, a five bit code that takes ten
  548. bits (again, true then complemented).  For any codes except the DIM, BRIGHT
  549. and the data following the EXTENDED DATA function, there's a mandatory
  550. three cycle pause before sending additional commands.  DIM and BRIGHT don't
  551. necessarily need a pause, and the data after the EXTENDED DATA command
  552. absolutely MUST follow immediately until all bytes have been sent.  The
  553. EXTENDED DATA code is handy, as any number of eight-bit bytes may follow.
  554. The data bytes must follow the true/complement rule, so will take eight
  555. cycles per byte, with no pause between bytes until complete. The only legal
  556. sequence that doesn't conform to the true/complement rule are the start
  557. bits 1110 that lead the whole thing off, likely because the modules need
  558. some way to tell when it's OK to start listening again.
  559.  
  560. A full transmission containing everything looks like this (see the end of
  561. this section for the actual command codes):
  562.  
  563.    1 1 1 0  H8 /H8 H4 /H4 H2 /H2 H1 /H1  D8 /D8 D4 /D4 D2 /D2 D1 /D1 F /F
  564.    (start)         (House code)                 (Unit/Function code)
  565.  
  566. So, to turn on Unit 12 of House code A, send the following:
  567.  
  568.    1 1 1 0   0 1 1 0 1 0 0 1   1 0 0 1 1 0 1 0 0 1  (House A, Unit 12)
  569.  
  570. then wait at least three full AC cycles and send it again, then wait three
  571. and send:
  572.  
  573.    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)
  574.  
  575. again wait three cycles and send it the last time.  Total transmission
  576. would have been 264 discrete bits (don't forget the 3-phase) and would take
  577. 53 cycles of the AC line, or about .883 seconds.
  578.  
  579. It's perfectly allowable to stack the Unit or Function codes together, so
  580. sending Unit 2  Unit 3  Unit 12  ON (separated by 3 cycles minimum) will
  581. turn on all 3 units.  Stacking ON and OFF codes is annoying and flashes the
  582. lights quickly (roughly 4 Hz).
  583.  
  584.  
  585. X10 COMMAND CODES
  586.  
  587.          House Codes                         Unit/Function Codes
  588.  
  589.        H8  H4  H2  H1                        D8  D4  D2  D1   F
  590.  
  591.     A   0   1   1   0                  1      0   1   1   0   0
  592.     B   1   1   1   0                  2      1   1   1   0   0
  593.     C   0   0   1   0                  3      0   0   1   0   0
  594.     D   1   0   1   0                  4      1   0   1   0   0
  595.     E   0   0   0   1                  5      0   0   0   1   0
  596.     F   1   0   0   1                  6      1   0   0   1   0
  597.     G   0   1   0   1                  7      0   1   0   1   0
  598.     H   1   1   0   1                  8      1   1   0   1   0
  599.     I   0   1   1   1                  9      0   1   1   1   0
  600.     J   1   1   1   1                 10      1   1   1   1   0
  601.     K   0   0   1   1                 11      0   0   1   1   0
  602.     L   1   0   1   1                 12      1   0   1   1   0
  603.     M   0   0   0   0                 13      0   0   0   0   0
  604.     N   1   0   0   0                 14      1   0   0   0   0
  605.     O   0   1   0   0                 15      0   1   0   0   0
  606.     P   1   1   0   0                 16      1   1   0   0   0
  607.                            All Units Off      0   0   0   0   1
  608.                             All Units On      0   0   0   1   1
  609.                                       On      0   0   1   0   1
  610.                                      Off      0   0   1   1   1
  611.                                      Dim      0   1   0   0   1
  612.                                   Bright      0   1   0   1   1
  613.                           All Lights Off      0   1   1   0   1
  614.                            Extended Code      0   1   1   1   1
  615.                             Hail Request      1   0   0   0   1   Note 1
  616.                         Hail Acknowledge      1   0   0   1   1
  617.                              Pre-Set Dim      1   0   1   X   1   Note 2
  618.                            Extended Data      1   1   0   0   1   Note 3
  619.                             Status is On      1   1   0   1   1
  620.                            Status is Off      1   1   1   0   1
  621.                           Status request      1   1   1   1   1   Note 4
  622.  
  623. Note 1:  Hail Request is transmitted to see if there are any other X10
  624.          compatible transmitters within listening range.
  625.  
  626. Note 2:  In a Pre-Set Dim function, the D1 bit represents the MSB of the
  627.          level and the 4 House code bits represent the 4 least significant
  628.          bits.  No known X10 device responds to the Pre-Set Dim function.
  629.  
  630. Note 3:  The Extended Data code is followed by eight-bit bytes which can
  631.          be any data you might want to send (like temperature).  There
  632.          must be no delay between the Extended Data code and the actual
  633.          data bytes, and no delay between data bytes.
  634.  
  635. Note 4:  The X10 RF to AC Gateway model RR501 is a two-way module.  If the
  636.          RR501 is addressed by transmitting its House Code and Unit Code and
  637.          then the STATUS REQUEST is transmitted, the RR501 will respond by
  638.          transmitting Status ON if it's turned on, or Status OFF if it's off.
  639.  
  640.  
  641. RECOMMENDED SPECIFICATIONS TO ENSURE RELIABLE COMMUNICATION TO ALL X10
  642. DEVICES:
  643.  
  644.   Carrier Oscillation Frequency         120KHz +/- 5%  (s/b 2%, but 5% OK)
  645.  
  646.   Zero Crossing Detection               100uS +/- 100uS
  647.  
  648.   Width of Transmitted Carrier          1mS +/- 50uS
  649.  
  650.   Transmitter output power              60 mW average (5V pk-pk into 5 ohms)
  651.  
  652.   Isolation Voltage                     2500V RMS. 60Hz for 1 min.
  653.  
  654.  
  655.  
  656. SECTION 4:  PROGRAMMING DETAILS FOR CP290 HOME CONTROL INTERFACE 
  657. ================================================================ 
  658.  
  659. Reference:  X10 CP290 Home Control Interface Programming Guide for
  660. Advanced Programmers
  661.  
  662. The CP290 Home Control Interface communicates with the host computer via a
  663. simplified RS-232 interface.  Serial communication takes place at 600 baud,
  664. eight data bits, no parity, and one stop bit.  The reference recommends a
  665. pause of one millisecond between transmitted bytes, although in many
  666. applications this seems not to be required. This probably depends on the
  667. efficiency of the serial communications software used to send data to the
  668. interface.
  669.  
  670. The serial connector on the CP290 is a five pin DIN connector.  As seen
  671. from the back of the interface, the pinouts are as follows: 
  672.  
  673.             5 - no connection  *       *  1 - no connection
  674.           4 - data to computer  *     *  2 - data from computer
  675.                                    *
  676.                              3 - signal ground
  677.  
  678.  
  679. There are eight possible commands that the computer can send to the CP290.
  680. Each command starts with 16 hex FF bytes (each 0xff, or eight ones) for
  681. synchronization purposes.  These are followed by the command code 0-7 and
  682. then a variable number of bytes as required by the syntax of each command.
  683. The inteface requires a checksum of data bytes that follow the command code
  684. (see details for each command for exceptions) as the last byte in a
  685. command.
  686.  
  687. The interface responds to each command with 6 hex FF bytes (each 0xFF, or
  688. eight ones) for synchronization purposes.  This is followed by a status
  689. byte, and depending on the command, other information.  The interface
  690. generates a checksum for all bytes following the status byte and sends it
  691. as the last byte in a reply to a command.
  692.  
  693.  
  694. COMMAND 0 - SET INTERFACE BASE HOUSE CODE
  695.  
  696. The CP290 maintains a value called the base house code, which defaults to
  697. house code A on power up.  This is equivalent to setting the house code on
  698. other X10 controllers; the eight buttons on the CP290 control units 1-8 on
  699. or off for the base house code.  Note that setting the base house code with
  700. this command will clear all data in the interface.
  701.  
  702. Command syntax (computer to interface): 
  703.  
  704.         bytes 0-15:      1111 1111 - synchronization
  705.                 16:      0000 0000 - command 0 
  706.                 17:      HHHH 0000 - base house code to set 
  707.  
  708.                where HHHH =  0000 - house code M
  709.                              0001             E
  710.                              0010             C
  711.                              0011             K
  712.                              0100             O
  713.                              0101             G
  714.                              0110             A
  715.                              0111             I
  716.                              1000             N
  717.                              1001             F
  718.                              1010             D
  719.                              1011             L
  720.                              1100             P
  721.                              1101             H
  722.                              1110             B
  723.                              1111             J
  724.  
  725. Return (interface to computer):
  726.  
  727.         bytes 0-5:      1111 1111- synchronization
  728.                 6:      0000 000X - interface status
  729.  
  730.                 where X = 0 - interface has lost all memory 
  731.                           1 - interface is OK 
  732.  
  733.  
  734. COMMAND 1 - SEND DIRECT COMMAND 
  735.  
  736. It is possible to send X10 commands from the computer onto the power line
  737. via the CP290. This is not particularly fast.
  738.  
  739. Command Syntax (computer to interface): 
  740.  
  741.         bytes 0-15:      1111 1111 - synchronization
  742.                 16:      0000 0001 - command 1 
  743.                 17:      LLLL FFFF - dimming level and function 
  744.                 18:      HHHH 0000 - house code for this command
  745.                 19:      UUUU UUUU - unit codes bitmapped 9-16
  746.                 20:      VVVV VVVV - unit codes bitmapped 1-8 
  747.                 21:      CCCC CCCC - checksum 
  748.  
  749.                 where   LLLL = 1111 - dimmest (not quite full off) 
  750.                                 ... - intermediate brightness values
  751.                                0000 - brightest (not quite full on) 
  752.  
  753.                         FFFF = 0000 - units off (*)
  754.                                0001 - lights on, not appliances (*)
  755.                                0010 - turn on
  756.                                0011 - turn off
  757.                                0100 - if light off, turn on full; in any
  758.                                         case, dim to full off.  Responds as
  759.                                         0011 (*)
  760.                                0101 - if light off, turn on full; else
  761.                                         brighten to full; then dim LLLL
  762.                                         (LLLL+1?) steps.  Responds as 0100.
  763.                                         (*)
  764.                                0110 - if light off, turn on full; else
  765.                                         brighten by LLLL+1 steps. Responds
  766.                                         as 0101. (*)
  767.                                0111 - no obvious effect.  Responds as 0110.
  768.                                1000 - no obvious effect.
  769.                                1001 - no obvious effect.
  770.                                1010 - no obvious effect.
  771.                                1011 - no obvious effect.
  772.                                1100 - no obvious effect.  Responds as 1011.
  773.                                1101 - no obvious effect.  Responds as 1100.
  774.                                1110 - no obvious effect.  Responds as 1101.
  775.                                1111 - no obvious effect.  Responds as 1110.
  776.  
  777.                                 where (*) indicates behavior undocumented
  778.                                         in the reference
  779.  
  780.                         HHHH - as for Command 0
  781.  
  782.                         UUUU UUUU - units bitmapped as
  783.                                 9 10 11 12 13 14 15 16 
  784.  
  785.                         VVVV VVVV - units bitmapped as
  786.                                 1 2 3 4 5 6 7 8 
  787.  
  788.                         CCCC CCCC - sum of bytes 17-20
  789.  
  790. Return (interface to computer): 
  791.  
  792.         bytes 0-5:      1111 1111 - synchronization
  793.                 6:      0000 000X - interface status
  794.          (pause while X10 command is sent onto power line)
  795.              7-12:      1111 1111 - synchronization
  796.                13:      0000 000X - interface status
  797.                14:      HHHH FFFF - house code and function
  798.                15:      UUUU UUUU - unit codes bitmapped 9-16
  799.                16:      VVVV VVVV - unit codes bitmapped 1-8
  800.                17:      HHHH 0000 - base house code
  801.                18:      CCCC CCCC - sum of bytes 14-17
  802.  
  803.                where all values are as explained above; response function
  804.                         codes are same as command function codes except as
  805.                         noted
  806.  
  807.  
  808. COMMAND 2:  SET INTERFACE CLOCK
  809.  
  810. This command sets the internal clock in the CP290.
  811.  
  812. Command syntax (computer to interface): 
  813.  
  814.         bytes 0-15:      1111 1111 - syncrhonization
  815.                 16:      0000 0010 - command 2 
  816.                 17:      00mm mmmm - minutes 0-59 
  817.                 18:      000h hhhh - hours 0-23
  818.                 19:      0ddd dddd - bitmapped day of week Sun - Mon 
  819.                 20:      CCCC CCCC - sum of bytes 17-19 
  820.  
  821.                 where ddd dddd is day of week bitmapped as
  822.                                 Sun Sat Fri Thu Wed Tue Mon
  823.  
  824. Return (interface to computer):
  825.  
  826.         bytes 0-5:      1111 1111 - synchronization
  827.                 6:      0000 000X - interface status
  828.  
  829.  
  830. COMMAND 3a:   SEND TIMER EVENT TO INTERFACE 
  831.  
  832. This command sends a timer event to the interface.  The computer can then
  833. be disconnected and the event will be sent over the power line as X10
  834. commands at the appropriate time.  Events are stored eight bytes per event
  835. in locations 0-1023 in the 2K RAM inside the interface.
  836.  
  837. Command syntax (computer to interface): 
  838.  
  839.         bytes 0-15:      1111 1111 - synchronization
  840.                 16:      0000 0011 - command 3 
  841.                 17:      AAAA AAAA - LSB of event address 
  842.                 18:      0000 00AA - MSB of event address
  843.                 19:      NNNN MMMM - mode 
  844.                 20:      0ddd dddd - bitmapped days Sun - Mon
  845.                 21:      000h hhhh - hour 0-23
  846.                 22:      00mm mmmm - minute 0-59
  847.                 23:      VVVV VVVV - bitmapped unit codes 1-8
  848.                 24:      UUUU UUUU - bitmapped unit codes 9-16 
  849.                 25:      HHHH 0000 - house code for this event
  850.                 26:      LLLL FFFF - level and function 
  851.                 27:      CCCC CCCC - sum of bytes 19-26
  852.  
  853.                 where    0000 00AA AAAA AAAA (bytes 18 and 17) =
  854.  
  855.                          0000 0000 0000 0000 for event 0 
  856.                          0000 0000 0000 0100 for event 1
  857.                          0000 0000 0000 1000 for event 2
  858.                          .... (increases by 8 for each event)
  859.                          0011 1111 1111 1100 for event 127
  860.  
  861.  
  862.                          MMMM = 0000 - clear
  863.                                 0001 - ?
  864.                                 0010 - tomorrow only then clear
  865.                                 0011 - ?
  866.                                 0100 - today only then clear
  867.                                 0101 - ?
  868.                                 0110 - ?
  869.                                 0111 - ?
  870.                                 1000 - at exact time
  871.                                 1001 - at approximate time
  872.                                 1010 - ?
  873.                                 1011 - ?
  874.                                 1100 - ?
  875.                                 1101 - ?
  876.                                 1110 - ?
  877.                                 1111 - ?
  878.  
  879.                          NNNN = MMMM                  - program event
  880.                          NNNN = MMMM = 0000           - clear event
  881.                          NNNN not = 0000; MMMM = 0000 - store event but
  882.                                    put it on hold (will not take place)
  883.  
  884.         Actually, setting for NNNN and MMMM is a bit vague.  The reference
  885.         indicates that NNNN = 0 and MMMM is function code as shown above.
  886.         The software provided with the CP290 uses NNNN = MMMM except when
  887.         "freezing" an event (deactiving it, but not erasing it).  Frozen
  888.         events also have UUUU UUUU = VVVV VVVV = 0.  It's not clear how a
  889.         frozen event knows what units it is to control.  Not clearing the
  890.         unit mask confuses the standard CP290 software...
  891.  
  892. Return (interface to computer): 
  893.  
  894.         bytes 0-5:      1111 1111 - synchronization
  895.                 6:      0000 000X - interface status
  896.  
  897.  
  898. COMMAND 3b:  SEND "GRAPHICS DATA" TO INTERFACE 
  899.  
  900. In the 2K RAM of the interface, locations 1024 through 1535 are accessible
  901. from the external computer, but are not used for events or any other
  902. purpose by the interface.  In the CP290 these are referred to as the
  903. locations for graphics data.  For each of 256 possible units, the memory
  904. locations could be used to indicate (under control of an external program)
  905. the on/off condition of a unit, or the type of unit it is (possibly an
  906. index to a graphics icon).  This command writes data from the computer two
  907. bytes at a time to these memory locations in the interface. 
  908.  
  909. Command syntax (computer to interface): 
  910.  
  911.         bytes 0-15:     1111 1111 - sychronization
  912.                 16:     0000 0011 - command 3 
  913.                 17:     AAAA AAA0 - LSB of data address
  914.                 18:     0000 0AAA - MSB of data address
  915.                 19:     GGGG GGGG - data byte 0
  916.                 20:     GGGG GGGG - data byte 1
  917.                 21:     CCCC CCCC - sum of bytes 19 and 20
  918.  
  919.                 where   0000 0AAA AAAA AAAA(bytes 18 and 17) =
  920.  
  921.                         0000 0100 0000 0000 for data pair 0
  922.                         0000 0100 0000 0010 for data pair 1
  923.                         ... (increases by 2 for each subsequent data pair)
  924.  
  925.                         GGGG GGGG - can be anything relevant to the
  926.                                         external program, since this data
  927.                                         is not used by the interface 
  928.  
  929. Return (interface to computer): 
  930.  
  931.         bytes 0-5:      1111 1111 - sychronization
  932.                 6:      0000 000X - interface status
  933.  
  934.  
  935. COMMAND 4:  GET CLOCK TIME AND BASE HOUSE CODE FROM INTERFACE 
  936.  
  937. This command reads the time from the internal interface clock and also gets
  938. the current base house code.  It is an innocuous way of testing for the
  939. presence of the interface, and to see if it has lost its memory since the
  940. last time events were downloaded to it.  If there is no reply to this
  941. command after several seconds, the computer could assume that the interface
  942. was not (properly) connected. 
  943.  
  944. Command syntax (computer to interface): 
  945.  
  946.         bytes 0-15:     1111 1111 - synchronization
  947.                 16:     0000 0100 - command 4 
  948.  
  949. Return (interface to computer): 
  950.  
  951.         bytes 0-5:      1111 1111
  952.                 6:      0000 000X - interface status
  953.                 7:      00mm mmmm - minute (0-59) 
  954.                 8:      000h hhhh - hour (0-23) 
  955.                 9:      0ddd dddd - bitmapped days Sun - Mon 
  956.                10:      HHHH 0000 - base house code
  957.                11:      CCCC CCCC - sum of bytes 7-10
  958.  
  959.  
  960. COMMAND 5:  GET TIMER EVENTS FROM INTERFACE
  961.  
  962. This command requests the interface to send to the computer the events that
  963. it has stored in its memory. 
  964.  
  965. Command syntax (computer to interface): 
  966.  
  967.         bytes 0-15:     1111 1111 - synchronization
  968.                 16:     0000 0101 - command 5
  969.  
  970. Return (nterface to computer): 
  971.  
  972.         bytes 0-5:      1111 1111 
  973.                 6:      0000 000X - interface status
  974.                 for( event = 0 ; event < 128 ; event = event+1 ) 
  975.                 {
  976.                    if( event is not erased )
  977.                    {
  978.                          7:     NNNN MMMM - mode 
  979.                          8:     0ddd dddd - bitmapped days Sun - Mon 
  980.                          9:     000h hhhh - hour 0-23
  981.                         10:     00mm mmmm - minute 0-59
  982.                         11:     VVVV VVVV - bitmapped unit codes 1-8
  983.                         12:     UUUU UUUU - bitmapped unit codes 9-16 
  984.                         13:     HHHH 0000 - house code for this event
  985.                         14:     LLLL FFFF - level and function 
  986.                     }
  987.                     else
  988.                          7:     1111 1111 - indicates event in that
  989.                                                 location is erased
  990.                 }
  991.         last byte:   CCCC CCCC - sum of all bytes for valid events
  992.                                         starting with byte 7; does not
  993.                                         include the 1111 1111 for locations
  994.                                         where event has been erased
  995.  
  996.  
  997. COMMAND 6:  GET "GRAPHICS DATA" FROM INTERFACE 
  998.  
  999. This command requests the interface to send the "graphics data" that it has
  1000. stored in its memory.  See COMMAND 3b above.  Graphics data is not used in
  1001. any way by the interface.
  1002.  
  1003. Command syntax (computer to interface): 
  1004.  
  1005.         bytes 0-15:     1111 1111 - synchronization
  1006.                 16:     0000 0110 - command 6
  1007.  
  1008. Return (interface to computer): 
  1009.  
  1010.         bytes 0-5:      1111 1111 
  1011.                 6:      0000 000X- status
  1012.                 for( unit = 0 ; unit < 256 ; unit = unit+1 ) 
  1013.                 {
  1014.                    if( graphics data for unit has been stored )
  1015.                    {
  1016.                         7:      GGGG GGGG
  1017.                         8:      GGGG GGGG
  1018.                    } 
  1019.                    else
  1020.                         7:      1111 1111
  1021.                 }
  1022.         last byte:      CCCC CCCC - sum of all data pairs for all units
  1023.                                         starting with byte 7; excludes the
  1024.                                         single 1111 1111s in cases where
  1025.                                         data for that unit has not been
  1026.                                         stored
  1027.  
  1028. COMMAND 7:  DIAGNOSTIC 
  1029.  
  1030. This command tells the interface to run a self-check on its hardware and
  1031. firmware.  Pin 4 on the interface goes low for 10 seconds; this may
  1032. generate extraneous characters that are detected by the attached computer.
  1033. At the end of this time, the interface sends its status if it can.  Note
  1034. that this command will scramble or clear any data stored in the interface. 
  1035.  
  1036. Command syntax (computer to interface):
  1037.  
  1038.         bytes 0-15:     1111 1111 
  1039.                 16:     0000 0111 - command 7 
  1040.  
  1041. Return (interface to computer): 
  1042.  
  1043.         bytes ?:        extraneous characters for 10 seconds 
  1044.             0-5:        1111 1111 - synchronization
  1045.               6:        0000 000T - test status 
  1046.  
  1047.              where 0000 000T = 0 - interface is OK
  1048.                                1 - interface has a fault
  1049.  
  1050.  
  1051. KEYBOARD COMMANDS
  1052.  
  1053. If X10 commands are sent using the keys on the top of the CP290, the
  1054. interface will send a report to the computer so it can keep track of the
  1055. status of units. 
  1056.  
  1057. Report (interface to computer):
  1058.  
  1059.               0-5:      1111 1111 - synchronization
  1060.                 6:      0000 000X - interface status
  1061.                 7:      HHHH FFFF - house code and function
  1062.                 8:      UUUU UUUU - unit codes bitmapped 9-16
  1063.                 9:      VVVV VVVV - unit codes bitmapped 1-8
  1064.                10:      HHHH 0000 - base house code
  1065.                11:      CCCC CCCC - sum of bytes 14-17 
  1066.  
  1067.                 where FFFF is the function return code described for
  1068.                         Command 1 (SEND COMMAND DIRECT)
  1069.  
  1070.  
  1071. TIMED EVENTS
  1072.  
  1073. When the CP-290 sends X10 commands in accordance with an event programmed
  1074. into it, it will send a report to the comptuer so the computer can keep
  1075. track of the status of units.  This report is in the same format as the
  1076. report for keyboard commands described above.
  1077.  
  1078.  
  1079.  
  1080.  
  1081. SECTION 5:  MODIFICATIONS TO X10 HARDWARE
  1082. =========================================
  1083.  
  1084. WARNING:  Modifying X10 hardware as described in this section will void the 
  1085. warranty of the hardware.  Any modifications you do are at your own risk 
  1086. and the results are entirely your own responsibility.  You may end up 
  1087. damaging the hardware beyond use.  Remember, X10 devices are connected 
  1088. directly to the power line, and can kill you.  If you feel uncomfortable 
  1089. about any of this, don't do it. The modifications in this section have been 
  1090. tried by one or more people.  They may not work for you, due to variation 
  1091. in technical skill, or variation in X10 equipment lots.  Again, you are on 
  1092. your own; use at your own risk! 
  1093.  
  1094.  
  1095. Q501.  How do I modify appliance modules for momentary operation?
  1096.  
  1097. A501.  Normally appliance modules turn on and stay on in response to an ON 
  1098. command, and off in response to an OFF command. In response to an ON 
  1099. command appliance modules modified as described in this section will pulse 
  1100. on then off twice, returning to the off position. 
  1101.  
  1102. Procedure:
  1103.  
  1104.         1.  Make sure module is off, unplug it and then take cover off. 
  1105.  
  1106.         2.  Locate 330K resistor below the IC chip.  Remove it. 
  1107.  
  1108.         3.  Reassemble and test the module. 
  1109.  
  1110.  
  1111. The module clicks twice because each X10 command is issued twice.  Thus the 
  1112. two commands causes two on/off cycles.  If you would like the module to be 
  1113. normally on, make sure that the module was left on before you start the 
  1114. mod. 
  1115.  
  1116.  
  1117. Q502.  How do I add local dimming capability to wall switch modules? 
  1118.  
  1119. A502.  There are X10 wall switches with local dimming capability, but these 
  1120. are not as widely available and reasonably priced as the X-10 WS467.  This 
  1121. switch has a local on/off toggle and a slide button to lock it off.  The 
  1122. light it controls can be dimmed only from a remote X10 transmitter. 
  1123.  
  1124. The difference in circuitry between the switches with and without local 
  1125. dimming capability is minor.  Those with local dimming capability have a 
  1126. jumper wire where those without local dimming have a resistor and 
  1127. capacitor.  To convert a switch without local dimming to one with local 
  1128. dimming, you will need to remove the resistor and capacitor and replace 
  1129. them with a wire.  You will need  a jeweler's flat-blade screwdriver, a 
  1130. soldering iron, and a desoldering bulb or solder-up wick.  You may find 
  1131. needle nose pliers to be helpful as well. 
  1132.  
  1133. Procedure: 
  1134.  
  1135.         1.  Make sure the switch is functioning properly before starting. 
  1136.  
  1137.         2.  Take the module apart all the way.  Using the screwdriver, 
  1138. press down on the tabs at the four corners of the back cover, and pop the 
  1139. cover off. Be careful not to break the tabs. Remove the circuit board from 
  1140. the case by prying the side of the case away from the side of the board 
  1141. with the screwdriver far enough so that the PCB can clear the tabs which 
  1142. hold it in place. As the PCB comes out, be careful not to lose the small 
  1143. metal tab or the tiny spring-loaded rod which form part of the cutoff 
  1144. switch. Also remove the plastic piece which holds the cutoff switch 
  1145. assembly in place; removing the switch assembly now will make it easier to 
  1146. reassemble the switch properly later. The following is a crude ASCII 
  1147. diagram of the component side of the WS467 PC board, showing relative 
  1148. locations of various components. 
  1149.  
  1150.  
  1151.  
  1152.  |---------------------------------|
  1153.  |                                 |          TRIAC
  1154.  |                                 |            /
  1155.  |                                 |          /
  1156.  |                                 |        /   Notes: The WS467 has a small
  1157.  |                                 |      /     1/4 watt resistor soldered
  1158.  |                                 |    /       between holes 1 and 2, as
  1159.  | |---------------|               |  /         well as an electrolytic
  1160.  | |     I C       |           |-| |/           capacitor soldered between
  1161.  | |---------------|  o 1      | |/|            holes 3 and 4. Remove these
  1162.  |                2 o          |-| |            components and solder a
  1163.  |                    o            |            jumper wire between holes
  1164.  |                   3   o         |            1 and 3 to restore local
  1165.  |                      4          |            dimming.
  1166.  |                                 |
  1167.  |                                 |
  1168.  |                                 |
  1169.  |                                 |
  1170.  |   (Other circuitry omitted      |
  1171.  |     for clarity.)               |
  1172.  |                                 |
  1173.  |---------------------------------|
  1174.  
  1175.           WS467 PC Board
  1176.           Conponent Side
  1177.  
  1178.         3.  Once the switch has been disassembled and the PCB removed from 
  1179. the case, examine the component side of the board closely while referring 
  1180. to figure 1. Locate the small electrolytic capacitor and 1/4 watt resistor 
  1181. located just below and to the right of the IC on the board. Note that there 
  1182. is probably a larger 1/2 watt resistor in close proximity to the correct 
  1183. one - make sure you pick the right resistor. Now flip the board over and 
  1184. locate the 4 pads to which these two components are soldered. After warming 
  1185. up your soldering iron, use the solder wick or desoldering bulb to remove 
  1186. the solder from those pads, and remove the components from the board. NOTE: 
  1187. you could also simply cut the components off the board, leaving the lead 
  1188. stubs soldered in place, but desoldering the components will result in a 
  1189. much neater job. 
  1190.  
  1191.         4.  Again referring to the diagram in figure 1, install a small 
  1192. jumper wire between holes 1 and 3. Solder the wire to the pads on the foil 
  1193. side of the PCB. 
  1194.  
  1195.         5.  Reassemble the case, pop the circuit board back in, and pop the 
  1196. back cover on. Turn the switch over and look closely into the hole where 
  1197. the cutoff switch assembly fits. There you will see a pair of small metal 
  1198. protrusions as well as a shorter metal contact area. Replace the small 
  1199. metal tab into its position between the two taller metal protrusions, 
  1200. positioned so that the other end of the metal tab can contact the shorter 
  1201. metal contact area. Pop the cutoff switch assembly back into place, making 
  1202. sure that neither the tiny spring-loaded rod nor the metal tab fall out 
  1203. while you do so. 
  1204.  
  1205.         6.  Install the switch in the wall, and test normal operations 
  1206. (local on/off control, remote on/off/dim control, and the function of the 
  1207. cutoff switch). 
  1208.  
  1209.         7.  Finally, test the local dimming function: Press and hold the 
  1210. button on the switch. The light will come on, and then slowly cycle through 
  1211. a bright-to-dim-to-bright sequence. Release the button when the desired 
  1212. level of lighting is achieved. A quick tap on the button will turn the 
  1213. light on and off. 
  1214.  
  1215.  
  1216. Q503.  How do I modify the maxi-controller to accomodate more than 16 units?
  1217.  
  1218. A503.  The maxi-controller controls 16 units on a single house code. For 
  1219. those of applications with more than 16 units (and the thoughts of grouping 
  1220. units together or glueing a dime to the house code select slot aren't that 
  1221. appealing), a maxi controller can be made to control an alternate house 
  1222. code with the addition of a momentary contact pushbutton. 
  1223.  
  1224. The following procedure modifies the maxi-controller to use house code I 
  1225. normally and control house code K with the push of a button. 
  1226.  
  1227. Procedure: 
  1228.  
  1229.         1.  Open the maxi-controller.  There is no need to remove the 
  1230. circuit board. 
  1231.  
  1232.         2.  Install a miniature normally open momentary contact push button 
  1233. switch (e.g. RS 275-1571A) in a hole *carefully* drilled in the back of the 
  1234. top piece of the case so the switch will stick out the back when all is 
  1235. done).  Avoid the components and the mounting post.  Position it roughly 
  1236. behind the red LED on the Powerhouse brand of the maxi. Another way to 
  1237. describe its location: If you have the standard label 1-16 in position, the 
  1238. button goes behind approximately 12 (maybe a bit towards 11). 
  1239.  
  1240.         3.  Using a short jumper wire, solder one post of the switch to pin 
  1241. 7 of the IC (GI 8417) and the other lead to pin 10. Use as little heat on 
  1242. the IC pins as possible to get a good solder without destroying it. 
  1243.  
  1244.         4.  Reassemble making sure nothing is shorting (jumper leads, 
  1245. etc.). 
  1246.  
  1247.         5.  Set house code rotary to position I and test units on house 
  1248. code I. To operate house code K, push in pushbutton and hold it while 
  1249. selecting the unit(s) and the operation (on,off,dim,bright,all lights on, 
  1250. or all units off). 
  1251.  
  1252. Note that the pins 7 to 10 mod will also allow you to control house codes 
  1253. J/L, H/F, G/E, B/D, A/C, P/N, or O/M by changing the rotary switch. 
  1254.  
  1255. Untried variations:  Using the chart below, you could connect via 
  1256. pushbutton pins 7 and either 8, 9, 10, or 11 alternatively or more than one 
  1257. if necessary to produce a desired combination. If you absolutely had to 
  1258. produce a house code alternative where you need to turn a 1 into 0 instead, 
  1259. you could use a normally closed pushbutton and cut a trace. 
  1260.  
  1261. Maxi controller with GI 8417 IC (can jumper a "1" from pin 7)
  1262.  
  1263. PIN     8   9   10  11
  1264. ---    --  --   --  --
  1265.  
  1266. J       0   0   0   0
  1267. I       0   0   0   1
  1268. L       0   0   1   0
  1269. K       0   0   1   1
  1270. H       0   1   0   0
  1271. G       0   1   0   1
  1272. F       0   1   1   0
  1273. E       0   1   1   1
  1274. B       1   0   0   0
  1275. A       1   0   0   1
  1276. D       1   0   1   0
  1277. C       1   0   1   1
  1278. P       1   1   0   0
  1279. O       1   1   0   1
  1280. N       1   1   1   0
  1281. M       1   1   1   1
  1282.  
  1283.  
  1284. Q504.  How do I modify the mini-controller to control more units?
  1285.  
  1286. A504.  This answer should be read in conjunction with the instructions for 
  1287. modifying the maxi-controller in Q503. 
  1288.  
  1289. Unfortunately, the truth table for the mini-controller appears to be all 
  1290. different for that for the maxi-controller, and there isn't a real good 
  1291. place to mount the pushbutton.  Besides, if you really need to control a 
  1292. bunch of units, you wouldn't have the mini-controller in the first place. 
  1293.  
  1294. However, the following seems to apply:
  1295.  
  1296. Mini controller with 8925 IC (can jumper a "1" from pin 3)
  1297.  
  1298. PIN     5   6    7   8
  1299. ---    --  --   --  --
  1300.  
  1301. M       0   0   0   0
  1302. O       0   0   0   1
  1303. E       0   0   1   0
  1304. G       0   0   1   1
  1305. C       0   1   0   0
  1306. A       0   1   0   1
  1307. K       0   1   1   0
  1308. I       0   1   1   1
  1309. N       1   0   0   0
  1310. P       1   0   0   1
  1311. F       1   0   1   0
  1312. H       1   0   1   1
  1313. D       1   1   0   0
  1314. B       1   1   0   1
  1315. L       1   1   1   0
  1316. J       1   1   1   1
  1317.  
  1318.  
  1319. Q505.  How do I modify the mini-controller to control all units for a 
  1320. single housecode (i.e. all "bands")? 
  1321.  
  1322. A505.  The X10 mini controller is capable of addressing four of the sixteen 
  1323. X10 unit codes.  A slide switch on the controller allows the user to select 
  1324. the "band" of units 1-4 or 5-8.  A simple modification allows the selection 
  1325. of two additional bands, 9-12 and 13-16.  This covers the entire spectrum 
  1326. of X10 units accessible from a single house-code. 
  1327.  
  1328. This modification applies to the "Radio Shack" branded mini controller, 
  1329. number 61-2677B.  By visual inspection of the circuit board and internal 
  1330. components, it appears that this modification also applies to "Stanley" 
  1331. branded mini controller number 360-3090.  It appears that both of these 
  1332. units were manufactured for X10 for sale under the distributers' own brand 
  1333. name, and are essentially identical inside. 
  1334.  
  1335. There was an earlier model of the mini controller that was available from
  1336. Radio Shack, and possibly other sources.  Legend has it that the old unit was
  1337. even easier to modify for access to all four bands.  In fact, one legend says
  1338. that the unit was equipped with a four-band switch, two positions of which
  1339. were simply blocked off by the plastic bezel sticker applied over the plastic
  1340. cabinet.  I don't know what the truth is, not having one of the old mini
  1341. controllers to study.  What I do know is that this modification was not
  1342. developed for the old controller.
  1343.  
  1344. The old mini controller had four switches for the unit codes, plus individual
  1345. switches for ON, OFF, DIM, BRIGHT, ALL LIGHTS ON, and ALL UNITS OFF.  To turn
  1346. on unit three, one would depress two switches:  3 and ON.
  1347.  
  1348. The new mini controller does not have ON and OFF switches apart from the unit
  1349. codes. Instead it has an ON and OFF switch for each of the four unit codes.
  1350. (In the case of the Radio Shack unit, there are four rocker switches, up for ON
  1351. and down for OFF.  The Stanley unit has individual switches for 1 ON, 1 OFF,
  1352. 2 ON, 2 OFF, etc.)  Pressing one of these switches sends both the unit code and
  1353. the ON or OFF command.  The user can then follow up by using the DIM or BRIGHT
  1354. switches, or the ALL LIGHTS ON or ALL UNITS OFF switches.
  1355.  
  1356. Procedure: 
  1357.  
  1358.         1.  Unplug the unit and open the case by removing the four 
  1359. phillips-head screws. Put both halves of the case in a safe place.  When 
  1360. handling the printed circuit board, orbserve the usual precautions for 
  1361. static-sensitive devices. 
  1362.  
  1363.         2.  Locate the place where the existing "band" switch is located.  
  1364. This is nothing more than a plastic handle on a metal slider that runs in a 
  1365. trough molded into the top part of the case.  The slider makes contact with 
  1366. three large pads on the printed circuit board. 
  1367.  
  1368.         3.The hardest part of the modification is finding a new switch to 
  1369. use for the four-position band selector!  It is possible to use a two-pole 
  1370. four-throw rotary switch.  I'll let you figure out how to do the encoding 
  1371. if you decide on that.  I found a suitable switch in my junk-box and 
  1372. mounted it in a position that replaces the old band switch.  This entailed 
  1373. some amount of cutting and gluing on the plastic case.  I will assume that 
  1374. you are doing the same.  Find a small slide switch that has four positions.  
  1375. It should have two rows of five contacts.  As the switch is moved, it 
  1376. should short two adjacent contacts at a time.  Looking into the pins in the 
  1377. back of the switch, one should see the following connection pattern for 
  1378. each switch position: 
  1379.  
  1380.      position 1         position 2         position 3         position 4 
  1381.    +-------------+    +-------------+    +-------------+    +-------------+
  1382.    |1--2  3  4  5|    |1  2--3  4  5|    |1  2  3--4  5|    |1  2  3  4--5|
  1383.    |             |    |             |    |             |    |             |
  1384.    |A--B  C  D  E|    |A  B--C  D  E|    |A  B  C--D  E|    |A  B  C  D--E|
  1385.    +-------------+    +-------------+    +-------------+    +-------------+
  1386.  
  1387. Physically, the switch should fit in pleasingly with the rest of the panel. 
  1388. This usually means that it should be rather small.  This is a good time to
  1389. decide exactly where to put it.  The most logical place is directly in place
  1390. of the existing band switch.  This may require hacking away part of the
  1391. printed circuit board.
  1392.  
  1393.         5.  Orient the printed circuit board in front of you, such that the 
  1394. foil side is down, and the power cord attaches to the board on your left.  
  1395. The big chip should be slightly right of center, and most of the components 
  1396. will be near your belly.  Make sure that the chip has 24 pins, and is 
  1397. marked 78567.  To your right of the chip is a small metal-can transformer.  
  1398. Further right and up, should be an electrolytic capacitor, around 1000 mFd 
  1399. at 25 V.  The capacitor's negative lead is well marked.  Locate the 
  1400. positive lead. 
  1401.  
  1402.         6.  If the new switch does not physically replace the old one, 
  1403. disable the old switch by removing the slider from it. 
  1404.  
  1405.         7.  Looking into the back of the switch, wire pin A to 4 to IC pin 
  1406. 11.  Wire switch pin B to 3 to D to the + lead of the capacitor.  Wire 
  1407. switch pin C to IC pin 12.  The result should look something like this: 
  1408.  
  1409.       .------------. 
  1410.       |            |
  1411.       |  +---------|---+
  1412.       |  |1  2 _3_ 4  5|
  1413.       |  |    /   \    |
  1414.       |---A  B  C  D  E|
  1415.       |  +------|--|---+
  1416.       |         |  |
  1417.       |         |  `-----> to capacitor +
  1418.       |         `--------> to IC, pin 12
  1419.       `------------------> to IC, pin 11
  1420.  
  1421.  
  1422. The intent of this circuit is to impress one of four binary codes on the 
  1423. IC's pins 11 and 12.  This tells the controller chip which band of X10 
  1424. units to address.  The logic levels to be presented to the chip are 
  1425. provided by dead air and the + lead of the electrolytic capacitor.  The 
  1426. truth table is: 
  1427.  
  1428.    unit     switch     switch    |  pin 11   pin 12 
  1429.    band     position   shorting  |  sees     sees
  1430.    -----    --------   -------- -+- ------   -----
  1431.     1-4        1       1&2, A&B  |  cap      air
  1432.     5-8        2       2&3, B&C  |  air      cap
  1433.     9-12       3       3&4, C&D  |  cap      cap
  1434.    13-15       4       4&5, D&E  |  air      air
  1435.  
  1436.  
  1437.         7a.  Rotary switch option.  This version is untested, but should 
  1438. work.  It is for rotary switch lovers out there.  Get a 2-pole 4-throw 
  1439. rotary switch and wire it as follows: 
  1440.  
  1441.         .------------------------------> to capacitor + 
  1442.         |     |              |  |    
  1443.         1_ 2  3  4        1_ 2  3  4
  1444.         |\                |\
  1445.           \- - - - - - - - -\
  1446.            \                 \
  1447.             O                 O
  1448.             |                 |
  1449.             |                 `--------> to IC, pin 12
  1450.             `--------------------------> to IC, pin 11
  1451.  
  1452. You probably want to avoid binary or BCD-encoded thumbwheel switches because
  1453. the base station coding scheme is offset slightly from normal binary coding
  1454. (and the switch output).  You would have to relabel the switch positions, not
  1455. to mention blocking off the unused positions.
  1456.  
  1457.         8.  Put the box back together.  Screw it shut again before applying 
  1458. power.  Try it out. 
  1459.  
  1460. (dennisg@filenet.com) 
  1461.  
  1462.  
  1463. Q506.  How do I modify the mini-controller to control only units 9-12 or 
  1464. 13-16? 
  1465.  
  1466. A506.  Read in conjunction with Q505.
  1467.  
  1468. Proecedure: 
  1469.  
  1470.         1.  Open mini-controller and pull back the circuit board. Be 
  1471. careful not to let all the switch tops fall out. 
  1472.  
  1473.         2.  Locate the three pads underneath the slide switch. Notice that 
  1474. the unmodified mini selects 1-4 or 5-8 depending on whether the center 
  1475. position makes connection with one side or the other. 
  1476.  
  1477.         3.  To modify the mini to control only units 9-12, solder a jumper 
  1478. such that all three pads connect together. 
  1479.  
  1480.         4.  To modify the mini to control units 13-16, simply remove the 
  1481. slide switch. 
  1482.  
  1483. Untried variation #1: If you solder the jumper as to not interfere with the
  1484. slide switch, then you could jumper just one side and then use the slide to
  1485. select 1-4 or 9-12 or .. jumpering the other side, 5-8 or 9-12.
  1486.  
  1487. Untried variation #2: If you mangle the slide switch so that it only has
  1488. the contacts on one side or the other, you could use the slide switch to
  1489. select 1-4 or 13-16, or .. removing the other side 5-8 or 13-16. A possible
  1490. problem here is that the half-mangled slide switch may not "sit right".
  1491.  
  1492.  
  1493. Q507.  How do I modify the mini-controller for momentary operation? 
  1494.  
  1495. A507.  When a Mini-Controller is modified as below, your key presses are 
  1496. undone as soon as you release the key.  Thus pressing 'on' and then 
  1497. releasing, sends an 'ON' and then a 'OFF' command.  This is also true for 
  1498. 'All Unit' commands.  This mod only works on model 'MC460' Mini-
  1499. Controllers, and not the 'MC260' (If anyone knows how to identify the two, 
  1500. please post). 
  1501.  
  1502. Procedure: 
  1503.  
  1504.         Inside the mini controller, connect pin 3 and 14 of the black IC 
  1505. marked 78567.  You may want to make the connection with a little switch to 
  1506. return the controller to normal mode. 
  1507.  
  1508. (Edward Cheung <netcomsv.netcom.com!asylum.gsfc.nasa.gov!cheung>) 
  1509.  
  1510.  
  1511. Q508.  How do I repair a "blown" X10 lamp module? 
  1512.  
  1513. A508.  X10 lamp modules have a bad habit of dying premature deaths.  Most 
  1514. of the time, the problem can be traced back to a bad triac.  Why the triac 
  1515. is the weak link has been debated hotly, but that is not the purpose of 
  1516. this article.  It is possible to "resurrect" the module by simply replacing 
  1517. the triac.  Caution must be stressed here; there are a lot of triacs 
  1518. available, but whichever one you use must have an isolated tab.  The most
  1519. universally available replacement is from Radio Shack, part number
  1520. 276-1000.  In addition to having an isolated tab, it also has a higher
  1521. rating than the original one, so will be less likely to fail.
  1522.  
  1523.  
  1524. Q509.  How do I defeat local control of lights and appliances? 
  1525.  
  1526. A509.  A standard appliance or lamp module will turn itself on if the power 
  1527. switch on the device it is connected to is switched on.  This provides 
  1528. local control.  This is not always desirable, however.  Local control 
  1529. depends on the current draw through the module; if it exceeds a certain 
  1530. value, the device turns on.  Some devices (compact fluorescent lamps, for 
  1531. example) seem to have low impedance and keep switching themselves on even 
  1532. when explicitly turned off.  This local control can be disabled for 
  1533. appliance modules.  
  1534.  
  1535. Procedure:  
  1536.  
  1537.         Inside each module, there is an integrated circuit labeled 
  1538. "PICO-570".  Cut the lead that goes from pin 7 of this integrated 
  1539. circuit to the hot AC connection. 
  1540.  
  1541. =====================
  1542.  
  1543. X10 FAQ ENDS
  1544.  
  1545. ============================================================================
  1546.  .-----  .-.    .-.               Timothy C. Green                  |\^/| 
  1547. (  /       :   /  '                CD, PEng, MEng                _|\|   |/|_
  1548.   /    /      / -+                 (403) 459-3609                >         <
  1549.  /    (__./  (__.:                t.green@ieee.org                >_./|\._<
  1550. ============================================================================
  1551.  
  1552.