Falcon BMS Alternative Launcher (Easy Setup, Keep Joystick Assignments)
-
I did just this and no joy. AL fires up 4.35 but the keyboard commands didn’t transfer.
From memory this was my experience as well. The xml files have some sort of id in the filename (inside curly brackets) which is probably significant in a way I don’t understand.
-
I have been advised to add the “-mono” option to the launcher in order to try and get crash reports for 435.
I am wondering if this is what the “Debug” button in Alt Launcher does, or if a separate button could be added for “-mono”
EDIT: Just done my own testing and “Debug” does seem to be equivalent to “-mono”
-
Hi all,
Thanks for this great toolI have a little problem with the x52 pro joystick.
I wanted to use the mouse stick as I did before, like a 4axis hat, but when I make the change in the logitech program and go back to the alternate launcher, the pinky is no longer recognized.An idea ? someone who had the same problem?
Thank you in advance for your assistance -
So I have a franken-stick where I have a t16000m base using a CH fighterstick grip. Each device uses its own USB plug so when I open Alternative Launcher, I see both the T16000m and the Fighterstick as mappable devices. The pitch and roll axes are controlled by the T16000m, but I want to use the hat switch on the grip to control my trim. However, Alt. Launcher will only recognize the hat switch on the device that controls the roll/pitch axes (t16000m).
Is there any way around this?
-
@abfagin:
So I have a franken-stick where I have a t16000m base using a CH fighterstick grip.
That sounds awesome. I don’t know about Alt Launcher but if you point me to any photos/videos or guides to do that… I will try to help guide you through hand-editing the .cfg and .key files…
\Falcon BMS 4.35\Docs\BMS-Technical-Manual.pdf
sec 10.8.3\Falcon BMS 4.35\User\Config\falcon bms.cfg
set g_nNumOfPOVs 1 set g_nPOV1DeviceID 3 // this will depend on order of rows in your DeviceSorting.txt file, see sec 10.8.3
There is some inconsistency in the docs about whether you count the rows in DeviceSorting.txt, starting at “1” or “2”. You may have to try it both ways…
There is also some ambiguity, for your case, of only having 1 hat but on a secondary device, whether that becomes dx-hat #0 & #2(shifted) or #1 & #3(shifted).
You can probably just hedge that, by just assigning the same set of callbacks to both 0/2 and 1/3.
Here’s what my key file section for dx hat bindings would look like… you can probably copy/paste and modify as you like…
[Edit: if your key file is not super well organized … I think the signature thing to search for (eg. use [ctrl+F] in notepad) to locate all the hat-bindings is the " -1 -3 " sequence… as far as I can see that doesn’t occur anywhere else in the stock key files.]
##---------------------------------------- ## Primary POV Hat => slew cursor + elev/range SimCursorUp 0 -1 -3 0 0x0 -1 SimRangeKnobUp 0 -1 -3 1 0x0 -1 ## NE => man-rng knob, zoom in SimCursorRight 0 -1 -3 2 0x0 -1 SimRangeKnobDown 0 -1 -3 3 0x0 -1 ## SE => man-rng knob, zoom out SimCursorDown 0 -1 -3 4 0x0 -1 SimRadarElevationDown 0 -1 -3 5 0x0 -1 ## SW => ant elev, down SimCursorLeft 0 -1 -3 6 0x0 -1 SimRadarElevationUp 0 -1 -3 7 0x0 -1 ## NW => ant elev, up ##---------------------------------------- ## Primary POV Hat (shifted) => TMS switch SimTMSUp 2 -1 -3 0 0x0 -1 SimDoNothing 2 -1 -3 1 0x0 -1 SimTMSRight 2 -1 -3 2 0x0 -1 SimDoNothing 2 -1 -3 3 0x0 -1 SimTMSDown 2 -1 -3 4 0x0 -1 SimDoNothing 2 -1 -3 5 0x0 -1 SimTMSLeft 2 -1 -3 6 0x0 -1 SimDoNothing 2 -1 -3 7 0x0 -1 ##---------------------------------------- ## Secondary POV Hat => same bindings as above SimCursorUp 1 -1 -3 0 0x0 -1 SimRangeKnobUp 1 -1 -3 1 0x0 -1 ## NE => man-rng knob, zoom in SimCursorRight 1 -1 -3 2 0x0 -1 SimRangeKnobDown 1 -1 -3 3 0x0 -1 ## SE => man-rng knob, zoom out SimCursorDown 1 -1 -3 4 0x0 -1 SimRadarElevationDown 1 -1 -3 5 0x0 -1 ## SW => ant elev, down SimCursorLeft 1 -1 -3 6 0x0 -1 SimRadarElevationUp 1 -1 -3 7 0x0 -1 ## NW => ant elev, up ##---------------------------------------- ## Secondary POV Hat (shifted) => same as above SimTMSUp 3 -1 -3 0 0x0 -1 SimDoNothing 3 -1 -3 1 0x0 -1 SimTMSRight 3 -1 -3 2 0x0 -1 SimDoNothing 3 -1 -3 3 0x0 -1 SimTMSDown 3 -1 -3 4 0x0 -1 SimDoNothing 3 -1 -3 5 0x0 -1 SimTMSLeft 3 -1 -3 6 0x0 -1 SimDoNothing 3 -1 -3 7 0x0 -1
-
Thanks Airtex,
I read through the Technical Manual and found what you’re referring to with regards to editing the config file and assigning the correct device ID. Unfortunately, it seems that alt. launcher overwrites my changes so unless there’s a way to prevent that overwrite from occurring, I’ll have to stop using alt. launcher or deal with not being able to use the POV hat on the CH stick?
-
Darn. Might have to open an issue at https://github.com/chihirobelmo/FalconBMS-Alternative-Launcher/issues
Maybe 3 or 4 issues… definitely it should
(a) throw a warning at startup if it encounters something in the keyfile (eg. multiple hat devices) which it can’t roundtrip serialize, and
(b) not overwrite your key file if you didn’t make any changes, and
definitely not overwrite it if you set the file to readonly -
Darn. Might have to open an issue at https://github.com/chihirobelmo/FalconBMS-Alternative-Launcher/issues
Maybe 3 or 4 issues… definitely it should
(a) throw a warning at startup if it encounters something in the keyfile (eg. multiple hat devices) which it can’t roundtrip serialize, and
(b) not overwrite your key file if you didn’t make any changes, and
definitely not overwrite it if you set the file to readonlyFWIW I was able to resolve this by doing the following:
1. Turning off setup override in AL. Upon launch, AL was over-writing the device ID I wanted the POV hat to be associated with.
2. After turning off setup override, setting the device ID’s accordingly in the “falcon bms.cfg” file, as you suggested
3. Opening up the Full key file and manually adding the code from the first two bullet points of section 10.9.2 from the Technical Manual under the CH Fighterstick section of the keyfile.I suppose if I ever want/need to use AL again to make the keybinds easier, I can just disable the setup override, make the changes I want to make, and redo the 3 steps above.
Also, regarding the Frankenstick, I just followed
video. I didn’t use putty to affix the CH stick onto the T16000m base, but rather mocked up an adapter piece and had it 3D printed out of steel. I also didn’t snip the connectors off the wires of the CH Fighterstick as the video creator did, since crimping new connectors on would have been a huge pain, so I just had to feed the wires through the holes in the T16000m gimbal. Feeding the wires through the holes wasn’t terribly difficult, but it does require a lot of patience and some finesse (a set of small picks and small needle nose pliers is also vital). Taking pictures of how the gimbal is assembled and installed was crucial in making sure I was assembling the gimbal and feeding the CH Fighterstick wires through at the correct time to keep anything from getting pinched. I must have gone through this step 3 or 4 times and was a huge PITA. Lastly, this sounds dumb, but taking pictures of which end of the male connector (of the Fighterstick wires) is “up” when inserting into the female portion is crucial. Also it’s important to note that the male connectors have a little barb that needs to be pryed upwards to prevent faulty connections when reconnecting to the main PCB.Space Reserved for Cartoon Sketch
Threw some Nyogel on the gimbal pivot surfaces and I’ve been extraordinarily happy with it thus far. Resolution and accuracy is leaps and bounds better than the stock Fighterstick and I don’t have any stiction around center which I’ve heard some Warthog owners don’t like.
If it ever need to go through the process again due to parts breaking or intermittent connections, maybe I’ll take some pictures for posterity, since there was very little information out there on performing this mod.
-
Cool glad you got it working … what g_nPOV1DeviceID value did you end up using (relative to what row # is your CH stick in DeviceSorting.txt)?
Thanks for the video link … too deep for me … but yeah I agree I’d want some sort of rigid coupling.
-
I’m currently noodling around with AL running on Linux (Mint 20, wine-5.5) and cannot get Hub.exe to launch. I’ve extracted version 1.60 to BMS’ Bin/x86 directory as indicated and also install dotnet45 in this wineprefix, but AL won’t launch:
Unhandled exception: 0xe0434352 in 32-bit code (0x7b00dfe2).
Register dump:
CS:0023 SS:002b DS:002b ES:002b FS:006b GS:0063
EIP:7b00dfe2 ESP:0032f024 EBP:0032f118 EFLAGS:00000246( - – I Z- -P- )
EAX:0032f030 EBX:00000000 ECX:0032f0e4 EDX:00000010
ESI:0032f0e4 EDI:01031e08In the launching terminal I’m seeing this message, maybe it’s the wrong dotnet version…:
001b:err:ntoskrnl:ZwLoadDriver failed to create driver L"\Registry\Machine\System\CurrentControlSet\Services\NDIS": 00000001
0026:err:ntoskrnl:ZwLoadDriver failed to create driver L"\Registry\Machine\System\CurrentControlSet\Services\wineusb": c0000142
0032:err:ole:CoGetContextToken apartment not initialised
0009:err:eventlog:ReportEventW L"Application: Hub.exe\nFramework Version: v4.0.30319\nDescription: The process was terminated due to an unhandled exception.\nException Info: System.Windows.Markup.XamlParseException\nStack:\n at System.Windows.Markup.XamlReader.RewrapException(System.Exception, System.Xaml.IXamlLineInfo"…Unhandled Exception: System.Windows.Markup.XamlParseException: Set property ‘System.Windows.ResourceDictionary.Source’ threw an exception. —> System.TypeLoadException: Could not load type ‘System.Runtime.CompilerServices.ExtensionAttribute’ from assembly ‘mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’.
at System.ModuleHandle.ResolveMethod(RuntimeModule module, Int32 methodToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount)
at System.ModuleHandle.ResolveMethodHandleInternalCore(RuntimeModule module, Int32 methodToken, IntPtr[] typeInstantiationContext, Int32 typeInstCount, IntPtr[] methodInstantiationContext, Int32 methodInstCount)
at System.ModuleHandle.ResolveMethodHandleInternal(RuntimeModule module, Int32 methodToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext)
at System.Reflection.CustomAttributeData…ctor(RuntimeModule scope, CustomAttributeRecord caRecord)
at System.Reflection.CustomAttributeData.GetCustomAttributes(RuntimeModule module, Int32 tkTarget)
at System.Reflection.CustomAttributeData.GetCustomAttributesInternal(RuntimeAssembly target)
at System.Reflection.RuntimeAssembly.GetCustomAttributesData()
at System.Reflection.CustomAttributeData.GetCustomAttributes(Assembly target)
at System.Resources.ManifestBasedResourceGroveler.GetNeutralResourcesLanguage(Assembly a, UltimateResourceFallbackLocation& fallbackLocation)
at System.Resources.ResourceManager.CommonSatelliteAssemblyInit()
at System.Resources.ResourceManager…ctor(String baseName, Assembly assembly)
at MS.Internal.Resources.ResourceManagerWrapper.get_ResourceManager()
at MS.Internal.Resources.ResourceManagerWrapper.GetStream(String name)
at MS.Internal.AppModel.ResourcePart.EnsureResourceLocationSet()
at MS.Internal.AppModel.ResourcePart.GetStreamCore(FileMode mode, FileAccess access)
at System.IO.Packaging.PackagePart.GetStream(FileMode mode, FileAccess access)
at System.IO.Packaging.PackWebResponse.CachedResponse.GetResponseStream()
at System.IO.Packaging.PackWebResponse.GetResponseStream()
at System.IO.Packaging.PackWebResponse.get_ContentType()
at MS.Internal.WpfWebRequestHelper.GetContentType(WebResponse response)
at MS.Internal.WpfWebRequestHelper.GetResponseStream(WebRequest request, ContentType& contentType)
at System.Windows.ResourceDictionary.set_Source(Uri value)
at System.Windows.Baml2006.WpfSharedBamlSchemaContext.<create_bamlproperty_resourcedictionary_source>b__1c4(Object target, Object value)
at System.Windows.Baml2006.WpfKnownMemberInvoker.SetValue(Object instance, Object value)
at MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(XamlMember member, Object obj, Object value)
at MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(Object inst, XamlMember property, Object value)
–- End of inner exception stack trace —
at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
at FalconBMS_Alternative_Launcher_Cs.App.InitializeComponent()
at FalconBMS_Alternative_Launcher_Cs.App.Main()
at FalconBMS_Alternative_Launcher_Cs.Program.Main()
wine: Unhandled exception 0xe0434352 in thread 9 at address 7B00DFE2 (thread 0009), starting debugger…Any ideas would be most welcome!
Thanks & all the best,
Uwe</create_bamlproperty_resourcedictionary_source>
-
I’m currently noodling around with AL running on Linux (Mint 20, wine-5.5) and cannot get Hub.exe to launch. I’ve extracted version 1.60 to BMS’ Bin/x86 directory as indicated and also install dotnet45 in this wineprefix, but AL won’t launch:
Unhandled exception: 0xe0434352 in 32-bit code (0x7b00dfe2).
Register dump:
CS:0023 SS:002b DS:002b ES:002b FS:006b GS:0063
EIP:7b00dfe2 ESP:0032f024 EBP:0032f118 EFLAGS:00000246( - – I Z- -P- )
EAX:0032f030 EBX:00000000 ECX:0032f0e4 EDX:00000010
ESI:0032f0e4 EDI:01031e08In the launching terminal I’m seeing this message, maybe it’s the wrong dotnet version…:
001b:err:ntoskrnl:ZwLoadDriver failed to create driver L"\Registry\Machine\System\CurrentControlSet\Services\NDIS": 00000001
0026:err:ntoskrnl:ZwLoadDriver failed to create driver L"\Registry\Machine\System\CurrentControlSet\Services\wineusb": c0000142
0032:err:ole:CoGetContextToken apartment not initialised
0009:err:eventlog:ReportEventW L"Application: Hub.exe\nFramework Version: v4.0.30319\nDescription: The process was terminated due to an unhandled exception.\nException Info: System.Windows.Markup.XamlParseException\nStack:\n at System.Windows.Markup.XamlReader.RewrapException(System.Exception, System.Xaml.IXamlLineInfo"…Unhandled Exception: System.Windows.Markup.XamlParseException: Set property ‘System.Windows.ResourceDictionary.Source’ threw an exception. —> System.TypeLoadException: Could not load type ‘System.Runtime.CompilerServices.ExtensionAttribute’ from assembly ‘mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’.
at System.ModuleHandle.ResolveMethod(RuntimeModule module, Int32 methodToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount)
at System.ModuleHandle.ResolveMethodHandleInternalCore(RuntimeModule module, Int32 methodToken, IntPtr[] typeInstantiationContext, Int32 typeInstCount, IntPtr[] methodInstantiationContext, Int32 methodInstCount)
at System.ModuleHandle.ResolveMethodHandleInternal(RuntimeModule module, Int32 methodToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext)
at System.Reflection.CustomAttributeData…ctor(RuntimeModule scope, CustomAttributeRecord caRecord)
at System.Reflection.CustomAttributeData.GetCustomAttributes(RuntimeModule module, Int32 tkTarget)
at System.Reflection.CustomAttributeData.GetCustomAttributesInternal(RuntimeAssembly target)
at System.Reflection.RuntimeAssembly.GetCustomAttributesData()
at System.Reflection.CustomAttributeData.GetCustomAttributes(Assembly target)
at System.Resources.ManifestBasedResourceGroveler.GetNeutralResourcesLanguage(Assembly a, UltimateResourceFallbackLocation& fallbackLocation)
at System.Resources.ResourceManager.CommonSatelliteAssemblyInit()
at System.Resources.ResourceManager…ctor(String baseName, Assembly assembly)
at MS.Internal.Resources.ResourceManagerWrapper.get_ResourceManager()
at MS.Internal.Resources.ResourceManagerWrapper.GetStream(String name)
at MS.Internal.AppModel.ResourcePart.EnsureResourceLocationSet()
at MS.Internal.AppModel.ResourcePart.GetStreamCore(FileMode mode, FileAccess access)
at System.IO.Packaging.PackagePart.GetStream(FileMode mode, FileAccess access)
at System.IO.Packaging.PackWebResponse.CachedResponse.GetResponseStream()
at System.IO.Packaging.PackWebResponse.GetResponseStream()
at System.IO.Packaging.PackWebResponse.get_ContentType()
at MS.Internal.WpfWebRequestHelper.GetContentType(WebResponse response)
at MS.Internal.WpfWebRequestHelper.GetResponseStream(WebRequest request, ContentType& contentType)
at System.Windows.ResourceDictionary.set_Source(Uri value)
at System.Windows.Baml2006.WpfSharedBamlSchemaContext.<create_bamlproperty_resourcedictionary_source>b__1c4(Object target, Object value)
at System.Windows.Baml2006.WpfKnownMemberInvoker.SetValue(Object instance, Object value)
at MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(XamlMember member, Object obj, Object value)
at MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(Object inst, XamlMember property, Object value)
–- End of inner exception stack trace —
at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
at FalconBMS_Alternative_Launcher_Cs.App.InitializeComponent()
at FalconBMS_Alternative_Launcher_Cs.App.Main()
at FalconBMS_Alternative_Launcher_Cs.Program.Main()
wine: Unhandled exception 0xe0434352 in thread 9 at address 7B00DFE2 (thread 0009), starting debugger…Any ideas would be most welcome!
Thanks & all the best,
Uwe</create_bamlproperty_resourcedictionary_source>
Hi Uwe. I got it working on Ubuntu, but I’m not at my computer until later tonight to check my config. Remind me tomorrow if I forgot to check.
Edit: I checked. I have installed through winetricks: d3dcompiler_43, dotnet40, dotnet45, dotnet46 and msxml3. I guess you just need the dotnet ones. Not sure if you need them all and honestly I don’t remember why I have all this installed XD So I would install one by one and try until The launcher works avoiding to install unnecessary things.
-
Hi guys, just one question: is working fine with the new update U2 ?
-
@tdr:
Hi guys, just one question: is working fine with the new update U2 ?
Simple answer yes
Gesendet von meinem SM-G930F mit Tapatalk
-
AL does not recognize the buttons on Virpil Buttonbox when I try to assign them, it is also not able to map all buttons and axis on my VKB Gladiator MKII MCG or my Buddyfox A10 UFC.
Is there any development done on the AL? Manually editing the config seems to daunting and not really a task for 2021…
-
This post is deleted! -
I believe (and stand to be corrected) that it is a Windows DXinput issue. Windows can only recognise 32 buttons per joystick. Im using a Virpil in conjunction with Vjoy to split the buttons into different devices and Joystick Gremlin in order to remap the Virpil to these virtual devices. Hope this helps. (There is an Elite Dangerous tutorial on how to make this happen and some other guides on getting the selector switch to function properly aswell)
Wow, we have the exact same Hotas and Joysticks
-
Hi Folks,
Hopefully, I’m posting this in the right place.
Anyway, the BMS Alternate Launcher, has flopped for me. I was setting up my hotas profile one night, opened it up the next day to continue and the Launcher/ Key Mapping has an empty screen. There are no callbacks, not a single letter or number on the screen, so there is no way to map keys or buttons. I have reinstalled it, but it didn’t matter. I’m using it with 4.35.2 Anybody have any clues? -
Hi Folks,
Hopefully, I’m posting this in the right place.
Anyway, the BMS Alternate Launcher, has flopped for me. I was setting up my hotas profile one night, opened it up the next day to continue and the Launcher/ Key Mapping has an empty screen. There are no callbacks, not a single letter or number on the screen, so there is no way to map keys or buttons. I have reinstalled it, but it didn’t matter. I’m using it with 4.35.2 Anybody have any clues?Ok, so;
Day 1 all is well and you assigned HOTAS pushes\presses]\etc. for BMS 4.35.2 in Alt Launcher (1.60)
Day 2 you start AL and all the default MAPPING column descriptions and KEY column assignments are gone? What about the columns for your HOTAS equipment, they gone too? Maybe you can post a screenshot of the blank AL screen to help…
Is the HOTAS plugged in and seen by Windows? Is there a BMS-Full.key file in x:BMS Falcon 4.35\User\Config folder? Is there a Backup folder under Config with the original BMS-Full.key file? -
Thanks for the tip @Poltergeist! I have heard about VJoy but never used it. I’ll give it a go.
We must have excellent taste in input peripherals (I also have a Virpil T-50 but currently using the VKB… it’s a nice stick. The only thing I’d like is the dampeners that the new version has, makes snap rolls real easy ) -
Vjoy or not, Alt Launcher does not work for me at all.
I’m able to setup my hotas config in AL and I can see that it replaces the BMS Full.key file under User/Config on start.
The problem is that Falcon doesn’t “use” the file, none of my keybindings work…buttons, axis… it’s like nothing is configured.
If I check in game the key bindings…nothing is registered there despite it saying “BMS Full” as key file.
Please help, I’d like to get airborne