Tweaks I Gave to Your Xiaomi Redmi 9T

Addendum: Redmi 9T is now reported not to be able to allow you to make an emergency call in Japan if you use both SIM card slots and other conditions are met. “IIJmio may not be able to make an emergency call on the Xiaomi Redmi 9T for sale – iPhone Wired” is the only news article I could find that reports it in (a tad odd) English. IIJmio is a Japanese MVNO (Mobile Virtual Network Operator), just like Cricket Wireless and US Mobile are. But this problem seems to be not limited to any specific carrier. Xiaomi Japan released an official statement on the matter, which you can read in English by automatic translation.

I have no idea the same problem occurs in the US. Either way, they are supposedly working on a fix. You are immune from this problem if you are using just one SIM card slot anyway.

I am sending a Xiaomi Redmi 9T for a friend in the US as a gift (photo album compiled specifically for this friend). This article is meant for her and explains what she is going to get. The reader is assumed to be her, so when I say “you,” it refers to her, unless it’s “the ubiquitous ‘you.'”

This Redmi 9T is a version for the Japanese market. It is basically a global version, but it can handle more frequency bands than the global version. It has dual SIM slots, and is also SIM-unlocked, so you can use any nano-SIM cards with it. However, that does not mean that you can get service in the US because your Redmi 9T needs to be able to handle the bands used by the carrier. I believe you can use T-Mobile comfortably as long as you are in a city, and Verizon too, to a lesser degree. See “Xiaomi Redmi 9T for A Friend in the US?” for details.

The phone comes with the tweaks I am going to detail below. I really wish I could give it in a completely reset state, so you get to “smell the new phone smell,” as it were, but I cannot because resetting the device will wipe out most of the tweaks. I tried to document below all the tweaks I did. There are probably a few that I fail to mention here, but those are either trivial and/or common-sense. But you never know — there may be some you do not like. If so, I am sorry. I will also do my best to erase all of my personal traces, but that can only be done app by app. So there may be residual traces. For that also, I am sorry.

If you really do not like what I did, you can choose to reset it altogether (Settings -> My device -> Factory reset).

I believe my prior research was adequate, and my decision to take the route I took was justified with the knowledge I collected. However, there were certainties, and those certainties ultimately worked against our favor.

I wanted to give you an unofficial ROM which eliminates all the Chinese nonsense but comes with the latest improvements, and “root” it as well to enable additional features that are otherwise impossible. I did, and it works great. However, system updating is now not as simple as it would be otherwise. The problem is that I cannot revert it back to the way it originally was, because I swapped the bootloader.


Everything that comes in the standard package of Xiaomi Redmi 9T, including a transparent cover, a USB cable, and a USB AC fast charger, are all there in the original box, plus the following.

Cover and Strap

The handset will come with the cover you chose and a ring lanyard. I threw in an extra cover of a different color just in case. I do not know if it will suit your tastes, but I chose light orange because I believe that color will also stand out in the innards of your bag.

The ring parts are made of soft silicon. I use those myself. Personally I think they are better than metal ones; you could break your finger(s) with metal ones. If you don’t like them, no big deal, just swap them with whatever suits your tastes.

These covers come with a think rhombus-shaped metal plate each, which you can stick to the inside of the cover (see image). I guess this is useful if you have a magnetic phone holder.

Chinese cell phone manufacturers keep pumping out new models. You can buy their accessories cheap on, which is great. But the problem is that the accessories, particularly covers that are made to fit the exact physical dimensions of specific models, are not kept in stock for a long time. In the meantime, your cover will break at some point, and that is kind of the point of using a cover; you want it to sacrifice itself and absorb the trauma to protect the phone. So you will eventually need a replacement cover, but it may not be in circulation then. Hence the additional cover.

The covers come with a kickstand, but when you have the phone stand on its own with the help of the kickstand, do not add downward pressure to the phone. The kickstand is not all that strong and just a little extra force to it could easily break it. When you have it stand on its kickstand, the left side of the phone (when seen from the back), which has the power button and the volume buttons, comes on the bottom; you cannot push the buttons unless you pick the phone up (see image).

Oh, you can have you phone stand on its short side, if you want a portrait view (see image).

There was a small, one-sheet manual of sorts for the same style of cover I purchased for my own phone (see image). Somehow it did not come with yours. I did not expect to see anything new there, but actually ② is worth noting; I would not have realized this feature if I had not seen it.

MicroSD Card

A 128GB microSD card is already inserted. It is a Samsung Evo Plus card. I personally benchmarked it and found out that it gives better performance than the popular one from Sandisk with an A1 rating. I have all my current smartphones and my girlfriend’s use Samsung Evo Plus micro SD cards for this reason. The performance of MicroSD cards vary greatly from brand to brand, so I chose one for you so you will not run into performance issues because of an inferior card. The card came with a MicroSD-to-(standard)SD adapter, so I am including that as well (see image).

And I did not use the Adoptable Storage feature of Android. If you are curious about what it is and why I made that decision, read on.

Adoptable Storage is a feature introduced in Android 6.0, which allows you to have Android treat (all or part of) the MicroSD card inserted into the phone as if it was part of the internal storage. This could be good news with lower-end devices with limited internal storage, but it does not always work the way you expect. MicroSD cards cannot work as fast as real internal storage, so when you use it like internal storage, you will get lesser performance. This is inevitable and there is no way around it. The question is how much lesser, and it depends on how fast or slow your MicroSD card works.

Recently Android device manufacturers often hide this Adoptable Storage feature because they do not want users to use it. When laymen do, they often complain, “My Android phone is now very sluggish after I inserted a MicroSD card and chose Adoptable Storage!” Like I said, that phenomenon is bound to happen, and they cannot blame the phone manufacturers for it. Obviously many manufacturers do not want to deal with this kind of nonsense.

