Welcome to the new FlexRadio Community! Please review the new Community Rules and other important new Community information on the Message Board.
If you are having a problem, please refer to the product documentation or check the Help Center for known solutions.
Need technical support from FlexRadio? It's as simple as Creating a HelpDesk ticket.

Connecting to Flex 6000/8000 radio via SmartLink

Roger
Roger Member ✭✭

I'm in the process of writing an application that I want to interoperate with the Flex 6000/8000 series of radios. I'd like to be able to connect remotely via SmartLink and have been doing some "googling" without finding a great deal of information on the process. I did find a program that Mark Hanson, W3II wrote and posted demonstrating the process with version 2 of the Flex API. From what I can tell this uses the API prior to its migration to .NET 4.6.2.

I have some questions:

1.) Does anyone have any SmartLink code that uses the version 3 Flex API that they'd be willing to share.

2.) in Mark's code I found references to an auth0 domain and ClientID. Are those the current information? Are the OK to use? Do I need any permission from Flex to use this information?

3.) Are there any "gotchas" that I should know about before I try to connect to my Flex 6600 remotely via SmartLink?

73 and good DX,

de Roger, NK1I

Best Answer

  • MarkH
    MarkH Member
    Answer ✓
    SmartLink .netframework sample has been updated, targets v3 SDK.

Answers

  • Mark_W3II
    Mark_W3II Member ✭✭✭

    Roger, reach out to me directly. I would like to understand your environment / target details to see if I can be of some help. mark AT mkcmsoftware.com

  • Roger
    Roger Member ✭✭

    Mark, thanks for getting back to me. I'm happy to let the world know what my crazy idea is right here, that way others can learn from my mistakes.

    My thought is to take Lens, KD0RC Teensy Maestro project and connect it to an Android device, for the screen via an OTG cable and the app I want to write. Basically, I need a version of SSDR running on either an Android device or the Teensy processor, how the workload is divided up is still up in the air. My grand plan calls for the Android app to be Android Auto compatible for the ultimate roving machine. I can then either connect remotely to my home QTH via SmartLink or to a Flex 6600 with a couple of Q5 VHF / UHF transverters I'll have in an eight "U" portable music rack in the back of the vehicle.

    I tried building your project and it won't build with the current version of FlexLib. I seem to remember a change a couple of years back where Flex moved from .NET 4.6.1 to 4.6.2 and there were a number of changes.

    My first goal is to get connected to my 6600 via SmartLink on Windows so I can understand how it works before trying to port the software off to other platforms like the Teensy and Android. Len seems to have the local connection working great, SmartLink is the only piece missing there.

    73 and good DX,

    de Roger, NK1I

  • KD0RC
    KD0RC Member, Super Elmer Moderator

    Hi Roger, I got lazy with the TeensyMaestro. When I was trying to figure out how to get SmartLink to work, I stumbled across SoftEther VPN which works so well that I kind of gave up on SmartLink. I have always wanted to incorporate it, however, so as you go down this ambitious path, I may follow along!

  • Mark_W3II
    Mark_W3II Member ✭✭✭

    I have made minor modifications to the FlexAPI in order to build it for .NET core which allowed me to produce FRStackWebAPI for AMD/Intel 86/64, Apple M and ARM 32/64 processors for Windows, OSX, Linux variants. The OEM FlexAPI is targeted at .NET Framework and the Windows UI which is today's platform for SmartSDR. The FRStack2/3 Windows Application uses the same target. There are many approaches to achieve your goal of using an Android device as the UI host and potential FlexAPI based client host app. Technologies like Microsofts MAUI and Avalonia UI are possible candidates. Back to SmartLink, the technology has not fundamentally changed so I will look into updating my sample if that helps. What is needed for your project is a new .NET core API that can be leveraged from the platforms and UI mentioned above. That will take more planning and time.

  • Roger
    Roger Member ✭✭

    Good afternoon, Len and Mark,

    Len, you're certainly welcome to follow along with me. If / when I get SmartLink working on the Teensy I'll let you know and get you access to the code. My next major hurdle with the Teensy is finding out if there are Auth0.AuthenticationApi.dll and Auth0.Core.dll modules to run on the Teensy platform. If some equivalent Auth0 modules aren't available for the Teensy platform that could be a real showstopper. I haven't checked yet, however I'm pretty sure there are Auth0 modules for Android.

    Mark, if you could get you SmartLink demo code to build against the current 3.8.19 FlexLib without much effort that would be very helpful for myself and anyone else who wanted to use SmartLink in their application. Do you know if it's OK to use the link and clientID that's in you SmartLink demo program or do I need to get one assigned for my application? As you work to build you SmartLink demo program be aware that the Auth0 dll has been split into two dll files.

    73 and good DX,

    de Roger, NK1I

  • Mark_W3II
    Mark_W3II Member ✭✭✭
    edited October 23

    Please provide exact Teensy board you are targeting. The source code of the Auth0 DLLs is under public license via MIT License agreement and can be found at https://github.com/auth0/auth0.net.
    As far as the link is concerned, it is a link to FRS OAUTH server for SmartLink. The OAUTH technique being used is called Client Credentials Flow, the ClientID is the ID being used for SmartSDR clients, the validation occurs against the unique Username / Password submitted for authentication.

  • Roger
    Roger Member ✭✭

    Good afternoon, Mark,

    I'm targeting the Teensy 4.1 just the same as Len did for his Teensy Maestro. I want to build upon Len's work since it seems he's done a good job thinking through his design.

    Thanks for the link to the Auth0 code on GitHub. I'll take a look at that code when I try to build my code for the Teensy. My first step is to get something running on Windows so I know I have a somewhat correct understanding of how the Flex API works.

    I'd never looked at Avalonia UI and I'm not sure I like the fact that it doesn't produce and application with a native look and feel. I have messed with MAUI on a couple of small Windows projects, and it has a lot of potential. Either way I think I'd need to get the Flex API to a point where it would build on .NET 8 and above.

    As I'm looked at this project, I've always thought that DAX was going to be the hardest part to replicate on any non-Windows / C# environment because of the need to interface with the platform sound system. For AM and SSB phone modes I always figured I could live without CAT control.

    73 and good DX,

    de Roger, NK1I

  • Roger
    Roger Member ✭✭

    Mark,

    This works perfectly and will be a great help in my quest to get my version of the Teensy Maestro running with a SmartLink login.

    If you change line 39 in the SmartLinkSetting.cs file to "Auth0LVM = new Auth0Model(new Auth0Client(domain, clientId, 480, 800, true));" you can use SSDR 3.8.19 version of Auth0 found in the SSDR 3.8.19 folder. The two numbers are the height and width of the login window that Auth0 presents.

    73 and good DX,

    de Roger, NK1I

  • Mike-VA3MW
    Mike-VA3MW Administrator, FlexRadio Employee, Community Manager, Super Elmer, Moderator admin

    Roger, if you need help, you can email me for details on how to contact engineering (va3mw@flexradio.com)

    Mike

Leave a Comment

Rich Text Editor. To edit a paragraph's style, hit tab to get to the paragraph menu. From there you will be able to pick one style. Nothing defaults to paragraph. An inline formatting menu will show up when you select text. Hit tab to get into that menu. Some elements, such as rich link embeds, images, loading indicators, and error messages may get inserted into the editor. You may navigate to these using the arrow keys inside of the editor and delete them with the delete or backspace key.