{"id":25939203,"url":"https://github.com/codingabi/cambridgesoundworksdigitalirremote","last_synced_at":"2026-05-19T19:03:07.535Z","repository":{"id":277824405,"uuid":"929003934","full_name":"codingABI/CambridgeSoundWorksDigitalIRRemote","owner":"codingABI","description":"Digispark/ATtiny85 DIY based remote control for a vintage Cambridge SoundWorks Digital CSW250 speaker system","archived":false,"fork":false,"pushed_at":"2025-02-25T22:30:38.000Z","size":1149,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-02-25T23:29:44.605Z","etag":null,"topics":["arduino","attiny85","csw250","digispark","infrared","optocoupler","x9c103"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codingABI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-07T16:24:47.000Z","updated_at":"2025-02-25T22:30:41.000Z","dependencies_parsed_at":"2025-02-16T12:29:28.103Z","dependency_job_id":null,"html_url":"https://github.com/codingABI/CambridgeSoundWorksDigitalIRRemote","commit_stats":null,"previous_names":["codingabi/cambridgesoundworksdigitalirremote"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/codingABI/CambridgeSoundWorksDigitalIRRemote","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingABI%2FCambridgeSoundWorksDigitalIRRemote","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingABI%2FCambridgeSoundWorksDigitalIRRemote/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingABI%2FCambridgeSoundWorksDigitalIRRemote/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingABI%2FCambridgeSoundWorksDigitalIRRemote/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codingABI","download_url":"https://codeload.github.com/codingABI/CambridgeSoundWorksDigitalIRRemote/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingABI%2FCambridgeSoundWorksDigitalIRRemote/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266786798,"owners_count":23983871,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-24T02:00:09.469Z","response_time":99,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","attiny85","csw250","digispark","infrared","optocoupler","x9c103"],"created_at":"2025-03-04T04:15:59.070Z","updated_at":"2026-05-19T19:03:07.451Z","avatar_url":"https://github.com/codingABI.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CambridgeSoundWorksDigitalIRRemote\n\nA Digispark/ATtiny85 DIY based IR (infra-red) remote control for a vintage Cambridge SoundWorks Digital CSW250 2.1 speaker system from 1999. This speaker system is connected to my TV and is responsible for the TV-audio.\n\n![Perfboard of the CambridgeSoundWorksDigitalIRRemote](assets/images/CambridgeSoundWorksDigitalIRRemote.jpg)\n\nThe *CambridgeSoundWorksDigitalIRRemote* replaces the original speaker system \"remote\" control, which has some disadvantages:\n- Cable bounded (Max. 2 meters distance)\n- Without turning off the speaker system, the speaker system has an idle power consumption of about 7.5 W (even without audio input)[^1]\n- With turning off the speaker system, the system has a power consumption of about 3.1 W[^2]\n- To turn off the speaker system, the volume level has to be set to minimum volume level\n- After turning on the speaker system the previous volume level has to restored manually\n\nThe *CambridgeSoundWorksDigitalIRRemote* allows me use the IR wireless controller from my TV to \n- turn on/off the speaker system \n- automatically restore the last used volume level after turning on\n- change the volume level \n- mute/unmute\n\n## License and copyright\nMy [code](CambridgeSoundWorksDigitalIRRemote/CambridgeSoundWorksDigitalIRRemote.ino) and this page is licensed under the terms of the CC0 [Copyright (c) 2025 codingABI](LICENSE). \n\n### Used external board and libraries from Arduino IDE Board and Library Manager:\n- Board: ATTinyCore 1.5.2, LGPL version 2.1 by SpenceKonde \n- Libraries: \n  - IRremote (4.4.1, MIT license)\n    - Initially coded 2009 Ken Shirriff http://www.righto.com\n    - Copyright (c) 2016-2017 Rafi Khan https://rafikhan.io\n    - Copyright (c) 2020-2024 Armin Joachimsmeyer\n\n## Hardware\n- Digispark ATtiny85 Microcontroller with reset pin [configured](#pin-5-of-digispark-as-io-pin) as I/O pin\n- Digital potentiometer X9C103\n- IR-Receiver VS1838B\n- Optocoupler 817A\n- Cambridge SoundWorks Digital CSW250\n- Sony KDL-40W4500 TV with Sony RM-ED011 remote controller\n\n\u003e [!WARNING]\n\u003e The *CambridgeSoundWorksDigitalIRRemote* was designed only for my combination: Cambridge SoundWorks Digital CSW250 and Sony KDL-40W4500/Sony RM-ED011. Other TVs/IR-Remote controls could also work, if you find the appropriate IR signals and adjust my [code](CambridgeSoundWorksDigitalIRRemote/CambridgeSoundWorksDigitalIRRemote.ino)\n\n## Used development environment\nArduino IDE 1.8.19 (Without \"real portable\" support version 2.* makes no sense for me https://forum.arduino.cc/t/arduino-ide-2-0-portable/, https://github.com/arduino/arduino-ide/issues/122 ...)\n\nIDE-Board settings:\n- ATtiny85 (Micronucleus / Digispark)\n- Clock: \"8 MHz (no USB)\" (8 MHz reduces the [power consumption](#power-consumption)) \n\n## Appendix\n\n### Schematic\n\n![Schematic](assets/images/Schematic.png)\n\n\u003e [!NOTE]\n\u003e The schematic shows a female Mini-DIN-6 connector\n\n### Cambridge SoundWorks Digital CSW250\n\n![Cambridge SoundWorks Digital CSW250](assets/images/CSW250.png)\n\n#### Original remote control\n\nThe original remote control is cable bounded and connected by a Mini-DIN-6-Connector to the speaker system. \n\n![PCB CT5210B frontside](assets/images/PCB_CT5210B_frontside.png)\n\n![PCB CT5210B backside](assets/images/PCB_CT5210B_backside.png)\n\nAfter analyzing the PCB I got the following schematic:\n\n![PCB CT5210B schematic](assets/images/PCB_CT5210B_Schematic.png)\n\n\u003e [!NOTE]\n\u003e The schematic shows a female Mini-DIN-6 connector\n\n| SW1A | Reaction at the speaker system |\n| --- | --- |\n| Open | Turned off |\n| Closed | Turned on (~1.3 mA between Mini-DIN-6 pin 6 and 3) |\n\nThe *CambridgeSoundWorksDigitalIRRemote* replaces the mechanical switch SW1A with an optocoupler. \n\n| Mini-DIN-6 pin | Color | Connected to speaker system (my assumption) |\n| --- | --- | --- |\n| 1 | Red | Ground |\n| 2 | White | 5.6 V (seems to be regulated) |\n| 3 | Green | Turns on/off the audio amplifier (Pin 6 and 3 connected=On, Pin 6 and 3 disconnected=Off) |\n| 4 | Yellow | Audio volume level (0.76 V = Minimum volume, 5.14V = Maximum volume)  |\n| 5 | Blue | Not connected |\n| 6 | Black | Vcc (15-18 V, when Pin 6 and 3 are not connected. Decreases to ~85%, when Pin 6 and 3 are connected) |\n\nThe original remote control uses a linear B50K potentiometer RV1. Resistor R201 changes the linear to a non linear behaviour (see the following red line).\n\n![Voltage on Mini-DIN-6 pin 4 on the original remote control and CambridgeSoundWorksDigitalIRRemote](assets/images/VoltageMiniDin6Pin4.svg)\n\nThe *CambridgeSoundWorksDigitalIRRemote* uses a digital, 100-steps, linear potentiometer with 10K (because I had no 50K). To get a similar non linear behaviour (Green line) and to ensures that my digital potentiometer did not get more then the allowed 5 V, I had to lower the resistors:\n- R200 to 1K\n- R201 to 5K1\n- R202 to 2K\n\n### Sony RM-ED011\nMy Sony TV KDL-40W4500 has a \"RM-ED011\" IR remote control and the *CambridgeSoundWorksDigitalIRRemote* uses it to control the Cambridge SoundWorks Digital speaker system.\n\n![Sony RM-ED011 Remote control](assets/images/SonyRM-ED011.png)\n\nThe IRremote example [ReceiveDump](https://github.com/Arduino-IRremote/Arduino-IRremote/blob/master/examples/ReceiveDump/ReceiveDump.ino) shows me the following addresses and commands and I use some of them for the *CambridgeSoundWorksDigitalIRRemote*:\n\n| Button | Address/Device Code | Command |\n| :---: | :---: | :---: |\n| ![Button 01](assets/images/bnt01.png) | 0x01 | 0x3A |\n| ![Button 02](assets/images/bnt02.png) | 0xA4 | 0x3D |\n| ![Button 03](assets/images/bnt03.png)* | 0x01 | 0x15 |\n| ![Button 04](assets/images/bnt04.png) | 0x97 | 0x1B |\n| ![Button 05](assets/images/bnt05.png) | 0x97 | 0x1A |\n| ![Button 06](assets/images/bnt06.png) | 0x97 | 0x19 |\n| ![Button 07](assets/images/bnt07.png) | 0x97 | 0x1C |\n| ![Button 08](assets/images/bnt08.png) | 0x1A | 0x58 |\n| ![Button 09](assets/images/bnt09.png) | 0x97 | 0x18 |\n| ![Button 10](assets/images/bnt10.png) | 0x77 | 0x60 |\n| ![Button 11](assets/images/bnt11.png)* | 0x77 | 0x52 |\n| ![Button 12](assets/images/bnt12.png)* | 0x01 | 0x38 |\n| ![Button 13](assets/images/bnt13.png) | 0x97 | 0x28 |\n| ![Button 14](assets/images/bnt14.png) | 0x01 | 0x17 |\n| ![Button 15](assets/images/bnt15.png) | 0xA4 | 0x5B |\n| ![Button 16](assets/images/bnt16.png) | 0x01 | 0x25 |\n| ![Button 17](assets/images/bnt17.png) | 0x01 | 0x65 |\n| ![Button 18](assets/images/bnt18.png) | 0x01 | 0x74 |\n| ![Button 19](assets/images/bnt19.png) | 0x01 | 0x75 |\n| ![Button 20](assets/images/bnt20.png) | 0x01 | 0x34 |\n| ![Button 21](assets/images/bnt21.png) | 0x01 | 0x33 |\n| ![Button 22](assets/images/bnt22.png) | 0x97 | 0x23 |\n| ![Button 23](assets/images/bnt23.png) | 0x97 | 0x36 |\n| ![Button 24](assets/images/bnt24.png) | 0x01 | 0x60 |\n| ![Button 25](assets/images/bnt25.png) | 0x03 | 0x4C |\n| ![Button 26](assets/images/bnt26.png) | 0x03 | 0x4D |\n| ![Button 27](assets/images/bnt27.png) | 0x03 | 0x4E |\n| ![Button 28](assets/images/bnt28.png) | 0x03 | 0x4F |\n| ![Button 29](assets/images/bnt29.png)* | 0x01 | 0x00 |\n| ![Button 30](assets/images/bnt30.png)* | 0x01 | 0x01 |\n| ![Button 31](assets/images/bnt31.png)* | 0x01 | 0x02 |\n| ![Button 32](assets/images/bnt32.png)* | 0x01 | 0x03 |\n| ![Button 33](assets/images/bnt33.png)* | 0x01 | 0x04 |\n| ![Button 34](assets/images/bnt34.png)* | 0x01 | 0x05 |\n| ![Button 35](assets/images/bnt35.png)* | 0x01 | 0x06 |\n| ![Button 36](assets/images/bnt36.png)* | 0x01 | 0x07 |\n| ![Button 37](assets/images/bnt37.png)* | 0x01 | 0x08 |\n| ![Button 38](assets/images/bnt38.png) | 0x01 | 0x3F |\n| ![Button 39](assets/images/bnt39.png)* | 0x01 | 0x09 |\n| ![Button 40](assets/images/bnt40.png) | 0x77 | 0x76 |\n| ![Button 41](assets/images/bnt41.png)* | 0x01 | 0x12 |\n| ![Button 42](assets/images/bnt42.png)* | 0x01 | 0x13 |\n| ![Button 43](assets/images/bnt43.png)* | 0x01 | 0x10 |\n| ![Button 44](assets/images/bnt44.png)* | 0x01 | 0x11 |\n| ![Button 45](assets/images/bnt45.png)* | 0x01 | 0x14 |\n| ![Button 46](assets/images/bnt46.png) | 0x01 | 0x3B |\n\n*TV can be turned on with this button\n\n### Power consumption\n\nThe *CambridgeSoundWorksDigitalIRRemote* gets its 5 V supply voltage from the USB port of my Sony-TV. When the Sony-TV is turned off about ~22 minutes later the USB port will be automatically disconnected. \n\nBefore disconnecting the 5 V supply voltage, the power consumption of the *CambridgeSoundWorksDigitalIRRemote* is dependent on the used voltage on the Digispark \"5V\"-pin, the clock speed and sleep mode:\n\n| \"5V\"-pin voltage | Clock speed | Sleep mode | Power consumption | Comment |\n| --- | --- | ---- | --- | --- |\n| 5.0 V | 16.5 MHz, tuned of USB (USB) | none | 116 mW | 5 V from TV connected to \"5V\"-Pin of the Digispark |\n| 5.0 V | 16.5 MHz, tuned of USB (USB) | SLEEP_MODE_IDLE | 93 mW | 5 V from TV connected to \"5V\"-Pin of the Digispark |\n| 5.0 V | 8 MHz (no USB) | none | 96 mW | 5 V from TV connected to \"5V\"-Pin of the Digispark |\n| 5.0 V | 8 MHz (no USB) | SLEEP_MODE_IDLE | 80 mW | 5 V from TV connected to \"5V\"-Pin of the Digispark |\n| 4.7 V | 8 MHz (no USB) | SLEEP_MODE_IDLE | 70 mW | 5 V from TV connected to Digispark USB port (My Digispark uses a S4 Schottky diode with a forward voltage of ~0.3 V)[^3] |\n| 4.3 V | 8 MHz (no USB) | SLEEP_MODE_IDLE | 65 mW | 5 V from TV connected via a 1N4007 diode to \"5V\"-Pin of the Digispark[^4] |\n\nBelow 8 MHz the ATtiny85 can not receive IR signals from my Sony RM-ED011 (At least with the used library IRremote). \n\nAs as result of this table the *CambridgeSoundWorksDigitalIRRemote* uses 4.3 V, \"8 MHz (no USB)\" and SLEEP_MODE_IDLE \n\n=\u003e **65 mW** power consumption[^5]. \n\n### Pin 5 of Digispark as I/O pin\n\nMy Digispark clone uses pin 5 as a reset pin. To use this pin as an I/O pin I had to change a fuse:\n\n```\nhardware\\tools\\avr\\bin\\avrdude.exe -P com4 -C hardware\\tools\\avr\\etc\\avrdude.conf -b 19200 -c avrisp -p attiny85 -n\nhardware\\tools\\avr\\bin\\avrdude.exe -P com4 -C hardware\\tools\\avr\\etc\\avrdude.conf -b 19200 -c avrisp -p attiny85 -U hfuse:w:0x5F:m \n```\n\n\u003e [!WARNING]\n\u003e After that the Digispark can only be programmed by a USB-micronucleus-bootloader or a high voltage programmer!\n\nPin 5 is a \"weak\" pin and can not provide as much power as the other I/O pins, but can provide the needed ~1.5 mA to drive the used optocoupler.\n\n[^1]:Replacing the original power supply TEAD-66-153000V with a smaller/newer 15 V power supply (for example https://www.amazon.de/dp/B0D2K7L311?ref=ppx_yo2ov_dt_b_fed_asin_title) reduces the idle power consumption to 3.8 W\n\n[^2]:Replacing the original power supply TEAD-66-153000V with a smaller/newer 15 V power supply (for example https://www.amazon.de/dp/B0D2K7L311?ref=ppx_yo2ov_dt_b_fed_asin_title) reduces turned off consumption to ~0 W\n\n[^3]:\"Pin high\" voltage for pin 5=2.4 V, optocoupler If=1.6 mA, Ic=1.3 mA, Uceo=0.2 V \n\n[^4]:\"Pin high\" voltage for Pin 5=2.2 V, optocoupler If=1.4 mA, Ic=1.1 mA, Uceo=1.8 V (not optimal, but working)\n\n[^5]:Most of the power is not consumed by the ATtiny85. About 75% is consumed by the other used electronic components (Builtin LED, driving the optocoupler, digital potentiometer, USB data lines,...)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodingabi%2Fcambridgesoundworksdigitalirremote","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodingabi%2Fcambridgesoundworksdigitalirremote","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodingabi%2Fcambridgesoundworksdigitalirremote/lists"}