Xiaomi is apparently one of those manufacturers, and this feature appears non-existent on their recent Andoroid phones, including Redmi 9T. There is a way to activate it, but I chose not to go that route. Your Redmi 9T has 64GB of internal storage, and that should be enough for normal use, as long as you install apps on the MicroSD card where possible, and have all your apps (that you can configure) to save their data on the MicroSD card.

Unfortunately, the latter can be configured only on the per-app basis. Typical storage hoggers are camera apps, particularly if you shoot videos, video streaming apps if you save videos for offline use, Web browsers because you are likely to download files from the Web, and then possibly electronic book reader apps, and podcast apps. Make sure these apps are configured to save their data on the microSD card or “external storage.”

USB OTG cable

I am also throwing in a USB OTG cable (see image). This should come in handy when you want to connect an external USB device to the phone, such as a USB memory stick, perhaps even a USB HDD/SDD, or a USB keyboard and/or mouse. I specifically chose the cable with which you can also charge the phone at the same time. Try not to lose this cable because you may desperately need it one day.

When you want to use the USB OTG functionality, it needs to be explicitly turned on in the Settings menu.

NFC Unavailable

Redmi 9T is supposed to have NFC features on some select markets. Unfortunately, it seems Japan was not one of them. It is a big pity because if it did, you could use it as a virtual Hop Fastpass card in Portland.


Installation of ROM and Rooting

Your Redmi 9T originally came with the “stock” global ROM (“ROM” here means firmware; calling it “ROM” is not accurate, but is a common practice). I swapped it with so-called ROM or euROM for short, because the stock ROM had minor nuisances such as system apps showing ads while the euROM has some functionality enhancements. The euROM has a semi-official status, and you will not be missing any feature compared with the stock global ROM.

Because of this euROM, this Redmi 9T claims to be Redmi Note 9 4G, but it is (still) Redmi 9T!

I also “rooted” it, meaning, hacked it so we can have the “root,” or administrator privileges, which allow us to do things you cannot normally do, as you will see below. For rooting, I used a system called Magisk.

The whole process of installing the euROM and rooting it is documented in detail in “Installing euROM on Xiaomi Redmi 9T and Rooting it.”

Any app that is related to rooting is potentially dangerous. I have put them into a folder on the home screen called “*DANGER*.”

“Memory Extension”

This new euROM is based on Android 11 as opposed to the original Android 10, and has a feature called “memory extension.” It is turned on by default.

Battery Manager

Battery Charge Limit app, when enabled, automatically stops recharging when the battery reaches its 80% capacity. This is intended to prolong the life of the built-in battery. This behavior is possible only when the phone is turned on.

Redmi 9T has an impressive 6,000 MAh battery, so I would think even at its 80% capacity, it will still give you enough juice for the day. If you need to have it charged full for whatever reasons, disable this feature in Battery Charge Limit (see pic — you can turn it on and off with the orange toggle button on the upper right corner).

Addendum: I believe it did on your Redmi 9T when I tested it, but if this app does not work as expected, please see “Setting Up Battery Charge Limit App for Xiaomi Devices.” It did not work on my Redmi Note 10 Pro, and the remedy is there. This issue might be common among Xiaomi devices.

By the way, this app requires root privileges. If you wanted to achieve the same effect with an unrooted phone, you would have to control the charger somehow, which is a hassle to set up. It is not “portable” either because you can have that benefit only when using a specific, pre-programmed AC adapter.

I excluded this app from battery optimization. Obviously, it cannot serve its purpose if it gets killed while working.

There is a Magisk module, which more or less does the same thing, but I opted for a regular app, so you can easily turn it on or off as you wish.

Incidentally, even though Redmi 9T comes with a fast charger, which really helps when you need to recharge your phone in a short time, avoid using it when you can. Fast charging often results in making the battery hot, which is damaging to the battery. Read “BU-808: How to Prolong Lithium-based Batteries – Battery University” for more in-depth information on the matter.

Automatic Shutoff and Starting

Every day, the handset automatically shuts off at 4:00am and restarts at 4:10am (Schedule power on/off — should be found in the Settings app, but I cannot get there manually; use the search feature) because many technical issues can be resolved just be rebooting.

⇦ I found it. Settings -> Battery -> “Battery” tab, to the right of “Battery saver” tab -> “Schedule power on/off”

⇦⇦ You may want to turn this off entirely. The ROM 12.5.9 on my Redmi Note 10 Pro does not auto start apps and I have no other choice but to turn it off myself. If you experience the same problem, I am afraid you’ll have to do the same.

How to Make Sure Your Apps Get Run and Not Killed

See “How to Make Sure Your Apps Get Run and Not Killed on MIUI.”

Mi Remote

Redmi 9T has a built-in IR blaster, with which it can act as remotes for the devices you use. Mi Remote controller – for TV, STB, AC and more comes pre-installed in the stock global ROM, but somehow it is omitted in the euROM. So I installed it and made sure it works.

(Scroll down; there’s more!)

GCam Camera App

I have installed a GCam app. See “GCam and Other Camera Apps for Android” for details. As detailed in the article, finding the right variant of GCam is itself not a trivial job. I chose one from what little I knew and installed it. Ideally, I should make sure that it works on your Redmi 9T and you can take advantage of all the hardware capabilities of 9T’s camera, but to do that, I need to have quite in-depth knowledge of it. I gave up on doing it because even if I tried to do it, it’d possibly take months, and that would make your receipt of this phone that much later.

What I want to emphasize, whether you use the stock camera app, GCam, or whatever, is that Redmi 9T has a ultra-wide angle camera and a macro camera. This is not necessarily a standard feature for a smartphone, and it can be extremely useful depending on your usage. Personally I would use it extensively.

Both of the following shots were shot at my nearest Costco, with Redmi 9T using the stock camera app.

