Skip to content

About

This repository documents all my attempts to make the GE Opal 2 not kill itself

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

GE-Opal-Reverse-Engineering-Project

This repository documents all my attempts to make the GE Opal 2 not kill itself (More specifically, the *GE Profile:tm: Opal:tm: 2.0 Ultra Nugget Ice Maker )

Important context to a lot of frustration here: This is a $500 dollar ice machine. It has a lifespan of 6 months to 1 year

Consider sponsoring

I have quite literally dumped hundreds of dollars into this project. Some of the costs are prototyping modules, connectors, electronics components, and OEM parts for the machine.

Money spent on this project so far: $768.73

this does not factor in my time spent on the project

(500 dollar ice machine by the way)

Directory

To Do

(in no specific order)

  • Finish connectors.md with colors and diagrams
  • Design PCB
  • Reverse engineer I2C bus of other front panel (Need parts)
  • Design full independent schematic
  • Reverse engineer GE implementation of the RGB light (Need parts)

Default button mappings

A few new button actions are defined, and a few changed from the original machine behavior

  • Power: Toggles Power
    • When held: Triggers a hard reset of the Arduino. I hope you know what you're doing
  • Light: Toggles Light
  • Clean: Toggles cleaning mode. In my implementation, there is no timer or anything. It simply forces the pump to run until it is pressed again.

The Prototype

Mess of wires and stuff coming from the ice machine

Warning

Schematics and code are not final!

LLM Policy and usage in this project:

I hate LLMs, and "AI" crap. Therefore, I decided to very clearly define how they were used in this project.

  • I did NOT copy-paste code or otherwise use LLM generated material in this project's code.
  • An LLM was used to help me understand how to use KiCAD because I have never used it before.
  • An LLM was used to sanity check (rubber ducky) to avoid killing the machine.
  • An LLM was used to help me understand the basics of I2C and reverse engineer the communication the Opal uses.
    • I implemented the I2C communications in the firmware.

Do NOT submit LLM generated issues, PRs, or use this repo in training data.

You MAY submit an issue that you made with the assistance of an LLM, but you must paraphrase and understand the content in your own words.

My blog post on this

A Scathing Review of the GE Opal 2 Nugget Ice Maker

Background

I've tried putting lubrication on the auger (squeakFromShaft.md) but it did not resolve the squeaking issue I've decided I am going to replace the PCB with an arduino to implement a proper defrost cycle.

Notice

As I was writing this, Reddit decided to delete the 2 year old post I was using as a reference. Some of the more important images are available in images.

https://web.archive.org/web/20250804095737/https://www.reddit.com/r/IceChewersAnonymous/comments/1hxlbkg/fixing_the_opal_20/

The Problem

The GE Opal ice maker has well-known issues where it will start to fail after about a year of use, and in some cases, prior. The machine is incredibly high maintenance, with GE recommending running bleach through the machine (archive.org capture)

There is even (as of writing) an ongoing class action

These machines do not fail gracefully, often making screeching and whining noises due to the internal parts getting frozen and locked up. This commonly involves the destruction of the gearbox, auger, and/or bearings.

Browsing Reddit reveals many owners have constant issues with these machines, with one redditor even claiming to go through 4 machines in 2 years. Despite its flaws, this machine is well liked by r/IceChewersAnonymous, though they also agree that it has significant longevity issues. A quick search shows the love/hate the community has for it.

More importantly, several members of the community have taken attempts to repair the machine pretty far.

Piping

Piping

Nominal voltages recorded from the opal 2 ice maker during operation

I am aware that JST XHB is not a real standard. However, this is the bastardized cloned modification China has made. it is a JST XH connector with a locking tab. You will not find them on Amazon, or Digikey. I found mine on Aliexpress.

Same applies to JST HY. With some help from the Arduino Community1 a specific member of the Arduino community and JLCPCB, I was able to find what appears to be a matching connector. LCSC #C42451574) (Not quite it yet)

