How to Install and Run Jaangle in Linux

Jaangle is a lightweight and feature-rich music player/organizer for Windows. The program seems to be no longer in active development with its latest release (v 0.98i.977) dating back to 2012.

Nevertheless, the player is still functional save for some few online services that are currently broken due to API changes over the years it’s been out of development.

Personally, I've been a loyal Jaangle user since around 2013 (at least that's what the program reports to be its installed date). In those 6 years, the player has given me solid service with my music collection growing from a paltry hundred to close to 10,000 songs to date.

On top of this, are well curated collections with album arts, artist pictures, biographies and star ratings all of which I wouldn’t have possibly organized without the help of Jaangle. My investment in the player is thus considerable and over the years it has arguably been the biggest impediment for me switching to Linux for good.

Well that's until recently when I decided to give Manjaro another try on my desktop. This time round I got some very good alternatives for my Windows program so much so I could for once see myself making the switch for good.

When it came to Jaangle, I was lucky to found two potential candidates: gMusicBroswer and Sayonara. However before I could reluctantly settle for either, I decided to embark on one last try to get Jaangle to run properly on Linux.



Why doesn't Jaangle run properly under Wine?

So as you may or may not know getting Jaangle to install in Linux is usually not the problem. To do that you only have to install Wine then run the Jaangle installer.

Jaangle will be installed successfully but on opening you'll be greeted with an error that it cannot create the database it uses.

Now I'm quite familiar with this database having over the years discovered I could easily edit it to fix some common errors in my collection. The database uses the Jet Database Engine (*.mdb), a proprietary format developed by Microsoft that can be opened and edited using Microsoft Access.

Previously I had presumed Jaangle creates this database entirely on its own. However, after some research online it became evident Windows has the Jet Database Engine built into the operating system and this has been the case since Windows 2000.

Eventually in my search I stumbled on some Linux users who were having issues running other programs dependent on the Jet database under Wine. It's here that it occurred to me I could try applying their solutions to get Jaangle to work under Linux.

The solution is fortunately rather simple: we only need to install the Jet libraries for Wine.


Step 1: Install Wine, Winetricks and Jaangle

1. Go to your package manager and install Wine and Winetricks.

2. While still connected to the internet open Winetricks. If you're using a 64-bit distribution you may get some warnings. Click OK to dismiss them.

3. In its list of options choose Select default wineprefix and click OK then select Install a Windows DLL or component.

4. In the list of packages select jet40 (MS Jet 4.0 Service Pack 8) and mdac28 (Microsoft Data Access Components 2.8 sp1) then click OK.

6. Once it’s done you can install Jaangle if you hadn't already.



Step 2: Running Jaangle

After installation, you can launch Jaangle by finding it in the list of Wine programs. Jaangle will be fully functional as it's on Windows with its nifty mini player, tray icon and tray tooltip.
jaangle main window
Jaangle running on Manjaro 18.1.0 XFCE Desktop (click to enlarge)
jaangle mini-player
Jaangle mini-player (click to enlarge)
Jaangle Tray Icon and Tooltip

To get started just add your collection and you're good to go. Ensure the partition in which your music is located is mounted. You don't have to move it if it's located in an NTFS partition. You can get specific help on how mount NTFS partitions for the distribution you're using by checking its help pages online.

Generally speaking however, you'll need ntfs-3g driver (this is usually included by default) to read/write on NTFS partition, then you can mount the partition automatically on start up by using Gnome Disk Utility or editing the fstab file.



Step 3: Moving your Jaangle Database from Windows

It's is possible to preserve your music collection and all of its info as it was on Windows. This way you get to retain your ratings, biographies, artist images and any other info not stored in the tags.

Moving your database as it is will however simply not work due to the difference in the structure of the file paths between Windows and Linux. Fortunately, we can solve this by editing the database in Microsoft Access. To do this:

1. In Windows go to the following directory:
C:\Users\~username~\AppData\Roaming\
Copy the entire Jaangle folder to a different location.

2. In the Jaangle folder go to Storage > Database and open the music.mdb file with MS Access. When prompted for a password enter: DontMessWithIt

3. In the left sidebar of MS Access double-click to open the Collections table.

4. In the Name and PathName columns you'll notice the file paths that point to the folder collections you have. You'll have to replace these path with their equivalents in Linux.

So for instance if the Windows the path to a collection is:
D:\My Documents\My Music\Albums
On Linux this path may be something such as:
Z:\mnt\D\My Documents\My Music\Albums
Use Jaangle's Add collection to quickly find the path of the collection in Linux.

5. Select the Path column and press Ctrl+H. In the Find What box enter the section of the path you'll be changing i.e.
D:\My Documents\My Music\
In the Replace With box enter the path in Linux i.e.
Z:\mnt\D\My Documents\My Music\
Below select to Look In: Current field and to Match: Any Part of the Field then select Replace All.  Repeat these steps for the PathName column.