I have put all the camera apps, including the stock one, into a folder called “Camera Apps” (see image). I included Open Camera there because it can be quite useful. Also, an app called GCamloader, which is mentioned in “Download GCam for your device easily – xiaomiui.” It is supposed to help you find the GCam app that is compatible with your device. Redmi 9T is currently not in the list, but I am sure it will eventually make the list.

Addendum: I did not know this when I configured your phone, but GCam cannot save to an external microSD card, which is bad news if you use GCam a lot because your Redmi 9T’s internal storage is not necessarily great (64GB). I listed a few workarounds, but if you get stuck, please let me know.

Xiaomi Redmi 9T test Camera full features – YouTube” gives you an overview of the camera features of Redmi 9T.

Google Apps

The euROM does not include standard apps from Google, except essential ones such as Play Store. I installed some, but that may not be enough. All you have to do is head over to Play Store and install whatever apps you need.

F-Droid: A FOSS App Store

F-Droid is a “free and open source Android app repository.” and I installed the management app for it. Think of it as an alternative Play Store, which only serves free and open-source apps. Both NewPipe and AdAway apps below were installed from F-Droid.

NewPipe: A YouTube Viewer

If you want to watch YouTube videos without those annoying ads, or just listen to the audio portion of them, use NewPipe. You do not need YouTube premium membership. The only downside of using NewPipe is that whatever you do with it (such as viewing history, favorites, etc.) is not propagated to your experience on the YouTube website or the official YouTube mobile app through your YouTube account. Use the F-Droid app to update NewPipe.

Oh, downloading YouTube videos or just the audio portions of them to your device is a snap with NewPipe. This will come in handy when you have to watch the same video over and over. Once you download it, you can watch it as many times as you like locally, even when you are offline.

AdAway: An Ad Blocker

To prevent unwanted ads from showing, I installed AdAway after referencing “The best ad blocker apps for Android – Android Authority.” This also requires root privileges. Use the F-Droid app to update AdAway (note to self: ‘Systemless hosts’ had to be enabled in Magisk Manager’s Settings page).

Adway is configured to run a Web server on its own and show replacement content in place of an ad. To be able to do that, it has to install a certificate, and that is why you see “Certificate authority installed” notice. If you do not like this, you can change this in its settings menu.

Again, there is a Magisk module that serves the same purpose, but I opted for a regular app, so you will know it is there, and can turn it off if you want to.

Teamviewer Quick Support

I installed TeamViewer Quick Support in case you need help from me with handling the phone. Or perhaps it could be me wanting help from you. At any rate, it is a remote screen sharing and manipulation app, but do not worry — unless you start the app and explicitly give me the access code that it shows, I will not be able to access your phone.


My ulterior motive of sending you this phone was having an option of using a real cell phone number in the US on this phone. In reality, the chance of me having to resort to this option is very, very slim. It’s good to have this option as the ultimate backup plan, but at the same time, I do not want to use it unless absolutely necessary.

After spending hours and hours trying to find a solution for this, I concluded that the best solution is actually to create a simple program by myself. With other candidates, I cannot guarantee that I will have no access to the other SIM card, i.e., yours.

My solution requires that the SIM card for my own use be used as SIM 1. Use the SIM 2 card slot for your own SIM card (see image). Notice the numbering is counter-intuitive — well, at least, to me (note to self: internally, SIM 2 is indeed 1 and SIM 1, 2 — program Automate accordingly). Unless you explicitly turn on my program yourself, the phone does absolutely nothing out of the ordinary regarding text messages, and you are free to use SIM 1 for yourself too if you’d like as long as I do not have to.

Let’s say somehow I find myself in a situation where I need to resort to this last option. I will arrange for a SIM card and have it sent to you. I need you to put it in the SIM card tray of your Redmi 9T as SIM 1 (see the image above). I need you to activate the SIM 1 SIM card slot on your phone (Settings -> SIM cards & mobile networks -> tap on “1” -> tap on the toggle to enable the SIM 1 slot). See the images on the left. My SIM should now be operational.

Automate's icon

Automate’s icon

Now on to the software setup. All of the SMS-related apps are placed in the “SMS” folder on your home screen. Among the apps there, you will find Automate. When you launch Automate, you will be presented with a list of programs created in Automate.

In the list, find “Automatic SMS forwarding to email….” Tap on it (see image). In the screen that opens, tap on “START” (see image). The program starts, and the screen changes. Now you will see “STOP (1),” instead of the previous “STOP” (see image). This indicates that the program is running. That’s it. You do not have to do anything else.

Even if you shut down the phone, the program will resume running as soon as you restart the phone (because “Run on system startup” is enabled in the Settings of Automate). To stop the program, follow the same steps, except tapping on “STOP” in the end. Automate is excluded from battery optimization.

One Google accounts of mine is intentionally left on your Redmi 9T. I made this account specifically to allow emailing for text forwarding. If you feel uncomfortable about it, you can delete the account, but I will need you to add it again if I should need to resort to SMS-to-email forwarding on your device. Alternatively, it can be set up so the email will be sent from your own Google account.

If you have doubts about the safety of the program, feel free to inspect it by yourself. Click on the pen/pencil-in-circle icon on the lower right corner, and the program will be shown for your perusal. It really does not do anything fancy — it just mindlessly forwards the incoming text messages to SIM 1 (somehow internally 2) to my email address.

FM Radio

Unlike other sections, this section is about what I did not do.

The built-in FM radio app covers the 87.0 -108.0MHz range. Since in the US it starts at 88.0 MHz and ends at 108.0 MHz, the app completely covers the used range in the US. Incidentally, in Japan it is 76 – 90MHz, so there are FM stations in Japan whose broadcast you cannot listen to with the built-in app.

Personally I greatly value the availability of an FM radio app in a phone because that gives you one more way to get information from the outside world. The FCC apparently has the same opinion, at least it did back in 2017. When a large-scale natural disaster strikes, it can be what separates life and death. People tend to take their cell phone for granted and assume it is always there, but if the disaster is big enough, the Internet access can easily be disrupted.

