Jolla and SailfishOS

The Other Half EEPROM programming using an Arduino Uno as In-System-Programmer

2016-08-23 09:37

Jolla The Other Half EEPROM

When connecting The Other Half (TOH) to the Jolla A phone the toh-demon looks for an I2C EEPROM on 0x50 (7bit address).

If an EEPROM is found on this address the toh-demon reads the data and presents them as files in the

/sys/devices/platform/toh-core.0/
directory:

The Other Half" Wiki on merproject.org has more information on the data structure, how to use it and how that is helpful.

The Project

After having already "mastered" accessing an EEPROM in the TinkerTOH(1,2) project, today's task should be simple:

I want to write a little sketch for the Arduino that programs some content to an I2C EEPROM, that is than read by the Jolla.

Surprisingly it took quite a while to get it right.

This article exists to spare you the (beginner) mistakes I made.

Hardware

  1. Setup you Arduino right

    Don't forget the Pull-Up resistors.


    Fig. 1 Proteus Simulation Setup

  2. Understand the datasheet for your EEPROM

    This one for ST's M24C16 for example clearly states that one can only write up to 16bytes in a single write cycle and than have to wait for 10ms or you 'roll-over' and override the first bytes (Of course I never made that mistake ...).

  3. Organize the data correctly

    That one was a little trickier to figure out and took most of the time.

    I found no documentation on why:

    • The M24C16 "Current Address" for Random Read can only be set to the beginning of a 16bytes page
    • The Jolla A only accepts EEPROM addresses >= 0x30 as config_data addresses

    but up to now I was unable to get the Jolla reading the config_data data otherwise.

Next: Software