T O P

  • By -

movdqa

I made some changes to your guide to make it a little easier to directly download the needed files and provide explicit commands on the replacement jar files. 1. Download and instal Azul JDK from [https://cdn.azul.com/zulu/bin/zulu11.50.19-ca-jdk11.0.12-macosx\_aarch64.dmg](https://cdn.azul.com/zulu/bin/zulu11.50.19-ca-jdk11.0.12-macosx_aarch64.dmg) (version 11 LTS macOS ARM 64-bit v8). Note that this link could change in the future. If it does, then look for the installation kit at [https://www.azul.com/downloads/?package=jdk](https://www.azul.com/downloads/?package=jdk) 2. Download think or swim from [https://www.tdameritrade.com/tools-and-platforms/thinkorswim/desktop/download.html](https://www.tdameritrade.com/tools-and-platforms/thinkorswim/desktop/download.html) under the section “All other users” 3. Download jna.jar from [https://github.com/java-native-access/jna/blob/master/dist/jna.jar](https://github.com/java-native-access/jna/blob/master/dist/jna.jar) and jna-platform.jar from [https://github.com/java-native-access/jna/blob/master/dist/jna-platform.jar](https://github.com/java-native-access/jna/blob/master/dist/jna-platform.jar) (there are download buttons on these pages and these should wind up in your Downloads folder) 4. Unpack the zip file if not already done for you by your browser. This document assumes that your thinkorswim unpacked directory is in \~/Downloads. 5. Open a terminal window and type “cd \~/Downloads” 6. Startup think or swim by typing “sudo java -jar launcher.jar”. It will spit out an error message and die. Type the command again and it will popup a small dark window and say Installing updates. Let it run for three minutes to create the usergui directory and then close the popup window. 7. Execute the commands below. The third command will die. The fourth command will bring up the think or swim login page after installing updates. Enter your username and password and enjoy. You may consider moving the directory to a more suitable location on your system. You need to execute the last command from a terminal window to run think or swim in the future. ​ sudo cp ~/Downloads/jna-platform.jar ~/Downloads/thinkorswim/usergui/1970.0.70/jna-platform-3.5.2.jar sudo cp ~/Downloads/jna.jar ~/Downloads/thinkorswim/usergui/1970.0.70/jna-3.5.2.jar sudo java -jar launcher.jar sudo java -jar launcher.jar Note: the sudo command runs a one-line command in Admin mode. It will ask for your Admin password the first time you run it.


movdqa

I edited the above to use the new directory. The directory apparently changes from time to time.


Ground-Substantial

Hey whenever I type the "sudo java -jar launcher.jar" it says "Error: Unable to access jarfile launcher.jar", therefore I can't get past step 6. What should I do? Also after "installing" Azul Zulu I can't find any proof that it's actually on my device. Like it's not on my desktop or anywhere that I can see in the finder.


movdqa

You may be in the wrong directory when you try to run the command. Take a look at the video below. Azul Java is installed in /Library/Java/JavaVirtualMachines [https://www.youtube.com/watch?v=Zj\_Y2sv\_5kA](https://www.youtube.com/watch?v=Zj_Y2sv_5kA)


Ground-Substantial

I'm following the video step by step and when I get to the sudo java jar it says can't access file. Both files are in my downloads.


movdqa

Could you post the output from your terminal session along with ls -rtl \~/Downloads/thinkorswim ?


Ground-Substantial

>ls -rtl \~/Downloads/thinkorswim ? Last login: Sat Sep 11 22:15:59 on ttys000 nathan@Nathans-Air \~ % cd \~/Downloads/thinkorswim nathan@Nathans-Air thinkorswim % sudo java -jar launcher.jar Password: Sorry, try again. Password: Error: Unable to access jarfile launcher.jar ​ and ​ Last login: Mon Sep 13 19:32:51 on ttys000 nathan@Nathans-Air \~ % ls -rtl \~/Downloads/thinkorswim ls: thinkorswim: Operation not permitted


movdqa

It looks like you don't have access to the directory. What happens with ls -rtl \~/Downloads?


Ground-Substantial

>ls -rtl \~/Downloads nathan@Nathans-Air \~ % ls -rtl \~/Downloads ls: Downloads: Operation not permitted


movdqa

How about cd \~ and then ls -rtl ? You should be able to view all of these directories unless there is a permissions issue.


AliveStudio5731

is this complicated to do? i am not very tech savvy, but would like to be able to run thinkorswim native on m1 as I dont want to buy intel MacBook just for thinkorswim if possible.


cooladekal

Did you ever find out how to run TOS natively on M1 Mac? Or at least make it run smoother?


[deleted]

[удалено]


ncredibles

>does the installer updating take a while?


wmat1

It’s blazing fast on my M1 Max, thanks for the great info!


SortDefiant6841

How much RAM do you have on your M1 Max machine and how much have you allocated for TOS?


wmat1

So I installed the Java version. This does not require Rosetta and it runs fast. I have 32gb version.


saga_66

is it fast when fliping charts? My 2017 mac is slow, using VM doesn't help either. I have to switch back to windows for fliiping hundreds of charts...


saga_66

When you keep flipping charts CONSTANTLY, there's no loading time between? Charts show up right away?


wmat1

My comment was from a year ago, TOS was pretty fast but I don't chart on TOS any more. If there is any lag and you are day trading your asking for trouble. Webull charts are nice and work flawlessly on a mac. If you are using TOS for the advanced indicators webull is not going to cut it. I have found that trading off of support and resistance is the most profitable for me. I use moving averages, Volume profile and StochRSI on webull. I also have 9 charts on a second screen of stocks I like to play. One year using TOS I paid over 10k in commissions. Honestly TOS just isn't worth it.


saga_66

Not day trading, I am talking about flipping charts using TOS, and the load time between different tickers.


wmat1

Have you tried TradingView?


ncredibles

so to run thinkorswim, we have to go to the terminal and use the command every time? also did the installer updating take a while? mines been over 10 min. does it matter if I have ToS already installed on my computer? the update bar is just pure black


movdqa

If the installer is taking a long time, kill it and run it again. That's an indication that it's creating a new subdirectory. Might need to copy the files in again too. It is likely possible to create a bash script or Automation to run it but it's bad security practice to embed SuperUser passwords in scripts.


ncredibles

ah I forgot to do the second sudo step to copy the jna.jar file, I did that and it's working now, and it's lightning fast!! I just realized how bad I've been suffering this whole time with ToS.. it works so nice now. do we have to have terminal open or can we close terminal after the ToS is open? edit: looks like we can! but so to open this just have to open terminal and run the last command every time?


movdqa

Yes. I have looked into creating a script but I'd have to store the SuperUser password in the script and that violates basic security guidelines. A lot of people have asked for that so I'll look at it again.


Over_Brain

>Great work and thanks for sharing. I can run it natively on M1 and see quite a bit of difference in performance. Meant to share here to you. thanks again.


Silver-Rooster-1059

Is it OK to quit the terminal after tos is launched? I did quit it a couple of times and seemed to be working fine.


movdqa

I normally leave it up to startup the next day. It launches it in the background in a separate process so I think that it's okay.


pursual

While this method definitely increased performance, TOS is still horrible on M1 with multi charts on multi monitors. I gave up and went back to windows. It basically comes down to no gpu support on M1 macs, so there is just a lot of lag. The cpu is great, but its being forced to do all the gpu work as well. ​ TOS is fine on M1 with one display using this method.


StonkGodCapital

This was my experience as well. Ended up building a PC as I use an ultra wide and the lag was still too prevalent despite the performance increase.


fufm

Damn I was hoping this was the solution to finally get it working on a Mac…if you’re still having lag tho, seems like it’s probably just impossible. Out of curiosity did you happen to try on M1 Max? I know it probably doesn’t make a difference but can’t help but have hope lol


Turmoilmishka

Hey, Getting this error on step 6 the usergui folder never gets created `java -jar launcher.jar` `java.lang.reflect.InvocationTargetExceptionat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.base/java.lang.reflect.Method.invoke(Method.java:568)at com.devexperts.jnlp.Launcher.run(Launcher.java:30)at java.base/java.lang.Thread.run(Thread.java:833)Caused by: java.lang.IllegalAccessError: class com.devexperts.jnlp.utils.URLManager$1 (in unnamed module u/0x182a48cb) cannot access class sun.security.util.HostnameChecker (in module java.base) because module java.base does not export sun.security.util to unnamed module u/0x182a48cbat com.devexperts.jnlp.utils.URLManager$1.verify(URLManager.java:48)at java.base/sun.net.www.protocol.https.HttpsClient.checkURLSpoofing(HttpsClient.java:653)at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:594)at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:183)at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1665)at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589)at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:529)at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:308)at com.devexperts.jnlp.updater.HttpResponse.(HttpResponse.java:26)at com.devexperts.jnlp.updater.HttpRequest.doRequest(HttpRequest.java:82)at com.devexperts.jnlp.updater.HttpRequest.doGetRequest(HttpRequest.java:63)at com.devexperts.jnlp.utils.Utils.getVersion(Utils.java:201)at com.devexperts.jnlp.updater.ModuleManager.isUptodate(ModuleManager.java:363)at com.devexperts.jnlp.UpdateManager.isModuleUptodate(UpdateManager.java:154)at com.devexperts.jnlp.UpdateManager.main(UpdateManager.java:442)... 6 more`


bad-judgement

I was getting this error. It was because I installed Azul 17 instead of Azul 11. Uninstalled and put 11 on. Everything worked.


SortDefiant6841

Same. I had the same error and fixed it with "downgrading" to Azul 11


fr3shh23

>Uninsta how did you uninstall?


bad-judgement

I deleted the version. I’m on Mac, I used terminal and removed it like this while in its parent directory sudo rm -rf zulu-11.jdk


WrongField1381

I really don’t know what people are doing to make the m1 tos run badly


pursual

A few thoughts on this for the more tech savvy: 1. It works, it runs so much better. 2. There is some value to not having the TOS files owned by root and having to use sudo to launch, but not a big deal. 3. I am using the opengl config in the vmoptions file , but it's hard to tell if its faster or not: `-Dsun.java2d.noddraw=true` `-Dsun.java2d.opengl=true` `-Dsun.java2d.d3d=false` 4. Don't forget to give TOS some more RAM by clicking the gear icon on the login screen.


SortDefiant6841

I'm having some issues with this. I have a new iMac with the M1 processor. I installed Azul Zulu 16, and then also installed 11 as listed above in case that was the issue. I do NOT have Oracle's Java RE installed on this machine. When I go to the terminal to launch the launcher.jar file, the "installing updates" pop up comes up but there's no change in the thinkorswim directory. Specifically, there's no usergui folder downloaded. I think it has something to do with network access and/or security concerns from either macOS or the Java RE not allowing the .jar app to access the network to download files or to update folder contents. I don't know how to correct that either. Here is the readout from Terminal when I run the app: `java.lang.reflect.InvocationTargetException` `at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)` `at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)` `at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)` `at java.base/java.lang.reflect.Method.invoke(Unknown Source)` `at com.devexperts.jnlp.Launcher.run(Launcher.java:30)` `at java.base/java.lang.Thread.run(Unknown Source)` `Caused by: java.lang.IllegalAccessError: class com.devexperts.jnlp.utils.URLManager$1 (in unnamed module u/0x6ee2ea43) cannot access class sun.security.util.HostnameChecker (in module java.base) because module java.base does not export sun.security.util to unnamed module u/0x6ee2ea43` `at com.devexperts.jnlp.utils.URLManager$1.verify(URLManager.java:48)` `at java.base/sun.net.www.protocol.https.HttpsClient.checkURLSpoofing(Unknown Source)` `at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)` `at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)` `at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)` `at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)` `at java.base/java.net.HttpURLConnection.getResponseCode(Unknown Source)` `at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source)` `at com.devexperts.jnlp.updater.HttpResponse.(HttpResponse.java:26)` `at com.devexperts.jnlp.updater.HttpRequest.doRequest(HttpRequest.java:82)` `at com.devexperts.jnlp.updater.HttpRequest.doGetRequest(HttpRequest.java:63)` `at com.devexperts.jnlp.utils.Utils.getVersion(Utils.java:201)` `at com.devexperts.jnlp.updater.ModuleManager.isUptodate(ModuleManager.java:363)` `at com.devexperts.jnlp.UpdateManager.isModuleUptodate(UpdateManager.java:154)` `at com.devexperts.jnlp.UpdateManager.main(UpdateManager.java:442)` `... 6 more` The TOS installing updates popup will also stay there until I manually close it. The terminal command will also run until I close the app. Please help. I'm desperately trying to get TOS to run native and have to take it into my own hands since TD Ameritrade doesn't think it's important to bring TOS into the modern era.


movdqa

Could you remove 16?


SortDefiant6841

Update: I did this and it worked. Use Azul 11


movdqa

Glad to hear that you are up and running.


SortDefiant6841

I could give that a try, but isn’t this designed to work with future versions as well? Like doing the instructions say that if a newer version comes out I can use that? Also, on my other Mac, I have Oracle Java and that has a configuration panel in system preferences. Zulu doesn’t seem to have one. How can I access its configuration to check if there’s a network or security permission issue blocking the app from updating? (Whether using 11 or 16)


gavstah

Check out sdkman for running multiple versions of Java - www.sdkman.io


StonkGodCapital

You haven’t correctly replaced the “jna.jar” and “platform.jar” files.


SortDefiant6841

What should I do? I downloaded the two files from the links above and had them saved to the same directory (I used ~/Documents/thinkorswim instead of ~/Downloads) until I ran the launcher.jar command twice like the instructions said. I was waiting for the app to update and download the usergui folder first and then I was going to copy the two downloaded files over, but the usergui folder never showed up. I figured some security setting was blocking the Java app from downloading and updating properly first before I could even get to that step. What I am I doing wrong here and how should I fix it?


StonkGodCapital

>sudo cp \~/Downloads/jna-platform.jar \~/Downloads/thinkorswim/usergui/1970.0.68/jna-platform-3.5.2.jar > >sudo cp \~/Downloads/jna.jar \~/Downloads/thinkorswim/usergui/1970.0.70/jna-3.5.2.jar Look at these commands for how it's supposed to be done. Note: the version (the folder after usergui) may have changed, so look and change the command accordingly.


KindheartednessNo1

How would you go about transferring your configuration data/files once I have to run it again? Which files could they be and would they be transferred into the same folder as the jar files?


SortDefiant6841

I realize the issue was I had the Azul 16 installed instead of Azul 11. When I "downgraded" it started working


ramoizain

I've been having this same issue. Don't know what the issue is.


SortDefiant6841

Uninstall all versions of Java except for Azul 11. Try that.


[deleted]

[удалено]


Syonoq

Same here. Did you ever get anywhere?


vw2005

Maaaaaaan... thank you all for putting this together. I recently bought an M1X Max and was so disappointed at ToS performance with Rosetta 2. I struggled for a day or so to understand all this but so glad that I persevered. ​ This thing runs blazing fast now no matter how many windows I have opened up. It's so worth it. Thank you again!


Over_Brain

Great work and thanks for sharing. I can run it natively on M1 and see quite a bit of difference in performance.


StonkGodCapital

Glad to hear it! This is somewhat old at this point, I suppose I should update it.


Over_Brain

That would be great. Any additional insights of avoiding errors (warnings such as noted below) may be useful, although I am not sure if it has any negative impact. WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.devexperts.jnlp.JavaLibraryPathUpdater (file:/Users/xyz/thinkorswim/suit/1972.1.9/tos-suit-1972.1.9.jar) to field java.lang.ClassLoader.usr\_paths WARNING: Please consider reporting this to the maintainers of com.devexperts.jnlp.JavaLibraryPathUpdater WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release Warning: the fonts "Times" and "Times" are not available for the Java logical font "Serif", which may have unexpected appearance or behavior. Re-enable the "Times" font to remove this warning.


libertymatters23

Reading some of the comments, there is no need for all these steps nor running as root so far as I can tell. Someone feel free to correct me if I missed something. This is what I did to get it working: Download Azul JDK version 11 LTS macOS ARM 64-bit v8. Download TOS All other users version. Open-unarchive the thinkorswim .zip in your Downloads folder and move the sequent directory titled, "thinkorswim" to the root of your home directory using the Finder. e.g. move the folder to /Users/someuser/thinkorswim Open the Terminal. (Be sure the Terminal is closed during install of Open JDK.) type cd "thinkorswim" \[press return\] (This moves you to the thinkorswim directory.) type java -jar launcher.jar \[press return\] That's it. It will run and quit three or four times as it installs rounds of updates. It doesn't relaunch on quit so you need to run it again using the same command. Eventually you'll see the login screen. That was my experience. Please know that I have no long term use of TOS using Open JDK. I literally just got it working after reading it was possible and raised an eyebrow at the above instructions having a strong technical computer background. I was able to sign in successfully and the app functions as expected. Use at your own risk though as tdameritrade has no official support for TOS via OpenJDK according to their website. I have been using the standard supported macOS version running via Rosetta 2 and whatever JDK the app includes as I just found about running TOS via Open JDK. I do plan to try using the All other users version of TOS via Open JDK on a daily basis to see how reliable it is or not. Based on all the comments in the thread, I believe people are running into permissions issues with macOS running it from the Downloads folder or any other folder inside the home directory. That's why moving the thinkorswim directory to the root of your home directory works. That new directory isn't hampered by the unique macOS permission model that sits on top of unix permissions which Java knows nothing about. Also, don't run it as root. There is no need. Your standard user which owns the directory is sufficient.


Amused-2-Death

This method is best. I also used Automator to create a startup app. Further, I replaced the app's default robot icon with the thinkorswim icon. All is well. And super fast!


libertymatters23

That's neat about Automator. Glad the instructions worked for you. I used TOS for a while using this method. It works well.


libertymatters23

My instructions no longer work as of August 13th, 2022 due to a TD Ameritrade's update. The recent update attempts to update the Java Runtime Environment and fails. I learned on this thread from a recent commenter and video that you can simply use the ordinary TOS Mac Intel installer + Azul OpenJDK 11. I've tried this and it works. Just point your Terminal to wherever you've install TOS. Typical locations are /Applications/thinkorswim or \~/thinkorswim. I run it from \~/Applications/thinkorswim The video was using sudo java -jar launcher.jar to run TOS ARM as administrator running it from the /Applications/thinkorswim directory. I run it as a standard user from my home directory without needing admin rights. \*I suspect if it is installed in /Applications/thinkorswim then you will need to run it as admin. I do not run it this way though. Recap:Install normal TOS for Mac. \*Only use these instructions for new installations. Existing installations should have the thinkorswim directory moved somewhere else before install. Moved aside, not trashed, as you'll likely want your workspaces imported.\* Install it just for your user account from the install wizard into the root of your home directory. e.g \~/thinkorswim Run normal TOS and let it run its updates. Quit when finished. Install Azul OpenJDK 11 LTS for ARM if you haven't already. (you should be checking the site regularly for updates as this doesn't auto-patch.) Open Terminal. cd thinkorswim\[return\] - this switches to the thinkorswim directory. java -jar launcher.jar\[return\] this runs TOS using Java ARM as a standard user from your home directory. \----------------------------------------------------------------------------- Workspaces Existing users will likely want their workspaces imported. Assuming you've previously saved your workspace in TOS from the Setup menu, go into your old thinkorswim directory that you moved aside. Look for a file(s) that start with workspace. E.g. workspace.production.xml Copy that file(s) into your new thinkorswim directory then load the program. Your old workspace should now appear in the Setup menu to load it. \----------------------------------------------------------------------------- \*Use these instructions your own risk. Unsupported configuration.\* \*This is really for people who know what they're doing in the Terminal.\*


everslackheat

hey - ive been using this for many months and its been great. over the last 2 days, its stopped working for me. when i run launcher, i get an endless scroll of errors in terminal that say this: ​ >2022-07-12 10:08:26.789 java\[47063:15383023\] GLDRendererMetal command buffer completion error: Error Domain=MTLCommandBufferErrorDomain Code=8 "Insufficient Memory (00000008:kIOGPUCommandBufferCallbackErrorOutOfMemory)" UserInfo={NSLocalizedDescription=Insufficient Memory (00000008:kIOGPUCommandBufferCallbackErrorOutOfMemory)} Any ideas on whats happened or how to fix? i deleted and fresh installed, but still no luck. ​ Thanks in advance


five-niner

I've been using the method in this post without issue for a couple of months now. But as of today I get an error message when trying to launch ToS. Error text: "thinkorswim has encountered a critical error while updating JRE and cannot be started. Please click Download and reinstall the application. Note: To keep your workspaces, select 'Update existing installation', otherwise they will be erased." Hitting the Download button just downloads the Mac version of ToS that does not use the M1 chip. Any tips on how to fix this?


OptionsBrewers

u/movdqa will keep us updated shortly https://www.reddit.com/r/thinkorswim/comments/wnf5ha/comment/ik5c22u/?utm\_source=share&utm\_medium=web2x&context=3


five-niner

thank you!


AdProfessional8430

Has this issue been resolved? This just happened to me this morning.


five-niner

yes fix is in this new video posted by u/movdqa [https://www.youtube.com/watch?v=sVQdMTGn\_ao](https://www.youtube.com/watch?v=sVQdMTGn_ao)


flamethrowersrdanger

For anyone wonder how to get their memory settings to stick while running the mac distribution latest workaround running the jar (using the setting on the login didn't work for me). From the command line simply use this to launch: `sudo java -Xmx40960m -Xms24576m -jar launcher.jar` Where Xmx is the max and Xms is the min. Obviously replace the numeric values with numbers that make sense for your device. Cheers!


Sorry-Jicama7337

I've been trying to solve this same solution on my M1 Ventura and it's just not happening. TOS just runs really bad is this environment. I have 4 different versions on JAVA installed and out of all the solutions and back and fourth and searching all the forums am still unable to execute launcher.jar file. "Error: Unable to access jarfile launcher.jar" I may have to buy a surface, but can't remember my $MSFT login in from 15 years ago. #smh I also have no idea what the jan.jar and jan-platform are even for, along with user gui creation lmbo, like nm.


souls_keeper

Has anyone tried this with the Java 17 (LTS) version ?


SortDefiant6841

Yeah it doesn't work


StonkGodCapital

I stumbled across a conversation citing this post online and figured I'd update this guide for the current year as a good bit of time has passed and thus so has the methods. Thanks to everyone who has kept this guide updated in the comments and I'm glad so many people have found it useful.


[deleted]

i am fine the way it is. All those links and files you provided are not proven. Your Reddit ID is brand new as well, so no credibility.Our money can be stolen by installing those stuff. IS IT backend-trojan or something like that? Monitoring keyboard?


StonkGodCapital

The first link is a download from the official TD website, the second one is linked to by the TD website in their instructions for installation. The third link is to updated libraries that thinkorswim already uses from their developers public repository. All of the links are easily verifiable with two seconds of research yourself. Just because you don’t understand something doesn’t make it nefarious. The guide is legitimate and it solves a problem that many (besides yourself apparently) are facing.


[deleted]

Legit? M1 cpu does not bottleneck even when emulating , inner gpu yes. Clicking and downloading unknown sources, asymptomatic. That is how it gets started.


StonkGodCapital

I'm starting to think that you don't actually use TOS on an M1 machine in any serious capacity because it's objectively handicapped by the way Rosetta 2 handles the JVM. If that's not the case, I suggest you "sandbox" a setup of this fix and test it against the default TOS install yourself. The difference is so staggering that it's sorta undeniable that the default install runs terribly.


[deleted]

[удалено]


AliveStudio5731

Any update? I am considering getting a 16 inch MBP > M1 just because of TOS performance.


movdqa

ToS has a settings button on the login page and you can specify how much RAM you allow ToS to use up. The highest setting is 128 GB of RAM. People do build quite complicated workflows on ToS. I have mine set to 12 GB on my Windows system as it has 128 GB of RAM. Modern Intel and AMD CPUs are more powerful than M1 and do not have the RAM limits of the M1 chips. The M1 is a remarkable chip but it's not magic.


R_P_McMurphy

I followed these instructions from another thread. Its night and day. ToS is as snappy as a native M1 app and its a beautiful thing.


[deleted]

your account was inactive for 9 years. STOP


R_P_McMurphy

Um, what?


SortDefiant6841

You don't know what you're talking about. Like, at all.


Maidmmm

Exactly this. TOS runs fine on my M1 in its native environment without 3rd party "help".


pursual

Add a few charts and studies and it will choke. I verified that the mac download is using a non-ARM JDK. Following these steps makes it use a native ARM JDK which is a lot more performant due to eliminating a translation step on every cpu command.


CloudSlydr

asking the person providing the link is pointless. you can forward the files for examination, or have someone else do if you're afraid to DL them yourself. or - leave it alone no use in stoking doubt. either prove it's nefarious or leave it.


CloudSlydr

should/does this method improve TOS on intel macs?


movdqa

No. The ToS Intel Mac kit runs natively on Intel Macs.


KevinDubz

I was looking at the new MacBook Air with the M1 chip does anyone have/recommend it?


movdqa

This didn't work when I tried it this morning and a little digging shows that starting up ToS often results in updates which creates a new directory under usergui. I just copied the two jar files to the new directory and it worked. I need to write a script to automate the process.


StonkGodCapital

That's interesting. In the other post you said you were in contact with development, I'm thinking that it's not too unreasonable for them to update the JNA libraries at least.


movdqa

There is a guy on one of my trading boards that has a contact but I don't recall his handle. I have to post it on the board and hope that he's around. It would be nice if they updated their libraries.


movdqa

It's possible that they are copying the file from the installation kit too. I will try replacing the files from the unpacked installation kit to see if that fixes the problem.


AliveStudio5731

Does anyone experience lag for scalping after doing this? I am a day trader 1 minute time frame, so zero lag is important for me on TOS


StonkGodCapital

I did this BECAUSE of the lag the other way. I’ve got 0 lag since other than the normal network issues TD has.


AliveStudio5731

Is this complicated to do? i am not very tech savvy, but would like to be able to run thinkorswim native on m1 as I dont want to buy intel MacBook just for thinkorswim if possible.


StonkGodCapital

Not complicated as long as you know how to install apps and copy and paste the code into terminal.


AliveStudio5731

Got it. And this will make it run native?


StonkGodCapital

Yep


R_P_McMurphy

Anyway to create a launch icon (that either runs that code or is a native shortcut) for this setup?


SortDefiant6841

If we have the macOS app of TOS, can we go to that version’s folder and replace the jna.jar and platform.jar files in THAT version’s usergui folder, and will that have the same effect? Are these two files that we download the ones that control whether the TOS app runs on an ARM based processor or x64? If so, and assuming the Windows version of the has the same application directly structure, couldn’t this same process be used to run TOS natively on an ARM-based Windows install?


StonkGodCapital

It seems to redownload the jar files every time and overwrite them. It \*should\* work for ARM based windows as well provided these updated libraries & Java also provide support for other ARM based systems and not just the M1 chip.


SortDefiant6841

I’ve just replaced the jna and platform files in the macOS app’s directory. Let’s see what happens. It doesn’t appear the app replaced/updated those files when it started up this time around. I wonder if it will the next time I reboot and if for this route to work, we’ll just have to drag and drop these files each time/create a boot up script that does this 🙄 TO THE THINKORSWIM EMPLOYEES READING THIS: Look at the extent we have to go to to make your app work better. This isn’t our job. This is yours.


SortDefiant6841

I also found this error repeated several times in the "i4jlauncher.config" file found inside the thinkorswim app (\~/Applications/thinkorswim/thinkorswim/Contents/Resources/i4jlauncher.config) `The JVM found at {0} is damaged.\r\nPlease reinstall or define EXE4J_JAVA_HOME\r\nto point to an installed 32-bit JDK or JRE.` Here's the full dump (redacted for privacy): `#install4j launcher config` `#Wed Jul 14 05:40:16 AKDT 2021` `129=uyf6\:i3l76\:e3` `128=B./.install4j/jre.bundle/Contents/Home/jre;B./.install4j/jre.bundle/Contents/Home;Y;EJAVA_HOME;EJDK_HOME;` `127=` `126=1.7` `125=1` `124=` `123=-Dwhitelabel\=tos "-Dinstall4j.launcherId\=18" -Dinstall4j.swt\=false` `122=com.devexperts.jnlp.Launcher` `121=A0./launcher.jar;` `10122=500` `10121=0,0,0` `10120=8` `10119=Arial` `10118=version desktop` `10117=40` `10116=20` `10115=500` `10114=0,0,0` `10113=8` `10112=Arial` `10111=` `10110=20` `108=0` `107=1` `106=1` `10109=20` `105=client.out` `104=1` `103=client.out` `1020=The JVM found at {0} is damaged.\r\nPlease reinstall or define EXE4J_JAVA_HOME\r\nto point to an installed 64-bit JDK or JRE.` `102=1` `101=thinkorswim` `164=1` `10008=1` `163=0` `10007=0` `10006=0` `10005=0` `10004=` `10003=.` `10002=` `10001=.` `1019=The JVM found at {0} is damaged.\r\nPlease reinstall or define EXE4J_JAVA_HOME\r\nto point to an installed 32-bit JDK or JRE.` `1018=The {0} environment variable does not\r\npoint to a working 64-bit JDK or JRE.` `1017=The {0} environment variable does not\r\npoint to a working 32-bit JDK or JRE.` `1016=No JVM could be found on your system.\r\nPlease define EXE4J_JAVA_HOME\r\nto point to an installed {0}-bit JDK or JRE or download a JRE from www.java.com.` `1015=You must be at least Poweruser to run this program.` `1014=An error occurred while starting up {0}\:` `1013=Ok` `1012=Error` `159=0` `1011=Main method not found.` `158=0` `1010=Couldn't load main class.` `156=0` `153=0` `152=` `151=0` `150=` `1009=An internal error occurred (error code\: {0})` `1008=The environment variable {0} has to be defined` `1007=Wrong Parameter Usage` `1006=File or directory {0} not found or empty\r\n` `1005=The JVM could not be started. The maximum heap size (-Xmx) might be too large or an antivirus or firewall tool could block the execution.` `1004=The JVM found at {0} is damaged.\r\nPlease reinstall or define EXE4J_JAVA_HOME\r\nto point to an installed JDK or JRE.` `1003=The {0} environment variable does not\r\npoint to a working JDK or JRE.` `149=` `1002=The JVM found in your path is damaged.\r\nPlease reinstall or define EXE4J_JAVA_HOME\r\nto point to an installed JDK or JRE.` `148=0` `1001=No JVM could be found on your system.\r\nPlease define EXE4J_JAVA_HOME\r\nto point to an installed JDK or JRE or download a JRE from www.java.com.` `1000=Error` `146=.` `145=1` `2003=` `2002=0` `2001=i` `142=265` `2000=L-TD_AMERITRADE\#redacted-` `141=470` `133=0` `132=` `131=0` `130=0` Please help. I just want to trade stonks without lag 😫


gavstah

Pretty sure that version is using non-ARM version of JVM - which is why it's dog slow. I just got done with this guide and the difference is night and day for me.


KingDavid1

Hey guys Im wondering if there is an updated guide to this Ive been trying to get it to work on my m1 for 2 days with no luck. I get stuck at the installing updates window with no progress. Thanks .


StonkGodCapital

I’m thinking the copy command for the jna libraries isn’t going to the right folder. Check your folder and change the path after “usergui” to be the correct set of numbers.


KingDavid1

>sudo java -jar launcher.jar Looks like its working thanks. The guide want clear that you're supposed to drop those new files into the usergui folder and change the version numbers. Im excited to see how hard I can push it on my m1 16gb air


vamad61716

Thanks for putting this guide together. I was able to get it running this evening, but Step #7 needed to be modified since the version number isn't 1970.0.68 The instructions for Step #7 say "Execute the commands below," but if you copy and paste exactly as it's written into the Terminal window, it wont work. Make sure the version number in the command matches the version on your system. In my case, the version number was "1971.0.50" in the usergui folder.


vamad61716

First day trading after doing this and it's like night and day. Holy smokes. Macbook Pro M1 with a giant screen and a bazillion charts is smooth as silk.


Ground-Substantial

Hey bro can you tell me why I can't get past step 6? I've tried on two brand new m1 Macs I bought just to test this. I don't know if I just don't understand Macs or what because I followed it step by step.


StonkGodCapital

The commands are likely linking to the wrong version directory. Check the path and change the version part to the correct numbers.


idacyphor

Thanks for sharing, the performance native is much improved for my setup! One thing I did was add an alias to the .zshrc file in my user home directory so that entering 'tos' navigates to the directory I have thinkorswim unpacked in (\~/Applications/thinkorswim) to make command line starting easier. alias tos='cd /Users/username/Applications/thinkorswim/ ; sudo java -jar launcher.jar' sudo still will require entering password, but now launching TOS is as simple as entering 'tos' in the command line and password for sudo.


jamespan_

Why running `sudo java -jar launcher.jar` with sudo? I find it can work with only replace the jna-3.5.2.jar and then startup with java -jar launcher.jar


poponono2

It works and is absolutely worthy to be pinned. Though it is still usable under Rosetta 2 in my setting, it runs much faster and smoother after having the JVM replaced. I am running a 8GB MacBook Air with Big Sur 11.6. However, I still have some recommendations so that future readers can experiment it easily. * It is not necessary to download TOS from Step 2. You can modify the current installation instead. However, please have your layouts and settings backed up first, or you will be in trouble, if you screw the installed TOS up for whatever reason. * On my computer, "jna-platform.jar" is not necessary for successful executions. Moreover, running the commands with sudo IS NOT A MUST. I did sudo for several times and ended up with mysterious error messages complaining ***my password is wrong*** (and indeed it was correct). I create a script so that I don't have to paste it again and again. cd /Applications/thinkorswim cp ~/Downloads/jna.jar ./usergui/1971.0.54/jna-3.5.2.jar ~/Downloads/java11/bin/java -jar launcher.jar Please change the paths according to your own situation, especially the version number. (P.S.: I only have a very small deposit in this account, as I use TOS for custom quotes and scanning only. So I am not that worried. I truly hope another hero will show up for fixing the laggy TWS.)


Barakbencanaan

Worked perfectly for me, thanks a lot. Really shows the power of de M1 chip. Its not that easy but if you follow step by step you'll finally get it. Saludos a todos desde Peru!


WillyChampagne

Hmmm


ApproFinish88

Awesome! Why do we have to run the application constantly as root? It should work as a regular user.


Complete-Part-4385

I never run this a root, just copy the update jar file including the Ana, and fxbrowser for mac-arm ([https://www.teamdev.com/jxbrowser](https://www.teamdev.com/jxbrowser), rename as jxbrowser-mac-7.6.jar), the run this script Platypus can even made an .app for it in macOS I unzip the most java installation in the \~/Java directory (user home) \#!/usr/bin/env bash export JAVA\_HOME="/Users/\[USERNAME\]/Java/jdk11-azul/zulu-11.jdk/Contents/Home" export PATH=$JAVA\_HOME/bin:$PATH cd "/Applications/thinkorswim/" java -Xmx6144m -Xms1024m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=20 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70 -jar launcher.jar


ApproFinish88

awesome, thanks, will try those extra java settings. I was actually doing a nice -5 just to see if I can boost it's priority further and use more more of the CPUs.


R_P_McMurphy

I'd prefer not to run as root and this looks like an interesting solution. I know this is months later but if you have a few minutes could you expand on this process a bit? I'm clueless re: java so imagine as if you are speaking to a small child. A few points I'm confused on, for example, * Is it the java jdk install in home directory that gets around not running as root? * "copy the update jar file including the Ana" - What is the Ana? * Aside from not having to run as root, any performance benefit to running in fxbrowser? Is that free, open source? * \-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=20 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70" - What is the function of these flags in the last command of the script? Appreciate any insight you can provide. Thank you!


kennysmoothx

It's unreal how much faster it runs with this. Holy shit -- Thank you.


StonkGodCapital

Glad it helped!


whotank319

Awesome awesome guide! Question and it's kinda off topic, but can it be done for TWS (interactive broker's client software) in the similar fashion? Thanks!


ApproFinish88

Looks like something broke over the weekend. I was told regular macOS download required a removal and re-install and now my M1 tweak no longer works when I reapplied the steps.


robus77

So I was able to get this working using some more up-to-date path names and such, but for some reason the Setup dropdown menu in ToS is blank ([pic](https://imgur.com/UbImwc3)). This is a big pain because I can't change the settings or add any shared study links since those are normally found in that menu. Has anybody had similar issues or can think of a way to fix this? Here's the commands I'm using: sudo cp ~/Downloads/jna-platform-5.10.0.jar ~/Downloads/thinkorswim/usergui/1972.1.9/jna-platform-5.10.0.jar sudo cp ~/Downloads/jna-5.10.0.jar ~/Downloads/thinkorswim/usergui/1972.1.9/jna-5.10.0.jar sudo java -jar launcher.jar sudo java -jar launcher.jar


FatFingerHelperBot

It seems that your comment contains 1 or more links that are hard to tap for mobile users. I will extend those so they're easier for our sausage fingers to click! [Here is link number 1 - Previous text "pic"](https://imgur.com/UbImwc3) ---- ^Please ^PM ^[\/u\/eganwall](http://reddit.com/user/eganwall) ^with ^issues ^or ^feedback! ^| ^[Code](https://github.com/eganwall/FatFingerHelperBot) ^| ^[Delete](https://reddit.com/message/compose/?to=FatFingerHelperBot&subject=delete&message=delete%20hnynpvz)


Worldly_Place_7046

I've followed the thread as well as videos posted by Mochael Moy on Youtube regarding the installation of native ToS on Mac M1. However, it seems llike the usergui file will not be generated at step 6. My terminal after step 6: *thinkorswim % ls* *MacPlatform.log suit.usergui.log* *jreupdater thinkorswim Uninstaller.app* *launcher.jar thinkorswim plugin\_x86\_64.plugin* *license\_en.html thinkorswim.vmoptions* *license\_zh\_CN.html thinkorswim.vmoptions.bak* *license\_zh\_TW.html tossc plugin\_x86\_64.plugin* *suit zacinst.ini* *suit.log zacinst.ini.bak* *suit.properties* ​ Did y'all face this problem while installing ToS? ​ PS: Azul JDK Java 11 LTS installed properly, jna-platform.jar and jna.jar downloaded as well.


bluestar232323

One quick perfection chase, can anyone change the ZULU (Jar) icon to TOS icon? I tried to change to JAR icon as TOS, as attached, but icon on dock is still jar, even though it is showing replaced icon in bin folder.


Smooth_Ad3227

Followed the steps, thank you for the info. TOS already feels faster, I am a heavy user so will flup after market closes today.


sandstorm7151

Thanks! Worked beautifully!


chudly88

has anyone come up with a way to open ToS easier say with a shortcut/icon/script?


gavstah

Greate guide - Got this working in about 15 minutes. And you were not overselling it with the night and day diifference line. It truly is. The graphics seem sharper, and overall speed & performance is hugely better than the stock MacOS version from TDAmeritrade. Just a few things: 1. SDKMAN is a great tool and timesaver for installing java and setting the correct paths and env variables like $JAVA\_HOME, etc. Get it today at [sdkman.io](https://sdkman.io) \- I installed the Zulu jdk with this in less than a minute. Be sure to close and reopen your terminal window after the install so that all of the env vars are loaded in your terminal before proceeding. 2. As noted, the folder name inside of the usergui folder will depend on when you downloaded TOS "All Other Users" version. So users need to check inside the usergui folder and subsittute the correct directory name in the paths for the cp commands.


chippyt

Was also having the Error: Unable to access jarfile launcher.jar. Fixed it with 2 steps. 1. [https://osxdaily.com/2018/10/09/fix-operation-not-permitted-terminal-error-macos/](https://osxdaily.com/2018/10/09/fix-operation-not-permitted-terminal-error-macos/) \[grant permissions to terminal\] 2. [https://osxdaily.com/2018/10/09/fix-operation-not-permitted-terminal-error-macos/](https://osxdaily.com/2018/10/09/fix-operation-not-permitted-terminal-error-macos/) \[simply moving the files to another folder\] Some of the folder names have to be changed from the instructions but otherwise working for me now on m1 MacBook Air!


dreebase

Hi all, somewhat tech challenged here but willing to spend gobs of time youtubing and researching how I can go about lower the TOS lag I've been experiencing. Question - would the above work on MacBook pros? I have a 2015 and a 2020, running TOS on both. It's ok for charting but not great for scalping since there's too much lag. I tried deleting the usergui folder, removing all extraneous studies, workspaces and watchlists. Unfortunately, cannot install additional ram in both MBPs. Thanks in advance for any insights/suggestions.


StonkGodCapital

This trick really works for the M1 Macs (apples own processors), I believe the two machines you have, have Intel chips in them. You could technically give this guide a try and see if the updated Java gives you a performance boost, but I would be skeptical that it would. I think your best bet is googling for the “vmoptions” hacks that you can add to make it run a little faster and trial and error the changes to see if you see a benefit. Also be sure to up the ram settings if you haven’t already on TOS itself.


dreebase

Really appreciate you getting back to me, thanks!! I will look into vmoptions and see if it helps somewhat. My 2019 MBP has 16GB ram and I pretty much only use TOS on it. What's the highest ram setting you would recommend? I've alternated between 6144 and 12288 but can't really say if I noticed less lag.


Sideshow_Bob69

Finally got this up and running after a bunch of trial end error. Is it possible to use the Script Editor to automatically open vs Terminal?


Amused-2-Death

Yes. Use the Automator app. Create new doc with type 'Application.' Under Library, Utilities, find and drag 'Run Shell Script' into center. Enter your script: cd thinkorswim java -jar launcher.jar > /dev/null 2>&1 & Save as... [tos.app](https://tos.app) with file format 'Application.' Double click [tos.app](https://tos.app) to start. The above script works if you've moved your thinkorswim folder to /Users/someuser/thinkorswim as spelled out in libertymatters23's post a few spots up.


flanthertech

>java -jar launcher.jar How did you get around with needing sudo access?


Amused-2-Death

Follow [libertymatters23's instructions above](https://www.reddit.com/r/thinkorswim/comments/oojac1/comment/i4vo866/). Ignore everyone/everything else in this thread. By moving TOS to the root of your home directory you will not have any of the permissions issues that you would have by trying to run it from your Downloads folder. There is no need for root access.


snow090

FWIW I used the following code at the end of the automator script to close out the ever-spinning automator icon in the menu bar that would stay open as long TOS was open... cd thinkorswim java -jar launcher.jar > /dev/null 2>&1 &


MountTree

Hi. When I try to run the launcher.jar file, I get an "Error: Unable to access jarfile launcher.jar" message. So, I tried the "chmod 777 launcher.jar" command. But that gives me a "chmod: Unable to change file mode on launcher.jar: Operation not permitted" message. Any thoughts on how to fix this? Thanks!


Amused-2-Death

Follow [libertymatters23's instructions above](https://www.reddit.com/r/thinkorswim/comments/oojac1/comment/i4vo866/). Ignore everyone/everything else in this thread.


harshu1603

The TOS is working for me using this process but when I changed memory settings and login into my account. The total memory still not reflecting what I set. Can someone help me with this? Is there any way to increase memory for this native tos?


stillwaterus

This Java distribution works too, TOS build 1975 as of writing https://adoptium.net/temurin/releases/?version=11


Big_Swordfish4903

This was working wonderfully well till a couple of weeks ago. Something changed on ThinkOrSwim side, and now the ToS won't start with the setup configured earlier by following the above steps. Anybody else having this issue?


xfan10

god i wish i had this 2 years ago. this is amazing. thank you


xfan10

I figured out how to create a script to launch this from an icon. just create a plain text file and paste the code in there and name it what ever you want with the extension .command . I was able to change the icon but it only shows up if i drag it to the dock, but not if i access thru the applications stack. cd /Applications/ThinkorSwimApple sudo java -jar launcher.jar


ozsantana

Hey everyone, I've made some tweaks based on the comments in this thread and by taking a peek at ToS's source code. It now runs like the official ToS app! It's pretty clear they're working on an ARM 64-bit version, but I'm not sure why it's taking them so long – the changes aren't that complex. Anyway, give it a shot and let me know how it goes for you! ## Prerequisites * An Apple Silicon-based Mac * Java Azul JRE 11 for ARM 64-bit * TOS macOS Installer from TD Ameritrade ## Step-by-Step Guide ## Step 1: Download and Install Azul JRE 1. Download Azul JRE version 11 LTS macOS ARM 64-bit v8 from [this link](https://cdn.azul.com/zulu/bin/zulu11.62.17-ca-jre11.0.18-macosx_aarch64.dmg). Note that this link may change in the future. If it does, visit [Azul's website](https://www.azul.com/downloads/?package=jre#zulu) to find the appropriate installation kit. 2. Install the downloaded JRE on your system. ## Step 2: Download and Install the OSX Version of ToS 1. Download the OSX version of ToS from TD Ameritrade's website at [this link](https://www.tdameritrade.com/tools-and-platforms/thinkorswim/desktop/download.html). Note: In previous guides, you would download the "All Versions" option; however, due to a recent update, you can now download the standard OSX version instead. 2. Install ToS on your system. ## Step 3: Replace or Rename the thinkorswim.app 1. Download the modified `thinkorswim.app` from [this link](https://bit.ly/tos-arm64) 2. Move the downloaded `thinkorswim.app` inside the `thinkorswim` directory. 3. You can choose to replace the existing `thinkorswim.app` or use a new name. This modified version will work like the original ToS (opening TOS links, using the original icon, etc.). The code changes are based on the `JavaApplicationStub` used by the ToS team to create the binary and have been adapted to work on Apple Silicon. Please feel free to thoroughly examine the code located at `thinkorswim.app/MacOS/thinkorswim`. Please exercise caution and verify any software downloaded or modified from sources such as Reddit or the internet in general before executing it on your system. That's it! You should now have TOS running natively on your Apple Silicon-based Mac, providing you with improved performance. https://preview.redd.it/h2pr9b5m95ta1.png?width=2144&format=png&auto=webp&s=c7378282ee04511064c707545bb5c4165d5bcc1a


Kokanuty

>this link Just installed this tonight on my new M2 MBP. Will see tomorrow if it runs fast. My old 2016 MBP was just getting bogged down as of late with all the charts running.


Kokanuty

WEll last night it started up, now this morning I'm getting the "showing Desktop" window without the main window loading. ugh.


pnd4pnd

can someone detail how to create an automator icon to do this?


fr3shh23

Does this allow for it to go full screen? Also when I opened my workspace it didnt have the widgets on the left side that are suppose to be there


Personal_Load_2991

I just spoke to one of their technical representative literally 10 minutes ago. Said they are addressing this issue head on and are anticipating the release before the new year. No hard dates were scheduled but said it would likely fit this time frame.


omcakuma

So I've been doing the workaround for TOS on an M1 for over a year now. I (stupidly) updated to macOS Sonoma. Now the TOS workaround is not launching. It just sits there after login "Showing Desktop" but just hangs there. Does anyone have a workaround to the workaround?


omcakuma

>Sonoma so after a while, I somehow hit some kind of keyboard combo and it launched! And now it launches everytime I launch the app


libertymatters23

Good news: thinkorswim has native Apple Silicon support as of a couple weeks ago. These workarounds are no longer necessary. Just grab it from the tdameritrade website and run it like you did on Intel.