So I wanted to extend the frequency range of the built-in FM app. It seems doable, but it also sounds like it requires a lot of work. So I decided to put it on the back burner, and give the handset to you without any modification to the FM radio app. The modification would mean a lot to those of us who are living in Japan, but you are fine with the app as is anyway as long as you are in the US or most of the countries in the world.

To be able to use your FM radio app on the go, always carry a wired headphone/headset with you, which acts as an antenna. I cannot emphasize this enough because once you have a Bluetooth headset, you tend not to carry a wired one with you any more.

Transferring Apps and Data from Your Old Phone

For the methods on how to transfer apps and data from your old phone to your new Redmi 9T, see “Transferring Apps and Settings from Your Old Android Phone to A New One.

Backup Methods

Android itself offers backup facility, but it is not as thorough as the two methods I am going to explain below. One is to use an app called Titanium Backup, and it works only on a rooted device. The other is to use OrangeFox Recovery.

Their features are as follows:

  •  Titanium Backup backs up on the per-app basis. So if you have an app that is acting up, you can easily revert to its previous state with TB— provided that you have made backups using TB before. The free version of TB can only make one backup for each app.
  • OrangeFox Recovery backs up on the per-partition basis. So, let’s say your system gets unstable and you have no idea why, but you know for certain it was fine up to a certain point. In a case like this, backups made with OFR could be a life saver; you can bring the whole system back to the previous state provided you made a backup then. There’s no limit for the number of OrangeFox Recovery backups, so I suggest you make backups whenever you are about to give a big change to the system.

The following videos I shot will hopefully show you how to use them.

Titanium Backup

How to Make Backups Using Titanium Backup – YouTube

OrangeFox Recovery

See “How to Make Backups using OrangeFox Recovery on Xiaomi Redmi 9T – YouTube.” To boot into recovery when your Redmi 9T is off, press the volume up button and the power button at the same time and not release them, until you feel the phone vibrate. This video does not show it, but when the backup is done, you will be prompted to reboot the phone.

System Update

The big concern I had was whether applying a system update, when there is one, will a stress-free experience for you or not. I was hoping that I chose the right tool for it (OrangeFox Recovery), but unfortunately, it does not look so. This is due to the fact that this instance of OrangeFox Recovery does not have the necessary feature; it is only an unofficial version for Redmi 9T and it seems to be lacking it.

So, sorry, the updating process is a bit tedious. I recorded the whole process in “Upgrading euROM on Xiaomi Redmi 9T using OrangeFox Recovery – YouTube” (the video clip below). The procedure is essentially as follows:

  1. You get notified of an available update by the Updater app.
  2. Have the app download the update.
  3. When done, the app prompts you to “Check MD5 & Install.”
  4. When you agree by tapping on the button, your phone reboots into OrangeFox Recovery.
  5. Know from this point onwards, you need to be extremely careful when you interact with OrangeFox Recovery because you can easily corrupt the system and make it unusable.
  6. Find the update file (.zip) and its “signature” file (.md5) in /sdcard (not /sdcard1).
  7. Copy those two files to the external microSD card, i.e., to /sdcard1/_ROMs. It’s important those files are in the real microSD card. (In the video, I used /sdcard1. Actually they can be anywhere as long as they are on the real microSD card and you can find the files in the next step, but probably it’d be best store it in /sdcard1/_ROMs for organization purposes.)
  8. Click on the .zip file in /sdcard1/_ROMs. You will be asked if you want to install it. Make sure all the checkboxes are checked in, and proceed to install it.
  9. The installation process will take time — 5 to 10 minutes. Just be patient.
  10. If the installation succeeds, your phone reboots to a normal state.


Another unfortunate thing is that this system update deactivated rooting, so it needs to be re-rooted. The method I show in “Rerooting Redmi 9T Using OrangeFox Recovery – YouTube” (the clip below) is actually not the recommended method, as explained in “How to Install Magisk to Root or Customize your Android Phone,” but it can get the job done.

Additional steps that may be necessary after rooting by flashing Magisk zip file – YouTube

Hope you’ll enjoy the phone!

Postscript: Successful Delivery

Originally, I wanted it to be delivered to her by Christmas. I failed in that. Then I wanted to have it shipped by Christmas. I failed in that also. Then I wanted to ship it by the end of 2021, which I finally succeeded in. They accepted the package on December 30th, and she received it on January 7th (see the tracking info at the end). So it took about 10 days. It is about three times as much time as the “usual” delivery time by EMS, but perhaps not all that bad considering the recent reduced flights and all.

As a matter of fact, I brought the package to the post office on December 29th. I was planning to ship it by small packet, which is based on SAL (Surface Air Lifted), but the SAL service was not in operation between the US and Japan due to the on-going Covid-19 pandemic.

The only choice left, other than out-of-the-question surface, was pricier but faster EMS (Express Mail Service). However, the US no longer accepted handwritten labels and senders had to register the package info electronically and print the necessary documents using Electronic Advance Data (EAD). So I had go go back home, do it, and come back the next day. The thus created document was rather complicated (the link is accessible only by her and me).






確かに海外在住者が5回日アマゾンで電子書籍を購入した後,それ以上購入できなくなった,ということをよく報告している。パッと調べた範囲では “Kindleの本は海外でも買えるのか、Amazonに質問してみた” が,実際のアマゾンのカスタマーサポートとのやりとりも掲載していたりして信頼性が高そうだ。


  • 請求先として現地の住所を登録し,クレジットカードも現地発行のものを使う
  • VPN利用








Windows用のKindle電子書籍ビューワKindle for PCで日アマゾンサイトで購入した電子書籍が表示されなかった(とそのとき思った)のでカスタマーサービスに問い合わせして,「同じIDのアカウントがある場合常に米アマゾンのアカウントが優先されるので,日アマゾンのアカウントで購入した電子書籍を見たければ,米アマゾンアカウントを廃止するか,日アマゾンで別のIDのアカウントを作成するしかない」という説明を受けた。