6. Next open the Tracks table and select the Paths column. Replace the paths the same way as you did in the previous step.

NOTE:
If you have multiple collections in different partitions ensure you replace them with the correct paths. If this is too much work, you could consider moving them into one directory in the same partition then re-adding them in Jaangle before editing the database e.g.
D:\My Documents\Music\Reggae
D:\My Documents\Music\Playlist
D:\My Documents\Music\2000-2013

7. Save the database once you're done replacing the paths.

8. After saving you may notice the database has inflated in size (in my case it doubled from ~30mb to ~60mb). This seems inconsequential however I noticed a major lag while using the database with Jaangle in Linux.

To avoid this performance lag, optimize the database before moving it to Linux by selecting Database Tools > Compact and Repair Database in MS Access.

9. After you're done copy the entire Jaangle folder with the optimized database to a location you can easily access from Linux.

10. Boot into Linux and open your file manager. Turn on hidden files then go to your home folder and open:
.wine/drive_c/users/username/Application Data/Jaangle
Jaangle Data Path in Linux
11. Make a backup of the current Jaangle folder then replace it with the one we've edited in Windows.

Now when you launch Jaangle it should have your settings as they were in Windows along with your collections and artist pictures. Cheers!

How to Fix Titanium Backup Force Close on Start

Recently I did a hard reset on my phone to fix a problem I was having with Google Play Services. After a successful reset I got right away at restoring all my previous apps using Titanium Backup.

Initially I installed a newer version of Titanium Backup to do this before deciding to downgrade to an older version. Now here's where all my problems began.

The older version for some reason couldn't launch and instead always crashed on start with the error: Unfortunately Titanium Backup has stopped.

Consequently, I decided to reinstall the newer version however to my surprise it also now couldn't start. At this point I started trying random fixes like clearing app data to deleting the Titanium Backup folder. Unfortunately, none of this worked.

So what exactly was I missing here? Could it be possible that Titanium Backup was leaving leftovers in the system that were inadvertently crashing the app? I set out to find out that and interestingly my hunch was confirmed.

Inside the data/data/com.keramidas.TitaniumBackup directory I found a folder called files that had two files: busybox and sqlite3.
titanium backup leftovers
Titanium Backup System Leftovers

Since I had root permissions, I deleted this entire folder and reinstalled Titanium Backup. As I had expected the app did work this time round.

If you're facing a similar issue you can perhaps try and see if this will resolve the problem for you.

Convert Subtitles using Media Player Classic (MPC-HC)

Media Player Classic Home Cinema (MPC-HC) supports subtitles in various formats such as SRT, SMI, SUB, SSA, ASS, TXT etc. Not only that but the player also includes an option to automatically upload or download subtitles from online subtitle providers such as OpenSubtitles.

A somewhat hidden feature of MPC-HC is that it can also convert subtitles between different formats. The process is however not straightforward which is why call it hidden.


Convert an External Subtitle

1. Put the subtitle file in a folder along with its video. A different video should also work.

2. Open the video with MPC-HC. The player by default will load the external subtitle and ignore any embedded subtitle.

If it doesn't ensure the subtitle is in a supported format, is not corrupted or go to Options > Subtitles > Misc and ensure the option Prefer external subtitle over embedded subtitles is enabled.

3. With the subtitle loaded, press CTRL+S or go to File > Subtitles and select Save Subtitles... .
save subtitles

4. Doing that will open the Save as window. In the Save as Type box select the subtitle format to convert to. The following subtitle formats are the supported for saving:
  • SubRip (.srt)
  • MicroDVD (.sub)
  • Sami (.smi)
  • PowerDivX (.psb)
  • Sub Station Alpha (.ssa)
  • Advanced Sub Station Alpha (.ass)
subtitle formats

Click the Save button to finish the export and conversion.

The TXT format is conspicuously missing in the Save as formats. As an alternative you can use PotPlayer to save to TXT as well as all the above formats.

Extract and Convert Subtitles from a Video using PotPlayer

PotPlayer offers a lot of customization when it comes to subtitles. Some of these include:
  • a wide support for different subtitle formats e.g. SRT, SMI, IDX, SUB, SSA, ASS etc.
  • subtitle editing and sync control
  • uploading and downloading subtitles from online subtitle providers
  • subtitle translation

The list goes on and on. An additional feature that I haven't included above is its ability to extract, or rather, save subtitles that are already in a video file. This works on all video formats that support subtitles and that PotPlayer can open such as MP4, AVI, MKV, DVD/VOB etc.

This is however strictly for embedded subtitle formats and not those that are hardcoded ("burnt") onto the video. I'm not sure if those are even possible to extract.