PCB Label Part Connector Type & Color Voltage
UV UV Light JST XHB 2-pin connector (Blue) 12V DC
compressor Compressor JST VHR 3-pin connector (Red) 120V AC
motor Auger Motor JST VHR 3-pin connector (White) 120V AC
WP Pump JST XHB 2-pin connector (Purple) 12V DC
FAN1 Fan JST XHB 2-pin connector (Gray) 12V DC
WIFI WiFi Board JST HY 5-pin connector (White) 3.3V + 5V DC
IM1101 Front Panel JST XHB 4-pin connector (Black) 5V + I2C
LED11 & LED12 Ice Box LED(s?) JST XHB 2-pin connector (White) 12V DC
SW Ice box presence switch JST XHB 2-pin connector (Red) 5V DC
CON5 Internal Tank Floats JST HY 4-pin connector (Red) 5V DC
TX IR LED For Capacity JST XHB 2-pin connector (Yellow) 5V DC
RX IR Receiver JST XHB 2-pin connector (Green) 5V DC
AC AC Input JST VHR 3-pin connector (Black) 120V AC
IMN1001 ??? JST HY 7-pin connector (White) ???
CON6 ??? JST HY 6-pin connector (White) 5V + ???
Clean ??? JST XHB 2-pin connector (Cyan) ???
RGB ??? JST XHB 3-pin connector (White) 5V + ???
1033 ??? JST XHB 3-pin connector (Black) 5V + ???
CON3 ??? JST XHB 3-pin connector (Red) ???
??? ??? JST HY 5-pin connector (Black) 5V + ???
  • I2C protocols documented in i2c.md

  • Internal Tank Floats (4 wires, 2 floats)

    • Black & Red: Lower float (float low = closed circuit)
    • Yellow & White: Upper float (float high = closed circuit)

FAQ

Why an ESP32 based board instead of a standard 8-bit Atmel board?

The idea was to keep it simple, but I started running into issues once I got the HLW8032. Unlike the ACS712 which uses analog to communicate with the Arduino, the HLW8032 uses serial. The original board I was planning to use and prototyping with, the Arduino Nano, only has 1 serial bus. That being the main USB port. This would mean you cannot program the controller while the HLW8032 is connected. I did not like that. Furthermore, all the Arduino libraries for reading from the HLW8032 assume 32-bit math, which breaks down on the Arduino Nano.

What about WiFi? The app?

I decided to completely ignore this, as a WiFi connected ice machine is just stupid. Maybe I will add it some day, but there are 2 ways to go about it. The OEM WiFi daughterboard communicates to the motherboard via serial. You can either use that and just pretend to be the OEM motherboard, or you could completely rebuild/reverse-engineer the connection to the SmartHQ app, which... yikes...

Can I buy a board?

Not yet.

Special Thanks

  • My Grandfather, a retired Raytheon engineer for verifying my 120v components
  • The Adafruit Discord team for being wholly interested in my project Join their Discord
  • Gan, from the JLCPCB team for helping me hunt down the weird connectors GE used
  • Carlos, from the Arduino support team for verifying my intuition that the Nano ESP can drive several hundred mA
  • bitSmith, a volunteer moderator of the official Discord Arduino community for banning me and my younger brother for absolutely no reason - leading to me finding the Adafruit Discord

Legal stuff

  • The designs and software within are provided as-is without warranty of any kind, express or implied
  • GE, GE Profile, Opal, Adafruit, ESP32, and Arduino trademarks are property of their respective owners. In no way do they endorse the contents contained within.
  • This project utilizes mains voltage. Use at your own risk. You have been warned.
  • This project uses 2 licenses, GPLv3 for the code and Creative Commons Attribution-NonCommercial 4.0 International for the hardware designs. Exemptions may be requested by contacting me.

Footnotes

  1. A massive shoutout to the "Official" Arduino Discord volunteer moderation team (bitSmith), who permanently banned me (and my younger brother, despite having no involvement except association) from their Discord server and belittled me and talked to me in a condescending way when I was migrating to ESP32. If you are reading this, yes, the Arduino Nano ESP32 CAN power 2 relays on the 3.3v line because it has a regulator that can easily handle 1A. To quote bitSmith, it will not work "because of physics. and logic." I later emailed Arduino directly asking for clarification, and yes, it can handle 1A. ↩

About

This repository documents all my attempts to make the GE Opal 2 not kill itself

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Sponsor this project

Used by

Contributors

Languages