その後自分でいろいろテストした結果わかったこと: 同じIDであっても,パスワードが別になっていれば問題ない。米アマゾン用のパスワードを入力すれば米アマゾンのアカウントと正しく認識されるし,日アマゾン用のパスワードを入力すれば日アマゾンのアカウントだと正しく認識される。つまりカスタマーサポートの言っていたことは誤りと結論づけざるをえない。

Windows用Kindle for PCでのアカウントログイン画面では最下部でログイン先が指定できる。ここでを指摘することがキモなのではないかと最初は思われたが,そこを “” と指定していても,パスワードは日アマゾンのアカウント用のそれを使えば日アマゾンのアカウントでログインできる。



















  • 要件A: 生徒は教師とは別に本の任意の場所を自由に見ることができなければならない ー 教師側が何か内容について質問する際,その答えを得るために生徒が自分で本の中をその場であちこちを見て回れなければならないから
  • 要件B: 必要があれば生徒は教師が指定した場所にすぐ移動できなければならない









  • 基本生徒もビューワで本の中で制限なく自由に移動し,望むページを開くことができる。
  • 生徒側ビューワでは教師が見せようとしている位置が常に表示される。だからといってページそのものが自動的にビューワ内で開かれるわけではない(このリストの最後の点参照)。生徒が望めば,そのマーカを示すボタンをクリックするなどすることで,その場所が自分のビューワで開かれる。
  • 書籍内の位置を示すのには,今表示されているページから大きく外れていることもあるというのが前提なので,簡単にはスライダーバーや,より理想的にはページサムネール列の中で示される。
  • 教師がそう指示した際には,その指示した場所が生徒側ビューワで強制的に開かれる。ページ移動を伴う場合は,それがアニメーションで表示されるなどすると,生徒にはどちら方向に移動したかが直感的に分かる。








…と思い込んでいたがそれは誤りだった。だいぶあとになってやっと気づいたのだが,Kindle for PCではAZW3形式でリフロー型の電子書籍でも,おそらくは本来の印刷版でのページ数が表示される。表示フォントサイズをどれだけ変えようと,その値は変わらない。「リフロー型ならページ数なんて無意味」と最初から思いこんでいたため,よもやそんな機能があるなどとは思い至れず,全くそこに注意が払えてなかった。

⇦ まだしっかり確認が取れてないが,必ずしも印刷版のページ数とは合致しないもよう。ただし双方ともKindleで同じ電子書籍を見ている限りそれは問題にはならない。

ちなみにEPUB形式に変換したのをCalibreのE-Book Viewerで見ると,ページ数表示などは全くない。ああ…昨日かなりの時間をこの問題の解決のために割いたのに,実は普通にKindleアプリを使うだけでよかったのか…。
























EPUB形式であれば,それをGoogle Driveに保存しておけば,それをPlay Booksで閲覧できる。Google Driveの機能として他の人と共有しておけば,その人も同じことができる。

Play Booksの “Upload files” ボタンをクリックしたところで,ローカルファイルをアップロードすることしかできないように思うが,実はGoogle Driveからのインポートも可能

~to Google BooksというGoogle Driveプラグインのインストールは拒否される

~to Google BooksというGoogle Driveプラグインのインストールは拒否される

このプロセスを簡略化してくれるであろうDrive ePub, PDF book to Google BooksというGoogle Driveプラグインがあるんだが,インストールしようとすると右図のようなエラーが出てインストールできない。

特定の供給元に依存しない電子書籍管理” でいろいろ考察してみたものの,電子書籍データをGoogle Driveに入れておいて,それをPlay Booksで閲覧するという形にするのが結局一番楽ちんなのだろうか。これで以下が可能:

  • 自分で保有する電子書籍ファイルをPlay Booksで閲覧することが複数のデバイスでできる。Webアプリもモバイルアプリも利用できる。Googleアカウントが同一である限りしおり,コメントやマーキング(以下簡単のために「アノテーション」と総称)は共有される。
  • 他人に電子書籍ファイルを共有し,その人もPlay Booksで閲覧できる。

不可能なのは,他人へのアノテーションの自然な形での共有。自分のアノテーションもGoogle Documentとして保存されるのでそれ自身は共有できる。他人のアノテーションも同様に共有してもらうことはできる。が,それらがマージされて一括して見ることができるわけではない。Play Booksビューワで自分のアノテーションが本文に併記される形で表示されるように,他人のアノテーションが併記される形で表示されたりはしない。

2017年の “A Powerful Partnership Brings Open Annotation to EPUBs : Hypothesis” がこの点について将来性を感じさせる。DOIなどでIDが共通する文書に関するアノテーションはHypothesis APIを使って作成されて管理されているものであれば,文書自身がPDF形式であろうがEPUB形式であろうが,自分が作成したものでろうが他人が作成したものであろうが合わせて表示されるとのこと。

Overview of the Hypothesis System : Hypothesis” がイントロ。Hypothesis APIは策定されている。Hypothes.isに対するwebsocketでのアクセスがベース。ユーザとグループの2階層のシンプルなアクセス制御。Hypothes.isのサーバ単独に完全依存する形なのはデザインとしていいとは思えない。

パートナーシップを組んでいるはずのThorium Reader (PC, Mac, Linux用)やWebアプリモバイルアプリで実際 APIによるアノテーション機能がサポートされてるか確かなところはわからなかった。

Photo U TVを送る君へのメッセージ