Of course you can always use a program purposefully built for this sort of task such as MKVToolNix or Subtitle Edit but this is much quicker assuming you already use the player.

As an added bonus, the subtitle extraction can also double up as a subtitle converter as you can save the extracted subtitle in a format different to its original.


Convert or Export a Subtitle

1. Open a video with an embedded subtitle using PotPlayer.

2. Press CTRL+ALT+S or right-click to view the context menu then navigate to Subtitles > Subtitle Saving > Save Subtitle As...
save subtitle as

3. Browse for a folder where to save the subtitle then in the Save as type box select the format to save the subtitle in. By default, the original subtitle format is selected for you.
subtitle formats

The supported subtitle formats available for saving include:
  • Subripper (.srt)
  • Sami (.smi)
  • Sub Station Alpha (.ssa)
  • Advanced Sub Station Alpha (.ass)
  • MicroDVD (.sub)
  • Psb (psb)
  • Text File (.txt)

Click the Save button to finish the export.

Enable Android App to Write to External SD Card with Magisk

Since the change in Android storage permissions that came with Marshmallow (6.0) not all apps are able to write and in some cases read the external storage. In particular are old apps that haven't been updated for years.

With that said a good number of apps that are in active development also have problems writing to the external SD card. This is either due to the developer not enabling this option or due to some device specific issue.

It would seem therefore that the only "solution" is for one to get a device with a generous internal storage or better yet a device that has dispensed with the SD Card slot altogether.

Fortunately, this doesn't have to be the case. Provided you have root permission this is something that you can resolve relatively quickly and have both newer or legacy apps write to the SD Card.



Enable Magisk ExSDCard Access Enabler (Oreo and Nougat)

1. To get started flash Magisk and install Magisk Manager if you haven't yet. Your phone will require a custom recovery like TWRP to accomplish this.

2. Open Magisk Manager and in the menu go to Downloads and search for the ExSDCard Access Enabler module. Install then reboot to finish installation.
install module

That's it, no additional settings are required. After rebooting your external SD card will now be mounted in a new location: /mnt/media_rw/[SDCARDNUMBER]/



Define Path for App

Depending which app you're using you now have to follow this path when selecting a directory (e.g. a download folder) in the SD Card. In some apps you may have to enter the path manually.
storage path in fora
SD path in an old version of Fora Dictionary

To ensure this setting works properly keep the module enabled at all times.

How I Fixed No Internet on a Safaricom Wi-Fi Hotspot

Rarely do I use Safaricom for internet but somehow I recently came by one of their generous data bundles. Naturally I decided to make use of it on my desktop to at least get some work done.

Usually I just tether my phone to my desktop's Wi-Fi adapter rather than using my trusty unlocked Safaricom modem. It is much faster not to mention I don't have to fret about missing any calls, though I can cumbersomely answer them using the modem.

Unfortunately, this particular Wi-Fi hotspot became quite problematic unlike what I'm used to when using Telkom or Airtel Kenya bundles. The problem: the computer successfully connects to the Wi-Fi hotspot but reports it has no Internet.
hotspot no internet

Thinking something might be wrong with the hotspot I tried both USB and Bluetooth tethering both of which resulted with the same error.

Next I tried running Windows Network Diagnostics which reported the following:
Your computer appears to be correctly configured but the device or resource (dns server) is not responding.

Thinking I had found the problem, I tried changing the DNS servers for the hotspot on my computer including to those of Google DNS, Open DNS and CloudFlare DNS none of which worked. I even went as far as changing the DNS server on my rooted Android phone which of course failed spectacularly.

Meanwhile I could still use the data bundle normally on my phone. A hotspot made with my Telkom line on the second SIM slot however worked perfectly regardless of which DNS server I used.

At this point I started suspecting foul play by Safaricom, after all some network operators are known to block tethering for end users. Nevertheless, I could not find evidence of this.

So after trying different public DNS servers with no actual change I decided to search for alternative DNS servers from Safaricom.

The first place I landed was on a forum discussing Your Freedom VPN. While completely unrelated to this, somewhere in that thread someone suggested to use a different DNS server: 196.216.201.21.

All this time my Safaricom internet had been using the DNS Server: 196.201.217.7. So I changed it to 196.216.201.21 and what do you know, the hotspot started working.

Now I'm not implying that this specific DNS Server will always solve this error for you. Safaricom uses different DNS servers and this happens to be just one of them.

Nevertheless, one thing is clear form this: should you encounter such an issue the first place you should go looking is in your DNS server settings. Try different public DNS and should those fail too, try different Safaricom DNS servers.

Now I should mention few moments later after making the change the new DNS server started acting up - it would lose internet for a while then recover on its own.

I suppose it wouldn't be farfetched to just conclude Safaricom has unreliable DNS servers, which is rather amusing as I've never before experienced this kind of issue with their "unreliable" competitors.