Saturday, January 8, 2011

Hacking Santas Best GE-35 Christmas Lights


This last 2010 Christmas, I was reading about lights and decorations. I stumbled on some articles about hacking Santa's Best Craft GE-35 lights that are each RGB LED and individually addressable.

Darco hacked the details of the bus timing for the controller and remote control (string lights) and was my original inspiration to dig deeper into these lights.

Scott Harris used an Arduino for his project. I like the Arduino platform and would consider using it.

I found these 36-LED GE-35 yard decorations from Santa's Best at Sears for $24 on clearance. Oddly, mine are 36-LED as shown on the box, instead of 50-LED count. Either way, I bought several sets and removed the lights from the yard sculpture frame.


The Disassembly

The controller box uses security triangle screws, which are a pain to remove.

I used a grinder to modify an old hex wrench into the security triangle bit necessary to open the controller.

I couldn't find these bits anywhere, so I decide to make my own. It works well!

If you try this, use goggles and protection since sparks fly everywhere.







The yard sculptures appear to have the same controller board assembly and 8051-based micro controller as the string lights., except it's missing the RF controller (epoxy blob).

Most people seem to give up on trying to read or modify the 8051 compatible CPU. Instead, most are using PIC or AVR (Arduino).


The RGB LED Assembly

Each LED node in the yard sculpture appears to be the same as the light string.

However, the yard decoration is using white wire instead of green, which would look better on my white rain gutter. This lens is also flatter, like a squat oval shape instead of longer like the lens on the string lights.