ポータブルTVのPHOTO-U(フォトユー) TV (以下 “Photo U TV” )をお送りします。ZTE製で中身は実はAndroidだそうです。サポートページマニュアルのページ詳細版マニュアル(PDF)




  • ワンセグ・フルセグ双方に対応
  • SDカードを挿入すれば,それに番組録画も可能
  • 充電池を内蔵しかつ防水なので,任意の場所(風呂場を含めて)でのTV視聴が可能(電波が届けばリアルタイムで,ないしは録画済み番組)





  • 本体は半分ぐらいまで充電。
  • リモコンのCR2032ボタン電池を新品に交換。



また,本体裏面下部の「メンテンナンス専用」とラベルのついているmicroUSBポートを介しての給電も可能であるということを今回初めて知りました。専用のACアダプタが生きていて使えているうちはこの情報に価値はありませんが,万が一壊れたときにはこれは有用な情報になってきます。専用ACアダプタは5V 1.5Aの出力があるようなので,それに匹敵する出力のあるUSB ACアダプタが必要になるでしょう。




理想的シナリオです。ただおそらく現実には,仮に屋内まで電波が届くとしても,特定の場所にPhoto U TVを置かないと電波の入りが不十分だという可能性が高いです。いずれにせよ,内蔵アンテナをしっかり伸ばしてみてくださいね



実際そこにTV信号が来ている場合,それとPhoto U TVの「外部アンテナ端子」と接続するには富士パーツ アンテナケーブル変換 3.5φ ミニプラグ変換ケーブル F型と3.5φ ミニプラグ 3m FP363のような製品が利用できるはずです。もしこれが利用できるのであれば,これが画質の面からはベストな成果をもたらしてくれます。ただし,有線ですので可搬性は損なわれます。



このタイプの製品で私が知っているのはBUFFALO ワンセグ受信用室内延長アンテナ DH-OP-SAのみです。可搬性を損なわないいい選択肢なんですが,決して安価ではないのが残念。以前はもっと安いのあったんですけどね。

au PHOTO-U TV 防水・フルセグ対応の 10.1インチ フォトフレーム(キャンペーンで 2年間基本料金無料。0円で出来るフルセグ受信感度改善方法)” に紹介されている。同軸コンセントにネジリッコのような針金を突っ込む,という乱暴な方法も,以前自分が試したときにはいくらかは効果があった気がしました。


ここは一般的ニーズがあるところなので多数の製品があります。Photo U TVは4Kにはほど遠い解像度なので,4K用のものである必要はありません。

ただ,Photo U TV本体に接続するところでミニプラグが要求されるので,[フジパーツ][整合器]3.5mm ミニプラグ(オス)-F型接栓(メス)(75Ω整合器)/FZ-365のようなものを併用し,プラグ形状を変換する必要があります。



