Tuesday, January 6, 2026

Getting an old Sony Ericsson Xperia Android device (ST23i) working with ADB on Ubuntu 24.04

I have an old, small-screen device running Android 4.0.4 that still works perfectly. As someone who dislikes e-waste, I use it for app development, giving ancient devices a useful afterlife. Consequently, some of my apps maintain a minimum SDK API level of 15. 

This guide, mainly for my own future reference, shows the exact steps to make such a device show up in adb devices and consequently in Android studio on Ubuntu 24.04.

1. Confirm that the device is visible over USB

First, confirm that Linux actually sees the device at the USB level. In a terminal run lsusb. With the phone connected, you should see a line like:

Bus 005 Device 013: ID 0fce:6180 Sony Ericsson Mobile Communications AB Android

  • 0fce is the vendor ID for Sony Ericsson.
  • 6180 is the product ID for this specific device/firmware.

If you see such a line, USB connectivity is fine and udev/adb configuration is the missing piece.

2. Create a udev rule for the device

Linux uses udev rules to assign permissions to USB devices. By default, non‑root users are often not allowed to talk to Android devices via ADB. Creating a custom rules file fixes that.

Create or edit the file:

sudo nano /etc/udev/rules.d/51-android.rules

Add a minimal vendor‑only rule (recommended starting point):

SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666", GROUP="plugdev"

This tells udev: "Any USB device with vendor ID 0fce should be world‑readable and belong to group plugdev".

If you want to be more specific, you can additionally match the product ID: 

SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", ATTR{idProduct}=="6180", MODE="0666", GROUP="plugdev" 

Save and exit, then set correct permissions and reload the rules:

sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules
sudo udevadm trigger

Unplug and re‑plug the phone after this.

Note: The filename doesn’t have to be 51-android.rules. Any NN-something.rules under /etc/udev/rules.d works, the number only affects processing order.

3. Configure ADB’s vendor list

adb maintains its own list of USB vendor IDs that are treated as potential Android devices. Adding the Sony Ericsson vendor ID to this list avoids some detection issues.

Create or edit:

nano ~/.android/adb_usb.ini

Append the Sony Ericsson vendor ID (one per line) 0x0fce. Save the file, then restart the ADB server and verify that it sees the device:

adb kill-server
adb start-server
adb devices 

You should see something like:

List of devices attached
YT9101PVNF    device

Android Studio will now typically detect it automatically.

Summary

To make an old Sony Ericsson Android device (e.g. 0fce:6180) work with ADB and Android Studio on Ubuntu 24.04:

  1. Confirm the device appears in lsusb.
  2. Create a udev rule in /etc/udev/rules.d/51-android.rules for vendor 0fce (and optionally product 6180).
  3. Add 0x0fce to ~/.android/adb_usb.ini.
  4. Use adb devices to confirm connectivity, then select the device in Android Studio.

You can adapt this procedure for other legacy Android devices by changing the USB vendor and product IDs reported by lsusb.

Related StackOverflow posts:

 

Monday, November 3, 2025

Open-sourcing Image Converter for Android

Last update: 2025.11.14

Original post 2025.11.03

I built Image Converter during a hackathon in a short amount of time and published it in November 2020. Since it did not generate any revenue (no subscriptions sold, totaling $22.50 from ads over five years), I largely forgot about it. However, Google reminded me that I should update it to target the latest SDK, or else face consequences. Additionally, I decided to move it as the final project from self-hosted SVN to GitHub, five years after its initial launch. As a result, I have decided to open-source it as well, marking the ninth Android app that I have open-sourced!

AdMob earnings

Please note that the published version still targets Android SDK 30 and will not work on newer Android devices, as it uses direct storage access, which was once allowed. I haven't updated it yet, as it is not a priority for me. Meanwhile, users with slightly older Android devices can still enjoy the free, open-source, and lightweight image converter. Just follow the link below:

Image Converter on GitHub

Update 2025.11.14

Sooner than originally planned, I have updated Image Converter to target Android SDK 35. To make my life easier, I have decided to drop support for older devices, so the latest release requires a minimum Android SDK of 29. The version for older devices will remain downloadable here: Image Converter release 1.0.6.

The app has also been visually updated to support Material Design 3 with Dynamic colors.

Old version screenshots
New version screenshots

Another personal milestone has been reached: the first app that has been built on Linux instead of on a Windows system.

 


Sunday, October 26, 2025

Summer of 2025 swimming

No Indian summer this year — (Alt+0151) at least, that's my subjective impression. My swimming season started on June 1 and finished on September 22. I used to stretch it until November, but in the past few years, we haven't had a proper fall and have gone straight from summer to winter.