I used my Celestron Digital Microscope (#44302) to take some close-ups of the LED Assembly. You can see the +5V, DataIn, GND on the left, and +5V, DataOut, GND on the right:



Here is a close-up of the RGB LED itself. You can see the 3 LED elements (Red, Green, Blue) in the LED housing. I'm not sure what brand it is.


Several people are hacking these lights into fantastic creative projects. I plan to develop my own light show platform using a geometric sculpture and custom controller using an Atmel AVR microcontroller. I'll post more details as that project evolves.

Hopefully this information serves to help others to hack these great lights!


Wednesday, February 24, 2010

Roasting Coffee...sigh.

I roasted some Colombian and Kenya AA coffee this weekend using my Gene Cafe roaster. It works pretty well, except that it was designed for 220v systems, not 110 like in the U.S. I purchased the right model (for use in the U.S.) but it seems to heat and roast slowly. Most batches take 17-18 minutes to reach a slow first-crack. I've been running for 5 minutes to preheat the roaster which seems to help. My only complaint is that coffee ends up tasting "baked" with muted flavors. I enjoy that it's much more quiet than the "i roar" I used for a few years, and it handles larger batches. If I had it over, I would spend the extra money for a better drum roaster. Oh well, these are my luxury problems.

Friday, February 5, 2010

funtoo -- Daniel Robbins, gentoo, linux, keychain, metro, articles

I've bee using Gentoo Linux for several years, and have been looking to switch to this variant from the original creator of Gentoo. I'm in the process of setting up a simple, low-power MythTV box using an old Dell P3 and PVR-350 card. So far so good.

funtoo -- Daniel Robbins, gentoo, linux, keychain, metro, articles

Sunday, August 23, 2009


It turns out that this is a pepper weevil.




I found a dead branch on the green pepper plant, and when cutting the branch, I got down to the hollow core where there was a small insect.












Here you can see the "woody" texture to the green pepper branch, along with the hollow core for of the branch. The core was actually filled with something like saw-dust. Presumably, this was eatten by the insect, and the sawdust was its waste.

















While looking at this under the microscope, it started walking around. I was able to get a video of this thing waking up and walking around.



video



Wednesday, August 12, 2009

Larva inside green pepper plant stem (maybe thrip)

I think my green pepper plant in one of the Earth Box sets has contracted a mosaic virus. Several stems are dead and look like wood.

I was trimming back these stems and noticed they were hollow -- I kept trimming back to the end of the dead steam that meets the live part of the plant. I noticed what looks like a small worm or larva in the stem.










I wonder what this is? It looks like it could become a moth (or thrip)?

Tuesday, August 11, 2009

Celestron Digital Microscope #44302 for Linux

I got a new toy recently, the Celestron Digital Microscope (#44302) to help with microelectronics and support my learning with gardening.

I'm currently trying to configure a Linux driver for this device which seems to follow the Universal Video System (UVS) standard. The vendor and device ID was not registered with linux-usb.org, so I submitted the patch to add the device.

For anyone curious, the output of lsusb follows:


output of `lsusb -v` for Celestron Digital Microscope #44302


Bus 001 Device 006: ID 19b4:0101
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 ?
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x19b4
idProduct 0x0101
bcdDevice 1.00
iManufacturer 2 Celestron Digital Microscope
iProduct 1 Celestron Digital Microscope
iSerial 3 Celestron Digital Microscope
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 653
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 98mA
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 0
bInterfaceCount 2
bFunctionClass 14 Video
bFunctionSubClass 3 Video Interface Collection
bFunctionProtocol 0
iFunction 1 Celestron Digital Microscope
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 1 Video Control
bInterfaceProtocol 0
iInterface 1 Celestron Digital Microscope
VideoControl Interface Descriptor:
bLength 13
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdUVC 1.00
wTotalLength 103
dwClockFrequency 15.000000MHz
bInCollection 1
baInterfaceNr( 0) 1
VideoControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 2
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bSourceID 5
iTerminal 0
VideoControl Interface Descriptor:
bLength 26
bDescriptorType 36
bDescriptorSubtype 6 (EXTENSION_UNIT)
bUnitID 4
guidExtensionCode {7033f028-1163-2e4a-ba2c-6890eb334016}
bNumControl 8
bNrPins 1
baSourceID( 0) 3
bControlSize 1
bmControls( 0) 0x2f
iExtension 0
VideoControl Interface Descriptor:
bLength 26
bDescriptorType 36
bDescriptorSubtype 6 (EXTENSION_UNIT)
bUnitID 5
guidExtensionCode {3fae1228-d7bc-114e-a357-6f1edef7d61d}
bNumControl 8
bNrPins 1
baSourceID( 0) 4
bControlSize 1
bmControls( 0) 0x00
iExtension 0
VideoControl Interface Descriptor:
bLength 18
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 1
wTerminalType 0x0201 Camera Sensor
bAssocTerminal 0
iTerminal 0
wObjectiveFocalLengthMin 0
wObjectiveFocalLengthMax 0
wOcularFocalLength 0
bControlSize 3
bmControls 0x0000000e
Auto-Exposure Mode
Auto-Exposure Priority
Exposure Time (Absolute)
VideoControl Interface Descriptor:
bLength 11
bDescriptorType 36
bDescriptorSubtype 5 (PROCESSING_UNIT)
Warning: Descriptor too short
bUnitID 3
bSourceID 1
wMaxMultiplier 0
bControlSize 2
bmControls 0x0000053f
Brightness
Contrast
Hue
Saturation
Sharpness
Gamma
Backlight Compensation
Power Line Frequency
iProcessing 0
bmVideoStandards 0x 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 6
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
VideoStreaming Interface Descriptor:
bLength 14
bDescriptorType 36
bDescriptorSubtype 1 (INPUT_HEADER)
bNumFormats 1
wTotalLength 407
bEndPointAddress 129
bmInfo 0
bTerminalLink 2
bStillCaptureMethod 2
bTriggerSupport 1
bTriggerUsage 0
bControlSize 1
bmaControls( 0) 27
VideoStreaming Interface Descriptor:
bLength 27
bDescriptorType 36
bDescriptorSubtype 4 (FORMAT_UNCOMPRESSED)
bFormatIndex 1
bNumFrameDescriptors 7
guidFormat {59555932-0000-1000-8000-00aa00389b71}
bBitsPerPixel 16
bDefaultFrameIndex 1
bAspectRatioX 0
bAspectRatioY 0
bmInterlaceFlags 0x00
Interlaced stream or variable: No
Fields per frame: 1 fields
Field 1 first: No
Field pattern: Field 1 only
bCopyProtect 0
VideoStreaming Interface Descriptor:
bLength 50
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 1
bmCapabilities 0x00
Still image unsupported
wWidth 640
wHeight 480
dwMinBitRate 614400
dwMaxBitRate 18432000
dwMaxVideoFrameBufferSize 614400
dwDefaultFrameInterval 333333
bFrameIntervalType 6
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 500000
dwFrameInterval( 2) 666666
dwFrameInterval( 3) 1000000
dwFrameInterval( 4) 2000000
dwFrameInterval( 5) 10000000
VideoStreaming Interface Descriptor:
bLength 50
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 2
bmCapabilities 0x00
Still image unsupported
wWidth 352
wHeight 288
dwMinBitRate 202752
dwMaxBitRate 6082560
dwMaxVideoFrameBufferSize 202752
dwDefaultFrameInterval 333333
bFrameIntervalType 6
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 500000
dwFrameInterval( 2) 666666
dwFrameInterval( 3) 1000000
dwFrameInterval( 4) 2000000
dwFrameInterval( 5) 10000000
VideoStreaming Interface Descriptor:
bLength 50
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 3
bmCapabilities 0x00
Still image unsupported
wWidth 320
wHeight 240
dwMinBitRate 153600
dwMaxBitRate 4608000
dwMaxVideoFrameBufferSize 153600
dwDefaultFrameInterval 333333
bFrameIntervalType 6
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 500000
dwFrameInterval( 2) 666666
dwFrameInterval( 3) 1000000
dwFrameInterval( 4) 2000000
dwFrameInterval( 5) 10000000
VideoStreaming Interface Descriptor:
bLength 50
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 4
bmCapabilities 0x00
Still image unsupported
wWidth 176
wHeight 144
dwMinBitRate 50688
dwMaxBitRate 1520640
dwMaxVideoFrameBufferSize 50688
dwDefaultFrameInterval 333333
bFrameIntervalType 6
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 500000
dwFrameInterval( 2) 666666
dwFrameInterval( 3) 1000000
dwFrameInterval( 4) 2000000
dwFrameInterval( 5) 10000000
VideoStreaming Interface Descriptor:
bLength 50
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 5
bmCapabilities 0x00
Still image unsupported
wWidth 160
wHeight 120
dwMinBitRate 38400
dwMaxBitRate 1152000
dwMaxVideoFrameBufferSize 38400
dwDefaultFrameInterval 333333
bFrameIntervalType 6
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 500000
dwFrameInterval( 2) 666666
dwFrameInterval( 3) 1000000
dwFrameInterval( 4) 2000000
dwFrameInterval( 5) 10000000
VideoStreaming Interface Descriptor:
bLength 38
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 6
bmCapabilities 0x00
Still image unsupported
wWidth 1280
wHeight 960
dwMinBitRate 2457600
dwMaxBitRate 22118400
dwMaxVideoFrameBufferSize 2457600
dwDefaultFrameInterval 1111111
bFrameIntervalType 3
dwFrameInterval( 0) 1111111
dwFrameInterval( 1) 2000000
dwFrameInterval( 2) 10000000
VideoStreaming Interface Descriptor:
bLength 38
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 7
bmCapabilities 0x00
Still image unsupported
wWidth 1280
wHeight 1024
dwMinBitRate 2621440
dwMaxBitRate 23592960
dwMaxVideoFrameBufferSize 2621440
dwDefaultFrameInterval 1111111
bFrameIntervalType 3
dwFrameInterval( 0) 1111111
dwFrameInterval( 1) 2000000
dwFrameInterval( 2) 10000000
VideoStreaming Interface Descriptor:
bLength 34
bDescriptorType 36
bDescriptorSubtype 3 (STILL_IMAGE_FRAME)
bEndpointAddress 0
bNumImageSizePatterns 7
wWidth( 0) 1280
wHeight( 0) 1024
wWidth( 1) 1280
wHeight( 1) 960
wWidth( 2) 640
wHeight( 2) 480
wWidth( 3) 352
wHeight( 3) 288
wWidth( 4) 320
wHeight( 4) 240
wWidth( 5) 176
wHeight( 5) 144
wWidth( 6) 160
wHeight( 6) 120
bNumCompressionPatterns 7
VideoStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 13 (COLORFORMAT)
bColorPrimaries 1 (BT.709,sRGB)
bTransferCharacteristics 1 (BT.709)
bMatrixCoefficients 4 (SMPTE 170M (BT.601))
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0080 1x 128 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 2
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0100 1x 256 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 3
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0320 1x 800 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 4
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0b20 2x 800 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 5
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x1320 3x 800 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 6
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x1400 3x 1024 bytes
bInterval 1
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 ?
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0 Full speed (or root) hub
bMaxPacketSize0 64
idVendor 0x1d6b Linux Foundation
idProduct 0x0002 2.0 root hub
bcdDevice 2.06
iManufacturer 3 Linux 2.6.30-gentoo-r3.core2.sj1 ehci_hcd
iProduct 2 EHCI Host Controller
iSerial 1 0000:00:1d.7
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed (or root) hub
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 12
Hub Descriptor:
bLength 11
bDescriptorType 41
nNbrPorts 8
wHubCharacteristic 0x000a
No power switching (usb 1.0)
Per-port overcurrent protection
bPwrOn2PwrGood 10 * 2 milli seconds
bHubContrCurrent 0 milli Ampere
DeviceRemovable 0x00 0x00
PortPwrCtrlMask 0xff 0xff
Hub Port Status:
Port 1: 0000.0503 highspeed power enable connect
Port 2: 0000.0100 power
Port 3: 0000.0100 power
Port 4: 0000.0100 power
Port 5: 0000.0100 power
Port 6: 0000.0100 power
Port 7: 0000.0100 power
Port 8: 0000.0100 power
Device Status: 0x0003
Self Powered
Remote Wakeup Enabled

Mental Festival -- learning shared

This blog is intended to become a shared experience in learning about gardening, electronics, robotics, coffee and software design. This is really just a place for sharing experiences and ideas among my various hobbies and interests.