ERS1000 Networking

It's alive!

Unlike previous models, the ERS-1000 is a cloud-connected device that continuously connects to the network (provided its network switch has set WiFi and/or LTE to enabled). While the dog is capable of functioning off-network, key features are locked behind its web API. In addition, an as-of-yet unexplained system lock occurs on some units that cannot connect to the internet or ping cellular. (Could it be that there are security protections against tampering?)

Therefore, it is pertinent to have some understanding of the ERS-1000 network structure and features prior to EOL. The following research includes only public information the AIBO API serves and includes no reverse-engineering or generally Terms of Service-breaking material. TL;DR this is out of love, don't sue me.

Networking nitty-gritties

AIBO connects to a large quantity of servers.

The myaibo application in particular is concerned with four servers primarily, outside of CDNs:

  • "friend", which handles friended AIBOs and keeping track of interaction between those robots
  • "feedish" (feed dish), which handles the online 'feeding AIBO' features
  • "trinity" (matrix reference?), which handles "AIBO missions" sent from AIBO patrol
  • "frontgate", which appears to handle most other aspects of AIBO's online features such as the dog's hopspitalization and update status, EULA, registered persons, etc
  • "image" for storing and serving the images taken by AIBO
Beyond this, there are analytics servers, content delivery servers, Amazon IOT servers, compute clusters, Amazon cloudfront interfaces, and others, that handle live data from the robot and build out the user interfaces.

The general cycle of behavior on the web is vaguely as follows:

  1. myaibo authorizes with the server
  2. the latest version of the EULA is retrieved, and its acceptance status is checked
  3. the user's settings are retrieved
  4. the user's robots and their data are retrieved
  5. the user's cloud subscription status is recieved
  6. the robot's hospitalization status is recieved
  7. the server takes logs
  8. robot function servers are queried
  9. device state and functionality is checked
  10. system status and settings are checked
  11. app announcements are checked
  12. aibo's photos are checked and downloaded
  13. aibo's brain is served
  14. timezones are checked
  15. a list of error codes is recieved

Information from AIBO (hontai)

AIBO's personality

AIBO reports both static values representing its set "personality" and dynamic "mood" values that inform AIBO's current state.

The static personality values are:

  • extroversion
  • conscientiousness
  • openness
  • neuroticism
  • sportsMinded
Along with these static values, the server reports a "type" and a "level". The known "levels" are "little" and "normal", presumably connected to their age. The types correspond to the listed personality deliniations in the app as follows:
Listed Name
Internal Name extro- version
conscientious- ness openness neuroticism sportsMinded
shy shy 0 1 0 0.2 0
curious cute 0.6 0.5 0.6 1 0
clingy easygoing 1 0.5 0
0 0.3

Note that this is an incomplete list. The "curious" values listed are for an aibo in their "little" stage rather than adult stage. It is possible there is more variation. If you'd like to contibute to this research and have a cloud-connected ERS-1000, let me know.

The dynamic values are:

  • anticipation_surprise
  • fear_anger
  • joy_sadness
  • trust_disgust
These values scale and are relatively high-precision decimals.

There may be more internal personality values we don't get to see. At a fan meeting, developers shared an image comparing the natures of 3 different employee-posessed AIBOs and highlighted their differences. It's not known what these values actually were. Something shown here? Something not? Who can say.

Error codes

Refers to all "popup" style notifications that can appear in the app. They also include feature notifications.

Most are copies of themselves, but they have distinct serials. The existing prefixes are DEV, NET, MEC, SYS, APP, FUP, SEC, FOTA, LEARNING, TRAINING, TIPS

  • DEV: General internal errors
  • NET: Network errors
  • MEC: Mechanical errors
  • SYS: 'System' error. Standard "restart your aibo" error
  • APP: App errors? Standard "restart your aibo" error
  • FUP: Failed update errors.
  • SEC: Also a failed update error. Wild guess that SEC stands for a "special" or "system" "error code"?
  • FOTA: Firmware Over the Air. Prompts you to update AIBO.
  • TRAINING: Notifies that the "be quiet" behaviors have changed or improved.
  • TIPS: Notifies that your AIBO can get off of the station by itself after having charged.

Model numbers

For an unknown reason, a full list of used and unused model numbers is reported.

These values can be summarized as ERS-1000 serials with "editions" /A through /Z, identical serials with "ERS" replaced for "SR1", and five special serials with especially unknown purposes.

ERS-1000/N2 J1 "JP"
SR1-1000/A J1 "JP"
SR1-1000/B J1 "JP"
SR1-1000/C J1 "JP"
SR1-1000/D J1 "JP"
SR1-1000/E J1 "JP"
SR1-1000/F J1 "JP"
SR1-1000/G J1 "JP"
SR1-1000/H J1 "JP"
SR1-1000/I J1 "JP"
SR1-1000/J J1 "JP"
SR1-1000/K J1 "JP"
SR1-1000/L J1 "JP"
SR1-1000/M J1 "JP"
SR1-1000/N J1 "JP"
SR1-1000/O J1 "JP"
SR1-1000/P J1 "JP"
SR1-1000/Q J1 "JP"
SR1-1000/R J1 "JP"
SR1-1000/S J1 "JP"
SR1-1000/T J1 "JP"
SR1-1000/U J1 "JP"
SR1-1000/V J1 "JP"
SR1-1000/W J1 "JP"
SR1-1000/X J1 "JP"
SR1-1000/Y J1 "JP"
SR1-1000/Z J1 "JP"
SR1-1000/A U8 "US"
SR1-1000/B U8 "US"
SR1-1000/C U8 "US"
SR1-1000/D U8 "US"
SR1-1000/E U8 "US"
SR1-1000/F U8 "US"
SR1-1000/G U8 "US"
SR1-1000/H U8 "US"
SR1-1000/I U8 "US"
SR1-1000/J U8 "US"
SR1-1000/K U8 "US"
SR1-1000/L U8 "US"
SR1-1000/M U8 "US"
SR1-1000/N U8 "US"
SR1-1000/O U8 "US"
SR1-1000/P U8 "US"
SR1-1000/Q U8 "US"
SR1-1000/R U8 "US"
SR1-1000/S U8 "US"
SR1-1000/T U8 "US"
SR1-1000/U U8 "US"
SR1-1000/V U8 "US"
SR1-1000/W U8 "US"
SR1-1000/X U8 "US"
SR1-1000/Y U8 "US"
SR1-1000/Z U8 "US"
ERS-1000/A J1 "JP"
ERS-1000/B J1 "JP"
ERS-1000/C J1 "JP"
ERS-1000/D J1 "JP"
ERS-1000/E J1 "JP"
ERS-1000/F J1 "JP"
ERS-1000/G J1 "JP"
ERS-1000/H J1 "JP"
ERS-1000/I J1 "JP"
ERS-1000/J J1 "JP"
ERS-1000/K J1 "JP"
ERS-1000/L J1 "JP"
ERS-1000/M J1 "JP"
ERS-1000/N J1 "JP"
ERS-1000/O J1 "JP"
ERS-1000/P J1 "JP"
ERS-1000/Q J1 "JP"
ERS-1000/R J1 "JP"
ERS-1000/S J1 "JP"
ERS-1000/T J1 "JP"
ERS-1000/U J1 "JP"
ERS-1000/V J1 "JP"
ERS-1000/W J1 "JP"
ERS-1000/X J1 "JP"
ERS-1000/Y J1 "JP"
ERS-1000/Z J1 "JP"
ERS-1000/BI2J1 "JP"
ERS-1000/WI2J1 "JP"
ERS-1000/W3 J1 "JP"
ERS-1000/A U8 "US"
ERS-1000/B U8 "US"
ERS-1000/C U8 "US"
ERS-1000/D U8 "US"
ERS-1000/E U8 "US"
ERS-1000/F U8 "US"
ERS-1000/G U8 "US"
ERS-1000/H U8 "US"
ERS-1000/I U8 "US"
ERS-1000/J U8 "US"
ERS-1000/K U8 "US"
ERS-1000/L U8 "US"
ERS-1000/M U8 "US"
ERS-1000/N U8 "US"
ERS-1000/O U8 "US"
ERS-1000/P U8 "US"
ERS-1000/Q U8 "US"
ERS-1000/R U8 "US"
ERS-1000/S U8 "US"
ERS-1000/T U8 "US"
ERS-1000/U U8 "US"
ERS-1000/V U8 "US"
ERS-1000/W U8 "US"
ERS-1000/X U8 "US"
ERS-1000/Y U8 "US"

Not likely intended behavior-- but isn't this fascinating?

Fun facts

Bizarre discoveries and funny comeuppances

  • AIBO's virtual food items have a "weight", implying AIBO can gain weight. Realistically, this is probably how the server keeps track of when AIBO is 'full'.
  • Early in the ERS-1000's lifespan, it was announced that Chinese and American releases would be targeted. While the American release materialized, the Chinese release did not. Remnants indicate that the myaibo applications were being developed for Mandarin prior to that aspect of the project's cancellation.
  • AIBO appears to leverage GNNs (distributed graph learning) in some form as part of its neural network featureset. GNNs are resource-intensive, so the workload might be distributed across everyone's devices.
  • AIBO uses the linux networkmanager connman, which you can install and try on your own system.

the song recommendation is: sm43429658