View Single Post
Posts: 339 | Thanked: 1,623 times | Joined on Oct 2013 @ France
#883
Originally Posted by DrYak View Post
Power, I2C, USB.
I agree with power and USB, but not on I2C.

It has not a sufficient (in my mind) cost/benefit ratio:
  • It is the slowest bus available (400kHz in fast mode. Higher throughput modes are quite specific in only supported in some specific chips, but around 3MB also exists), and that's without removing headers overhead and clock stretching on some devices.
  • Devices can't initiate an exchange (like if a key is pressed on a keyboard), so if you don't want to do polling, you need an additional interrupt line.
  • A lot of devices exists for I2C, but not much of them add anything to a phone : accelerometers/magnetometers/gyroscopes are already there, eeproms are not useful compared to the loads of flash in the phone, keyboard input doesn't matter in a phone with a hardware keyboard. This leaves only some useful chips like pressure sensors, ADC, IO expanders or small OLED displays...
  • It is not plug&play : there is no auto-discovery mechanisms in this, so you either need to manually configure the addresses and types of device you put there, or need to resort to add an additional eeprom with the details (like done in Jolla OH, Raspberry PI's hat, BeagleBone's capes, ...)

Other interesting bus like SPI offer more throughput, but with a lot of pins (usually 4) and the same shortcomings as I2C regarding plug&play. Then there are more specialised bus like I2S for sound, some bus for camera or display, sata for drives, sdio for sdcards and some peripherals, ...

On the other hand is the USB bus. It only needs 2 pins of data (and the same 2 pins of power as the other ones), but allows about anything possible:
  • high speed : may not be capable of handling a 4k@60Hz stream, but can be quite fast for about all things we can do on with a phone, especially if USB3 is supported
  • Can be used as device or host (with OTG functionality) : so can power hard drive or be connected has a device to say a Raspberry Pi zero in a back cover (don't know you would do that, but it can ! )
  • about all devices are possible : from serial bus, joystick/mouse/keyboard, ethernet/wifi/bt adapters, hard drives, cameras (even thermal ones like the Lepton), display, SDR, printers, audio...
  • Plug&Play : if the given USB profile is supported on the phone, just plug it, and it will appear right on as the correct device.
  • easily accessible to hackers/commercial products : greybus needs specific and costly interface chips, USB is found in all microcontrollers ranges (from Lower Atmel 8 bits, to high range STM 32 bits).
  • can be extended to multiple devices using a hub on the extension board or with composite USB devices (several profiles at the same time in the same chip)

So for effectiveness, I would go for only bidirectional power pins with USB OTG (so 4 pins), to cover all usages.
If you can put anything, then UART+I2C+SPI+Gpio for interrupts/PWM+PciE+Sata+... can find its use too.

I think the reason why there was not much Other Half created (except the well-know keyboard) is mainly because I2C was too limited. At the time, I had to add CAN-bus support, but it was not possible through I2C, so I did it with a CAN-to-wifi interface (which had the benefit to be compatible with any phone). If I had USB available, I would have done an other-half for that.


And about the company name for the phone, I understand that Youyota is Michael's brand, not Chen's. Chen did the Motorola keyboard Mod under the Livermorium brand, which I think he owns (or is a part of) ?

Last edited by Zeta; 2017-07-27 at 20:21.
 

The Following 8 Users Say Thank You to Zeta For This Useful Post: