Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

bbbc

macrumors member
Original poster
Nov 19, 2012
86
28
The most current versions of bittorrent clients that work on Mavericks (from what I've found) are from over a year ago. I rarely download torrents, but I want a current client that binds with a VPN. I submitted a ticket to the BiglyBT (ad-free fork of Vuze & Azureus) folks and a developer is trying to help me out - https://github.com/BiglySoftware/BiglyBT/issues/1745 . Thought I'd let others know in case they want to help with testing and/or encourage the author.

 
I use Transmission and it works wonderfully. I use the VPN separately though.

It might not be quite as fully-featured but Transmission really feels like a good Mac app, and I love the simplicity.
 
  • Like
Reactions: R2FX
@Wowfunhappy Are you using transmission 2.94 (which is the last official binary release to support 10.9). I'm seeing increasing issues where transmission is simply unable to discover as many peers as libtorrent based clients (e.g. deluge, qtorrent).

After some searching, I believe this is because transmission (even the latest version) doesn't support the BEP hole punching extension, which libtorrent-based clients and utorrent support. This is particularly bad for poorly seeded torrents since it means that torrents will never be able to make progress. And the increasing prevalence of VPN and people who don't know how to set up port forwarding means that this is likely having significant impact.

In terms of alternatives (not even limiting to things compatible with 10.9), the ecosystem as a whole isn't very good. qbittorrent and deluge exist (and both use libtorrent internally so should be identical performance-wise) but qbittorrent is a bit of a mess code-wise (comparatively transmission has a clean design and is easy to read). And deluge is a python gtk app with a very non-native gui. The cli-based rTorrent also doesn't support BEP-hole punching and is explicitly designed more for seeding rather than DL purposes.

While µTorrent was once a very lean and native app [on both windows and mac], µTorrent was sold to an adware company and ironically became the very thing it was created to spite. (And even the last "classic" version for mac, 1.8.7 still came with advertisement and popups by default. Which is a shame really because it does have a very nice native gui. While one could patch out the badware [and such copies are floating around], I wouldn't really be comfortable running it because there's no way to know how deep the badware truly runs (most copies you find online only remove ads. In my own disassembly I found the application has some codepaths to show surveys, popup a sponsored browser, send IP addresses to some random hardcoded endpoint hosted on ec2, and that's only just the obj-c part of the app!).

For 10.9, the options seem to be: Transmission 2.94 (which suffers from the issue noted), Transmission 3.0 (this should technically compile from source fine, since there were no breaking changes on the mac part from what I saw, but isn't really any better connectivity wise), Deluge 1.3.15 (works fine but is really ugly), and qBitTorrent 4.1.3 (it's sort of ok as a qt app, but nowhere as nice-looking as transmission).

Since QT5.9 can apparently work with mavericks it might be possible to get up to qBitTorrent 4.4 working (which importantly has support for BTv2 torrents which might be good for future-proofing).


@bbbc For BiglyBT it seems to be java based. It's possible to get up to JDK11 working on mavericks fine, with GUI. Supposedly even higher versions can work, I think one of the macrumors threads about minecraft showed a way to get JDK17. What concretely is the issue in getting it to run, have you tried just swapping out the provided jre for your own?

Edit: Actually it may not be related to BEP55. I just tried rtorrent which not only doesn't implement BEP55 but doesn't implement uTP protocol entirely, and even that was able to find more peers. On a whim I saw that Transmission does have an option to disable uTP, and with it disabled Transmission was able to find the same peers as rTorrent. So there's something wonky with Transmission's uTP implementation. I didn't actually realize uTP was a thing, I thought all BT traffic was udp by default, I'll have to read more about this...
 
Last edited:
Aha I'm getting somewhere: https://github.com/transmission/transmission/pull/4826 + https://github.com/transmission/transmission/pull/4897

This was noted in https://github.com/transmission/transmission/issues/907 but mistakenly closed as wontfix, it seems to be precisely the type of issue that commit would fix.

There's also https://github.com/transmission/transmission/pull/6508 and https://github.com/transmission/transmission/pull/6586, but it generally seems uTP support as a whole in transmission is kind of wonky and perhaps better left disabled.

@Wowfunhappy Transmission seems really easy to build from source (everything is in tree), I wonder if it would be possible to create a build of 3.0.0 with uTP fixes cherrypicked (probably just that single one to prefer TCP over UDP, it seems the other changes were only needed because of large changes to libutp which apparently even caused dl speed regressions)
 
Last edited:
@f54da Yes, I use Transmission! Technically I'm on version 2.84, the last version which supports Snow Leopard. (I don't actually use or care about Snow Leopard, it's mostly that I haven't had a reason to update.)

I haven't noticed any problems with Transmission, but I also haven't compared its performance against other Torrent clients. Fixing Transmission would be my strong preference as I like the UI. I'll take a look!
 
I wasn't able to trivially make Transmission 3.0 work on 10.9. It crashes on launch with a weird backtrace, which points to Apple libraries rather than anything specific in Transmission. This is without any source changes other than removing Sparkle.

Since this wasn't the primary objective I'm going to try again with 2.94.
 

Attachments

  • Transmission_2024-03-25-134002_Jonathans-Mac-Pro.crash.zip
    14.2 KB · Views: 56
@Wowfunhappy that seems like this issue: https://stackoverflow.com/questions...rminator-assertion-osx-10-9?noredirect=1&lq=1 which version of osx did you build it on? Seems like a known issue Apple reported, there is a fix provided. I think 2.94 would see the same issue, the issue is caused by xcode version and OS used for compilation.

Btw yeah fixing transmission is definitely the better option, and from what I see should be fairly easy. I think it would be good to actually use both patches: fix the underlying uTP timeout issue, but then also try TCP first because it will lead to faster overall connection.
 
@Wowfunhappy that seems like this issue: https://stackoverflow.com/questions...rminator-assertion-osx-10-9?noredirect=1&lq=1 which version of osx did you build it on? Seems like a known issue Apple reported, there is a fix provided. I think 2.94 would see the same issue, the issue is caused by xcode version and OS used for compilation.

Btw yeah fixing transmission is definitely the better option, and from what I see should be fairly easy. I think it would be good to actually use both patches: fix the underlying uTP timeout issue, but then also try TCP first because it will lead to faster overall connection.
I built on xCode 10, on High Sierra. 2.94 builds fine, although there it has a visual bug versus 2.84 which really bothers me (and I confirmed the issue is in the pre-compiled version too).

It doesn't look like I'm going to be able to trivially cherry pick anything from 4.x back to ≤3.x, because in between libtransmission was ported from c to c++: https://github.com/transmission/transmission/commit/4c1b6276479d177122df4ee5c9919f014c24faca

But the patch is small enough that maybe it makes more sense to just port it by hand anyway...
 

Attachments

  • Screen Shot 2024-03-25 at 3.12.25 PM.png
    Screen Shot 2024-03-25 at 3.12.25 PM.png
    25 KB · Views: 50
Last edited:
Oh yeah those 2 icons being weird exists on the official build as well, I just hid those two icons. IIRC 2.91 didn't have this issue. But I just checked and you can fix it in Controller.m by adding after
Code:
[segmentedControl setImage: [NSImage imageNamed: @"ToolbarPauseAllTemplate"] forSegment: TOOLBAR_PAUSE_TAG];

[segmentedControl setSegmentStyle: NSSegmentStyleTexturedSquare];

(The default value is automatic. I'm actually really curious what changed here, since there weren't any changes in the macosx parts between 2.92 and 2.94. If you're as curious as I am, what happens if you build 2.92, does it suffer from the same issue? There are known to be cases where things take different codepaths based on the system it was linked on. If that doesn't work, what commit caused this issue?)


Btw the reason why 2.94 build doesn't crash like the 3.00 one is that the migration to xcassets was only part of 3.00: https://github.com/transmission/transmission/commit/a035c79da40944d8f921c181dde6a9f813d5f5e0. I do think that the fix in https://stackoverflow.com/questions...rminator-assertion-osx-10-9?noredirect=1&lq=1 should be sufficient, apparently just dragging/dropping that dummy icon in IconFix will fix the issue. Or that commit can just be reverted since apparently the code doesn't really care how it gets the images. And I think it does seem to be worth the extra effort to get 3.00 running since it had some good ipv6 related fixes in there and was the last cut before 4.x which seems to be a bit less stable.

(It theoretically may be possible to get 4.x working as well since the min of 10.13 isn't too bad, but I don't think it's worth it yet, seems to be more bugs introduced than problems solved).


I can port the uTP patches by hand, I'll share it later when I have time.
 
Last edited:
  • Like
Reactions: Wowfunhappy
(The default value is automatic. I'm actually really curious what changed here, since there weren't any changes in the macosx parts between 2.92 and 2.94. If you're as curious as I am, what happens if you build 2.92, does it suffer from the same issue? There are known to be cases where things take different codepaths based on the system it was linked on. If that doesn't work, what commit caused this issue?)
Oh, it must have to do with the system it's built on! I tried building 2.90 this afternoon when I was trying to bisect the problem, and it still had the glitch.
 
Well that solves it then! Definitely not the first time such issues have happened, but luckily this time it's an easy fix.
 
Alright, this can now be downloaded from https://jonathanalland.com/old-osx-projects.html, feel free to give it a try! Thanks to f54da for his help.

@bbbc I included in the DMG an Applescript I wrote some time ago to bind Transmission to a VPN. You need to add a VPN in either System Preferences (recommended, but requires a VPN that supports a compatible protocol such as privatevpn.com) or Viscocity (a paid OpenVPN client, last Mavericks-compatible version is 1.7.11).

@f54da Let me know if this fixes your issues finding peers.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.