To sum it up:
18 × 0.5 km
51 × 2.5 km

... makes 136.5 km. That's 833.5 km since 2021. Looks like Greece next year.


Thursday, October 23, 2025

Using FFmpeg to add audio to your video

I have decided to add some background music to my smartphone gameplay casts, and it turns out that it's easiest to do this with ffmpeg. It's just a two-step process:

  1. Find out the video length.

    ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4

  2. Add background music with a fade-out effect (starting two seconds before the video ends, D-2 should be the video length returned by the previous command, minus two seconds).

    ffmpeg -i input.mp4 -i input.mp3 -map 0:v -map 1:a -c:v copy -c:a aac -af "afade=t=out:st=D-2:d=2" -shortest output.mp4

Sunday, August 31, 2025

Celestial Illumination for Android

Back in 2020, I was contacted by a company that was sourcing Android apps for the U.S. Army. I learned about the hackathon they organized and decided to compete with a few apps (apparently, developing only one was not enough for me). During the hackathon, the SolarWinds security breach was discovered, and the whole event was canceled. We didn't manage to present the apps in all competing categories; however, this one went through (and no, it did not win).

As there is no point in keeping your work on your drive only, I decided to publish it on Google Play anyway, and you know how the story goes... I got filthy rich—again (total revenue: $4.28 USD).

Today, I returned to the app after five years of neglect and updated it to comply with the latest Google Play Store policies. Yes, the app needs a complete redesign, but I'll leave that for another time, perhaps along with open-sourcing it as well.

In any case, if you are planning some kind of special forces operation, or if you are merely a search and rescue coordinator, pilot, sailor, astronomer, photographer, farmer, outdoor adventurer, event planner, researcher or scientist, you might find my app, Celestial Illumination for Android, useful.


 

Thursday, August 21, 2025

New word puzzle game - Worderer

Last updated: 2025.11.01

My new game is 'officially' released today and can be downloaded from Google Play here. Daily word puzzles will help you exercise your brain and expand your vocabulary. The top three world languages are supported: English, Spanish and Croatian. YouTube videos with game-play are here: en, es, hr.

I wrote the core of the game about a year ago, but put it aside after discovering a comparable word game that had fewer than 50 downloads in 10 months. Still, I seem to be haunted by unfinished projects, so I picked it up again and decided to release it anyway - even though I had told myself I was done with native Android development.

Give the game a try and let me know what you think!

2025.09.20 update

One month since launch!
Downloads so far: 10
Daily Active Users: 0

My current marketing approach has been posting in puzzle and game-related subreddits, but unfortunately most of those posts end up getting auto-filtered 😅. Getting visibility is harder than coding the game itself.

2025.11.01 update

Following advice from social media, I decided to promote Worderer by posting daily gameplay clips — not the latest daily challenges (as that wouldn’t make much sense), but the easiest ones from random previous days. I’ve been doing this for the past month.

Two months after launch, here are the results of my marketing efforts (31 videos posted):

  • Downloads: <50 (still)
  • Installed audience: 9
  • Monthly active users: 4

Here is how it went on each social network:

Bluesky — I couldn’t open an account without getting blocked.

Facebook (Worderer Page) — No interaction with my short videos, post insights showed only a handful of views at best.

Instagram — Zero followers, two likes across 31 posts. Shorts from the past week had 0 views. The most-viewed video (340 views) was posted on the second day.

Mastodon — No interaction at all.

TikTok — The most-liked video (2 likes) had just 15 views and was posted on the final day. The video with the most views (308) came the day before. Views improved slightly when I added background music — I found ragtime to be a good fit, since it’s light, cheerful, and often in the public domain (though one video still got muted on both TikTok and YouTube due to a false copyright claim). Only recently has TikTok allowed me to like other videos, and I still can’t follow anyone. Currently: 3 followers, 7 likes total.

X-Twitter — No followers, no likes. Statistics show between 0–8 views per post.

YouTube — Two longer videos (not shorts) got 0 and 2 views. Shorts ranged from 0–100 views, with only the first one receiving a like.

Since the number of downloads and active users didn’t increase, it’s clear that one month of daily posting hasn’t had much effect.

One general takeaway: it’s better to post screencasts in dark mode, since some platforms display video descriptions in white text.

Friday, August 15, 2025

Google Play Store app description text formatting

The StackOverflow answers here are outdated, so I have decided to take notes based on my own experiments. Here are the HTML tags that work and how they function:

  • <b>, <i> work in Google Play Store app, but not on the web.
  • <ul> doesn't work. There are no bullets inserted and opening and closing tag get interpreted as a newline character, so if you want indentation and bulleted items, use: &#8195;&#8226;&#160; (yes, there are many different space characters)