ただし,まだ手元にPhoto U TVさらに1台余っているのに現状使ってないくらいなので,「だったら早く返さなきゃ」などと気を使ってもらう必要は全くないのでご安心を。あくまで「どうせ捨てるくらいなら」という話です。別途,10年以上古いiPad 2上をPCのサブディスプレーとして有効利用しようとするぐらいの,ものが捨てられない昭和の人間なんです。 (^^;;

古iPadをWindows PCのセカンドディスプレーとして使う

iPhoneだけでレッスンを受けておられる生徒さんに手持ちの古iPad 2上をご活用いただけないか考えたことの延長で,自分が利用できないかも考えた。タブレットの画面の大きさを生かして,Windows PCのサブディスプレーとして使用できないかについて調べた。

Use iPad As Second Monitor In Windows 10 Wirelessly Free” で Spacedesk | Multi Monitor App | Virtual Display Screen | Software Video Wall について知った。 幸いにしてiOSクライアントはiOS 9.3.5のiPad 2にすらインストールでき利用できた。もちろんセカンドディスプレーと化したiPadの動作は遅く,動画をそこで再生しようとでもするものならカクカクの紙芝居になってしまう。しかしほとんど変化しないものを表示させるのには十分だ。Androidクライアントも用意してあり,AndroidタブレットやAndroid電話機も同じように利用できるのはポイントが高い。ただし,サーバはWindows版しか用意されていないのが大変残念。

使い込んだわけではないのだが,短時間試した範囲では,仮想ディスプレーの解像度はクライアント側で設定したものが有効(サーバ側でも設定できるかのような設定枠はあるが),ポートレート/ランドスケープの切り替えや文字の倍率などはWindows側のSettings -> Displayで行うのが有効になる模様。

Spacedeskはなんといってもサーバ,クライアントとも無料なのが最大の特徴。有料な手段は他にもある。以下の記事にもあるように,Slashtop, Air Display, Duetなどが選択肢としてよくあげられる。

UltraVNC 1.3.0から追加されたVirtual Display機能を試してみる: blogの辺境 ~目指せblogの一市民~” にあるようにUltraVNC VNCのバーチャルディスプレー機能を自分も試してみたが,できなかった。クライアントもUltraVNC専用のものを求めているようで,iPad 2にはそもそもそれが用意されてない。AndroidもはっきりUltraVNCを名乗るクライアントは見当たらない。

どうも文書が拡散している感じで確信がないのだが,RealVNC (最近のマーケティング名は “VNC Connect” ではLinux版サーバで,しかも有償のライセンスをもっているときのみ同様なことができそう

Deskreenは基本画面共有ソフト。WebRTCに対応したブラウザに画面全体,ないしアプリウィンドウのみを共有することができる。サーバ側がWindows, Linux, Mac OS全てに対応しているのはよいが,手持ちのiPad 2はWebRTCに対応したブラウザがないのでそれとは組み合わせられない。



Remote SMS Management of A Dual-SIM Android Phone

I am going to send a Xiaomi Redmi 9T to a friend in the US partially for a selfish reason (shared album compiled specifically for this friend). I have installed the euROM on it and rooted it, but that part has nothing to do with this article.

That selfish reason has much to do with the fact that Redmi 9T is a phone with dual SIM card slots. I want to have the option of using one slot of the two and having my own SIM card there. Recently my online banking site in the US and the US Paypal site started imposing stricter restrictions on the phone numbers for verification purposes and they no longer even send verfication SMSes to VoIP numbers such as my Google Voice number. This is a problem for me, and for many American expats now living overseas.

So far I have been working around it by turning off two-factor authentication on the per-service basis, etc., but you never know when they decide to make verification-by-sms-to-actual-cell-phone-number mandatory. Also, without an actual cell phone number, you are pretty much locked out of any US financial services such as Zelle, which I was able to use before, and the likes of Venmo.

I would like to have a backup plan — a plan where I can use an actual US cell phone number. When I tried to work around the Paypal’s authentication-by-SMS by using a friend’s cell phone number, it was rejected. This fact seems to indicate that the number being a real cell phone number is not enough. They obviously dig deeper than that; maybe it has to be registered in my name.

So I need to set up my friend’s dual-SIM phone Redmi 9T properly in advance, so if the need should arise where I need to use a real US cell phone, I can. A dedicated private photo album on this matter.


The requirements I have for the app/system are as follows:

  • SMS functionality
    • At the bare minimum, the incoming SMSes to the designated number are all automatically forwarded to me.
    • Even after attempts to forward, SMSes will remain on the device, so my friend can manually relay them to me if need be.
    • Optionally, but ideally, I can send SMSes from that number as well. (If I were to pay to have my own number, I might as well be able to do this too.)
    • I should be able to see (and reply to) incoming SMSes on my phone, tablet and PC.
  • Privacy
    • Ideally, it is physically impossible for me to do anything else, so she will not feel her privacy can be invaded.
    • Conversely, none of critically important info of mine is revealed to her (it should not be used in the first place).
    • Non-requirement: my SMS exchanges are hidden from my friend. I do not intend to engage in anything shady.

Support for Dual SIM Cards

As far as I know, Pulse SMS (Android app) is the only app/service that officially states that it can handle dual SIM cards. MySMS claims to access only the primary SIM card slot, and so does MightyText — but their claims turned out to be not entirely true.

PulseSMS is free only when it is used as a stock SMS app replacement; any functionality beyond that, including remote text sending and receiving, requires a commercial license. The pricing scheme is not disclosed on the official website, and it tells you to check with the app, so I did (see image). The monthly fee is 210 yen; the yearly fee, 2,100 yen; and one-time fee, 11,100 yen. Quite expensive. According to “Pulse SMS is a premium Android texting app. Here’s what you need to know – GetConnected” (), though, it is “$0.99/month to unlock the features, $5.99 for a full year, or $10.99 for a lifetime membership” — way more reasonable.

Allegedly, GitHub – klinker41/android-smsmms: Library for easily sending SMS and MMS for Android devices is used by Pulse.

Come to think of it, though, it is actually better in this particular scenario that whatever app I am going to use has access to one of the SIM card slots only. ⇦ Not quite. Both MightyText and MySMS forward text messages to both SIM cards when both SIM cards are activated. The details below.

⇦ Turns out that this is true only when both of the SIM cards are activated. When only one of them is activated, the apps below will work with that SIM card, whether it is in the primary SIM card slot or in the secondary one. If only my friend’s SIM is there or activated, then all of the apps that are there for my own SMS needs have to be turned off; otherwise her personal SMSes will be revealed to me.

MightyText and MySMS

MightyText (their Android apps; developed in the US) and MySMS (their Android apps; developed in Austria) are very similar in scope and functionality. Both seem to be currently maintained. With the Android app you install in an Android phone as the core (MightyText’s, MySMS’s), you can remotely read incoming texts to that phone and send outgoing texts from that phone, using their Web apps, tablet apps, Mac/PC desktop apps and Chrome extensions. That’s quite an impressive array of clients. MySMS has a slight edge here, because it offers an iPad companion app as well.

You can also install their tablet apps on an Android phone (i.e., my own), so you can manipulate texts on a different Android phone (i.e., my friend in the US’s). The UI will be a bit awkward because it is designed for a tablet, but it is still usable. You probably won’t be able to find those apps in Play Store on an Android phone; you will have to get the APK files from such sites as and sideload them into your phone.

The big difference between MightyText and MySMS is that while MightyText requires (only) Android 4.4 and up, MySMS, Android 6.0 and up. This means, though not related to the topic at hand, that only MightyText can be used on those Gratina-brand Android 5.1.1 phones disguised as feature phones (you’d have to install Google Mobile Services, though). In the same token, MightyText’s companion app for tablets requires only Android 3.0 and up. That’s quite remarkable. MySMS’s requires Android 6.0 and up.

Both offer Chrome extensions, but they are primarily for handling notification. MightyText’s extension gives you many options, including the time for which a notification is displayed (see image). MySMS’s does not even have an options page. By the way, MightyText has this different extention that integrates MightText’s features into Gmail and Facebook web apps.

When I look at premium (“Pro”) features of MightyText and those for MySMS, I see I will not be missing out on critical features with free accounts, except a few points regarding MightyText.

  • MightyText has a severe 50 texts a month cap with a free account; with a Pro account, you do not have this cap.
  • MightyText Pro supports bridging with email.

There does not seem to be any similar text number cap for MySMS free accounts. Email bridging would be nice (see a section on it below), but I can make do without. Saving previous texts is not important for me because most of my incoming texts will contain verification code, which will be useless anyway after a while. Labeling is presented as a Pro feature of MightyText but actually you can use it with a free account.

MySMS works with WebSMS providers (see image). This may reflect the fact MySMS is from Europe, where WebSMS seems to be utilized often.

As to the incoming SMSes to the second SIM card, MightyText and MySMS handle them differently. MightyText handles them exactly as if they were sent to the first SIM card, and those will be relayed to their clients. If you reply to them on a MightyText client, that message will be sent from the first SIM card. MySMS, on the other hand, does not respond at all to incoming messages to the second SIM card. Normally, this would be considered a limitation, but in this case, it is considered a feature, because I do not want to get any information as to what happens to my friend’s SIM card. This point alone determines my choice for the task at hand; it is MySMS. ⇦ I was wrong. Both MightyText and MySMS treat incoming text messages to the second SIM card exactly the same way, i.e., they treat them as if they were sent to the first SIM card, and show them to you. This point alone makes both MightyText and MySMS unsuitable for my needs because I will be shown texts to my friend as well. They do not even show you at which SIM card they received a particular text. If you reply to those texts on their clients, that message will be sent from the first SIM card by default. However, MySMS’s web client offers an option of choosing which SIM card to use when replying (see image). “SIM #2” here is actually the first SIM card in Redmi 9T.

Generally, MightyText’s clients respond almost instantaneously to incoming messages (the same goes to SMS Gate below) while it constantly takes MySMS’s much longer, oftentimes a few minutes but sometimes a lot longer. Delays of 20 minutes are not that uncommon. This might pose an issue if what you want to receive is a one-time password with a short expiration time.

So we already know neither MightyText nor MySMS works in the intended scenario at hand. But if I were to use either in the future, I would choose MightyText because I like its UI better and its snappy response to incoming text messages. But that’s only if its 50 texts/month cap suffices. Otherwise, MySMS.

If you have multiple phones to monitor and would like to do it in one central place, then neither MightyText nor MySMS will be a good candidate. They require one Google account per device, and their clients do not support multiple Google accounts simultaneously. SMS Gate, which we will see immediately below, can only handle SMSes and does not have all the extra bells and whistles of MightyText and MySMS. But if you are okay with it, it will be a better fit.

Bidirectional SMS-Email Bridging

In the past, there were some apps that provided bidirectional bridging between SMS and email. I tried Relay ME, Text via Email and SMS@Email before (see the following articles I wrote then), but they are now all gone from the Play Store.

However, SMS Gate still exists (repository, issue tracker) and requires only Android 2.3. When I gave it a try last time in early 2020, I concluded it was too buggy. It seems to have been continually updated, so it may be worth a second chance.

It seems to work decent now. If you use it with your Gmail account, you will have to acquire an “app password” for it. SMS Gate somehow fails to log in with that password for a while, but after a while, somehow it succeeds. Even after that, it periodically reports that it failed to log in. You will also have to exclude SMS Gate from battery optimization.

When two SIM cards are both activated at the same time, SMS Gate behaves in a bit unexpected way. The expected behavior is that incoming messages to the secondary SIM card are entirely ignored. Instead, they are treated as if they had been sent to the primary SIM card. They are “forwarded” to the Gmail account and they appear to have been sent to the primary SIM card. There is no indication otherwise whatsoever. If you reply to that email, then that message is sent as a text message from the primary SIM card.

Needless to say, this could easily lead to a disaster. Unless this issue is resolved, I cannot use it on the Redmi 9T for my friend. In the meantime, I made a request to fix this issue. Surprisingly, the author replied very promptly, and says he has addressed the issue. I have not tested the revised version of the app because it is not available on F-Droid yet. However, I asked the author for the option to deal with one of the slots only, which he refused, so I cannot use SMS Gate this time. As I wrote in a comment in the same thread, SMS Gate is still a great tool if you want to deal with all the text messages in one central place when you have multiple phones and multiple lines.

At the end of the day, implementing an equivalent gateway by yourself with Automate may be a fast solution. The SMS-to-email bridging is trivial to implement; Automate can distinguish text messages to two SIM cards, so I can make it so I will not see the text message exchanges my friend will have with her own SIM card. Bridging in the reverse direction, i.e., email-to-SMS bridging, takes more effort. You will have to read email, but you cannot do it with Automate alone. You could use Tasker Email tasker plugin. K-9 Mail and Aquamail are said to be able to work as Tasker plugins, but I have not looked into the details.

Incidentally, while testing, I looked into how Automate sees incoming texts with its SMS Received block when both SIM cards are activated on Redmi 9T. Interestingly, the Used subscription id value was 1 when the phone received a text message at SIM 2, and 2 when at SIM 1. In other words, it was exactly the opposite of what you’d expect.

Bi-Directionality via Other Means than Email

With the Android IFTTT app, you can manipulate SMSes from IFTTT. Since there is an applet that responds to an incoming SMS, it is safe to assume it provides bi-directionality. Too bad IFTTT is now price-prohibitive for me.

Whey you google with keywords “android sms gateway,” you see some commercial offerings. Most of them seem to be intended for commercial bulk SMS sending. Oftentimes their apps, once published on Play Store, are no longer there, possibly because Google cracked down on such apps; they can easily be used for spams. Those are not a good fit for my needs.

Incoming SMS Forwarders

If I settle for just SMS forwarding, there are many apps that do it. Among them, SMS Forwarder is the only app that explicitly says it supports dual SIMs. It offers sophisticated features and you can build quite elaborate filters, but it is an overkill in this case.

In addition, there is SMSsync (available from F-Droid), which POSTs incoming SMSes to specified URLs.


Microsoft provides Your Phone app for Android, which allows you to access your Android phone from your Windows PC and manipulate SMSes there, for example, but it requires the Android phone and the PC be connected to the same wifi, so it does not work in this scenario.

The likes of AirDroid has so much more functionality than SMS manipulation that it is unsuitable in this case.


I am not going to this time, but I have been wanting to do either of the following or both:

  • Bi-directional bridge between SMS and MQTT. Should be possible by combining Automate and MQTT Client, which can act as a Tasker MQTT plugin.
  • Bi-directional bridge between SMS and Matrix. There’s SmsMatrix but it requires Android 6.0 and it does not support end-to-end encryption. Beeper, a “batteries included” Synapse Matrix server, seems to support it (I do not know how yet), so I guess I will be looking into it eventually.

In both cases, handling of dual SIM cards will be an issue.