Customisation of New ODrive Generation

[ODrive going closed source] is bad news for me.
I agree that the disclosure is to protect your rights.
However, there is no way to use resources such as communication protocols or other remaining I/O changes.
So I think it’s possible to place important parts in a library or in a specific area and have a structure that allows users to modify even if it’s limited.

To ensure that only the products you sold work, you can create a security certification process to ensure that only the products you shipped work properly.

This is just my opinion.
I was worried because I’m using odrive very well and will continue to use it.

1 Like

Hi yes we have some ideas regarding this, but it will take a bit of time.
I would love to hear what kind of changes you want to be able to make?

I can trust the motor drive of ODRIVE.
So far, it has been available with the available firmware.

However, customers’ security requirements are increasing.
In this case, security authentication procedures, etc. can be added to the communication protocol, and this is my job.

However, if i can’t develop the firmware for Pro products, I can’t do this.

The easiest way for you to apply is to add a security authentication chip to the board.
Or implement the authentication process software-wise.

And you can make your source with the library and verify that it is genuine when you use the library and make it work.

Then you will be able to work with only interest in the movement of the important motor.

Users who need customization can operate the motor only with the library, so they can implement actions according to the customer’s needs, such as protocols.

A similar example is the softdevice of the BLE MCU of Nordic.

And I hope the development environment will be improved a little.

3 d printer’s latest source, latest firmware uses platformio marlin, " This is also going to do, many settings.
But with Auto Build Marlin (Extensions: Marketplace), it was very easy to develop.

Finally, what I want most now is that there are many parts that are not explained in the ODrive Reference. I hope that detailed explanations of this part will be added.

Honestly, I don’t understand ODrive’s decision to go closed-source at all. It seems like a total backwards-step to me.
Being open is what made it unique and special (it’s the O in ODrive, after all)
Now it is giving all of that up to join a sea of proprietary motion controllers, which all have, frankly, much better options for the kinds of people who want a proprietary motion controller.

Their proprietary competitors have SIL-3 rated Safe Torque Off, EtherCAT, CANOpen, higher voltages, higher currents, higher power density, better control performance, better reliability, lower EMC emissions, much better configuration & commissioning tools, proper commercial guarantees, and even the price isn’t that much more than ODrive.

So why would anyone want an ODrive? How did ODrive even become this popular if it is so outclassed? The answer is because it is hackable, it is open source. We can use it as a teaching tool to learn about motor controllers and power electronics, we can bend it to do new things that it wasn’t designed for.
Also, as an open source product, there is no risk: If in future it turns out that we need a feature that isn’t available, we can add it ourselves. Even if ODrive the company were to disappear, ODrive (3.x) will live forever, because it is open source.

It’s not just protocols - the advantage of having ODrive completely open-source (not just ‘softdevice’ support) is that we are able to implement custom low-level controllers for specific applications. We can make our own PCB variants too. Projects such as the Stanford Doggo would not have been possible with ODrive if it were closed source. And many of the customers are here because they wanted to replicate such open source projects.

The ODrive’s website used to read:

And you are invited!
This project is open source, both in hardware and software, and I warmly welcome anyone who wants to join.
– Oskar Weigl

We are not invited, nor warmly welcomed anymore, apparently. :cry:

I understand the developers were sad that very few people ever submitted pull requests back to the repo, but actually there are a lot of people (myself included) who would have done so, if there had been a bit more encouragement and engagement (and we still would, were it open source).

Rather than go closed source, a better approach would have been to switch to GPL license, with a paid commercial licensing option available to those customers who do not want to share their modifications. This is the approach taken by most 3D printer firmware, including Marlin, and many other embedded firmware products.
As for security against fakes, it would be enough to have the tool check the serial number from the CPUID ROM against the website, and print out a warning to the user that they have a ‘fake’, explaining the caveats with such a device, and encourage them to either buy a proper one or donate some money to support ODrive.

The other gripe that I have with ODrive nowadays, is that even the tools have gone closed-source. The odrivetool package on PyPi is a binary “wheel” package, containing compiled native DLLs. I didn’t know that it was possible or even allowed to have binary DLLs hosted on PyPi - I thought that everything had to be published from a public GitHub repo and that should not include .so or .dll files. Yet since version 0.5 the odrive package has included closed-source pyfibre .DLL and .so binaries, compiled for amd64, arm and armhf. (other architectures be damned)
What’s to stop someone publishing out-and-out malware via “pip” if it allows closed-source native binaries?

But finally, the Pro version is just not very useful, IMO.
I personally have 8x ODrive 3.6 and one ODrive pro which I got for testing purposes. The 3.6 are great, I love them. But I was very disappointed with the Pro, because I couldn’t get the onboard encoder to work from the odrivetool command line. It is now very complicated to set up using odrivetool. It seems as if they have geared everything in the pro towards using the web-based GUI, and I am not interested in a GUI, especially not a web-based one, because it is not scriptable.

The simple, powerful and extensible nature of ODrive is what made it great, but that is gone since Pro. :frowning_with_open_mouth:

1 Like

Ok so if I understand correctly, the main change you want to do to ODrive is to add a security/authentication layer on top of the communication? Is ODrive the only board in your system that you control? Is there scope to add security to other parts of the system instead?

Yes one idea we have is to have open and closed modules together, but it requires quite a bit of refactoring to get there, and since everything is changing all the time it’s hard to say that’s the solution we will do in the end.

Yes we are working hard on improving the documentation, thank you for your patience.

Yes I totally agree it’s very unfortunate to everyone who want to modify the insides. I wish we could keep that customization flexibility available without interruption. We do hope to restore this flexibility by some means in the future. Not sure if that’s going to be a mix of open and closed modules, a scripting host, move functionality to a higher level module, or something else. In either case we are well aware of the flexibility advantage of ODrive and it’s not something we want to throw away.
In the mean-time we do offer source access to people who can’t get what they need in a different way, and who we trust to honor an NDA. If you think that applies to you feel free to email info@odriverobotics.com and we can set something up.

The main issue with open source is that we get lots of lost sales because people would rather spin their own boards than pay us. We repeatedly see companies go make their own in the high 100’s range. We think it’s only fair that people pay for our work.
We have an enormous backlog of improvements we want to do and a very small dev team, I desperately wish we had money to 4x our dev team, so we can build more and better features, fix a huge pile of janky hacks, and improve our docs and user experience.
These two together simply means we have a responsibility to ourselves, and all our users who are waiting for auto-tuning and anti-cogging that isn’t half-broken, etc, to capture the revenue that is fair to ask for.

GPL doesn’t help with the above. A non-commercial licence might, but there are many problems with those. Overall we really don’t want to threaten to sue as our only way to get people to pay us for our product. We decided to go for a technological enforcement instead. Today that looks pretty bad because it removes quite a lot of flexibility, but we hope it will improve. The vast majority of users don’t poke around in the internals, but it’s unfortunate for the users who do.

We do not plan to drop support for odrivetool and/or scripted configuration in python. If things aren’t working properly just let us know we’ll try to fix it. It’s still beta and bugs are expected, but we hope to get things more stable pretty soon.

Thanks for the long time support.

Security protocols are just examples.
The communication required by the market such as EtherCAT and CANOpen varies. I think there’s a problem with you doing all of these.
I think you should be able to sell the board and keep all of this alive with the resulting profits.
So I understand that you changed it to private.
In my case, Odrive pro is not required unless there is a part that the developer can customize.
It will be compared to cheaper and more convenient boards, and I think the purchasing power is low.
That’s why I recommended that you secure the most important part and distribute it to the library.

I know that there are many ways because I have done security handling such as payment equipment.
It is your job to investigate, review and use this.
If you ask me to teach you the methods, I can’t.
The reason is that I don’t know what you want to be protected from, and it takes a lot of time and money to solve the problems that arise to protect them.

@towen Just a few mostly technical clarifications:

  • odrivetool is still open source in that you can inspect and modify the Python part of the code after downloading/installing the package.

    The binary files comprise the communication backend of odrivetool. You can find the source code here and it will remain open source (it’s slightly out of sync right now but on major updates we’ll update the public code). We moved this to C++ for maintenance/scalability reasons (code sharing between odrivetool and GUI, reduced friction to support additional languages, …).

  • PyPI as a distribution channel does not claim to be any more secure than downloading programs from arbitrary websites. Packages on PyPI can contain any files, be pushed by anyone (after claiming the package name) and, if installed as root, do anything with your system at install time.

  • I do think it’s important that we offer the GUI as downloadable native application at some point. We just didn’t get to that yet but it’s on our radar since day 1 of writing the GUI. The reason it’s a webapp for now is just that this is the easiest way for users to get started and for us to distribute to.

  • Checking a serial number against an online database is not a viable protection mechanism because non-genuine devices can just copy a genuine serial number and phoning home with a serial number is not privacy respecting nor does it work offline. There are other ways to solve this but this is mostly orthogonal to the open vs closed source question.

2 Likes

I agree that sucks.
GPL (or a non-commercial licence as you mentioned) should at least fix this issue though.

But the main thing that irked me was that there was no consultation on the matter. This forum is a community, but you didn’t really treat it like one when you made the decision to close the source. If you had said “Oi, you lot: Start contributing back to the repo and help us fix these issues (or donate some money so we can pay someone to do it) or else we’re going to abandon the open source project and go closed source” then we would have had the chance to prevent this.

The issue with going for technological means to protect your rights means that you now have to spend a hell of a lot of dev time implementing it, when you could be working on your backlog of features and bugfixes.

NDA access is an option, but my problem with that (and the reason I didn’t take you up on your offer earlier) is that it effectively means agreeing to never contribute anything to the open source 3.6 repo because of the risk that you could at some point in future be accused of stealing ideas from the NDA repo. :frowning:

I looked at the Pro and was thinking of getting one but the features they added to it wasn’t what I needed.
I believe if I was building a large 3D printer or CNC I would look at it closer. If designers want to keep it closed for now that is understandable just to keep a handle on beta bugs and to protect their design interest. After they recoup their development costs they may open source the project or not.

Odrive 56v is the device for me. I am working on 2 wheel and 4 wheel drive devices, so 1 or 2 Odrives is all I need for now. I have seen videos of the Asian clones and even if they are as durable as the Originals they don’t have the community. I have learned a lot from this forum about BLDC motors and encoders; plus I’m still learning. “I will always buy where I see good quality and support.” When I decided to go to BLDC I bought several STMicro development boards got no where with them. I might be able to use them now from what I have gleaned from this forum; but the Odrive 56v is handling everything I throw at it fine. (knock on wood):slight_smile:

1 Like

ODrive Pro should rename to CDrive beta

Seriously though,

They have made a business decision, and they will bear the business risks. For example, competition from other well-established closed-source providers. There are many, and they are established, and their products are frankly, much better polished than CDrive is now, and they are on the market now rather than in 2 years from now. And, they have a proven track record with a humongous amount of testing done under their belt. Every major country has at least one national, military-rated automation expert. It’s not that difficult.

So, CDrive team — enjoy the free contributions from the community, and I wish you the best of luck. Honestly. Just don’t mislead people, that will piss them off and may burn back.

As to “working with you” – how about if you advertise your capability and willingness to customize ODrive hardware for the customers, on your main website. I know that my company would use that option if I knew it was available at all!

2 Likes

I haven’t got much new to add but I’m chiming in here to agree with everything Towen said, and stress that it’s not just him thinking this, it’s a lot of us.

I would say that it’s not just technical capability that comes with higher expectations for a commercial product. I believe customer support will become an even bigger concern than it already is, and one ODrive-the-company may be judged more harshly for.

I think Towen personally has probably given me more help and support on here than everyone in ODrive combined - which I do not have a problem with at all, because that is the understood culture of open source products.

If ODrive were closed source:

  • I would have had many, many more questions in the first place (can’t read the source or otherwise find my own answers)
  • Towen and his ilk would probably not be around to answer me, meaning my every question takes time out of a paid employee’s day
  • I might be a much more demanding customer who has paid money and expects fast, quality support as a matter of course, and who might publicly grumble if he doesn’t get it

Unfortunately, I don’t have a ready answer to the responses Oskar made.

The biggest open source success story I can think of is Blender, with their public organisation of development , frequent use of grants and Summer of Code-style programs, and the way they’ve incentivised other companies to fund or work with them for mutual benefit.

I don’t know if any/all those tactics could sensibly apply to the ODrive. But if it could, it’s worth noting that the rest of the 3D industry went from laughing at Blender to being low-key terrified of it in about 10 years. I remember telling someone when I first found the ODrive that I wouldn’t be surprised if this thing grows to outpace all the competition, because they can accept new features at such a higher rate than stodgy closed source companies can.

I personally plan to keep buying the ODrive 56Vs until they go out of stock, or another company or community forks them. After that I’m in all honesty more likely to go looking for ODrive clones than I am to buy a closed source Pro.

Rather than end on a negative, I’ll add that I’ve learned an awful lot from both the ODrive product and its community, I very much appreciate all the work that has gone into it so far, and I’m very glad I found it.

As to “working with you” – how about if you advertise your capability and willingness to customize ODrive hardware for the customers, on your main website. I know that my company would use that option if I knew it was available at all!

Wait, was that an option? I would have definitely used that if I’d known!

1 Like

I hope we are not misleading anyone, it is not a secret that ODrive Pro is closed source right now. We have posted about the change on the forum several times before. I can add a note on the ODrive Pro product page too, so people who have historical notion of what ODrive is, are aware and don’t assume it’s implied to be the same as the v3.6.
The logo was misleading so we changed it. The O in ODrive doesn’t necessarily mean open (originally it was a superposition of Open, Oskar, and Over), but now it’s just ODrive by itself without any specific meaning.

We haven’t advertised it because we have too much on our plate right now, and we are ironing out the process with the customers we are already working with. We should probably say that this is an option coming soon, so people are aware.

Yes I would have the same opinion if I was an external user: an open source project I can go debug myself vs a commercial product. The thing is lots of customers already treat us like a business who sold them a product, and they expect it to work well and be well documented and get support. And actually our aspiration is to make a solid product that works well and is well documented. So it kind of has to happen anyway.

Giving away everything for free might seem viable if there was significant contributions or donations. But we already had invitations for those, and the input was so close to 0 that it’s practically a rounding error. Doing a big campaign to raise that and it went up by several 100% would not even be close to enough to pay for a dev team.

The plan is to take steps to make the new generation customizable: write your own control law, your own communication protocol, etc. We are not sure how that will look yet, but we know lots of people think it’s an important value of ODrive. We have to launch Pro and S1 before we have that ready, and for most people that’s ok: Either they don’t need modifications, they can do the NDA, or v3.6 is ok for now and can switch later.

1 Like

I think this might be a question of degree. A certain number of people expect a high level of support right now, and a certain number of those are dealt with by the community before they can trouble the company too much.

The worry is whether those numbers will drastically change once the context of “it’s open source bro” is no longer a cultural assumption that the rest of the community shares. There’s no a guarantee that the full dev team you’re able to pay for will be able to spend as much time on dev work as you hope. (Or whether you end up ignoring people who then get disenchanted and harm your reputation.)

I certainly hope it works, and I hope you’re able to muddle through to where you want to get to while preserving the health and goodwill of the ODrive community, which I still think is one of your biggest assets.

Even if it works, in abandoning open source I think something of great value will have been lost.

Re: Donations

However, I’m going to speak up and (I’m afraid) ramble for a bit, because I don’t believe you have given running on donations a fair shout, and I think it should be something you at least consider, even if you then decide you don’t want to do it.

If you look at the amount of thought Blender has put into making themselves “ready” for user donations, what you have done doesn’t compare. They are orientating their whole business around users’ financial support, while ODrive is thinking about it as an afterthought.

Taking the ODrive website:

I have never seen any appeal for ODrive donations, and simply assumed the money you were making from direct sales was profitable for you. The ODrive website as it stands doesn’t ask me for money, or development help, or anything else. It functions mainly to direct me to this forum, where I find an unstructured community of people largely getting on with it and helping fix each other’s problems - so I as a user take my cue from that and join in. I forget about money and start thinking about axis error codes.

Blender website:

Blender, meanwhile, are not doing the odd donation drive every now and then. For them it’s a full time thing. If I go to the Blender website, I’m offered Get Involved and Donate on every page.

Get Involved introduces me to various options I can pitch in and help. As a user I am steered in the direction the company wants me to go. If there’s a way I can help, they make sure I’m given the chance, without requiring me to read their minds or go hunting on my own initiative.

Donate doesn’t ask me for a single donation but gets me to sign up for a “membership” which gives me a bunch of impressive looking perks and trophies while guaranteeing the company a steady, repeating payment. In aggregate those subscriptions mean your monthly income is predictable, and people only rarely cancel them.

This is a whole different approach, it’s based on marketing rather than engineering, and if anything it treats the work product (the blender software itself) as the afterthought, rather than the other way around.

(In fact, ODrive can at least sell its physical drives. Blender has to give away literally everything.)

But in reach, in popularity and in income Blender dwarfs ODrive.

ODrive again:

I don’t believe ODrive couldn’t find people to support it in this way.

How many Youtubers have made a lot of money from using your products in their videos? What percentage of them would be willing to give some of that back in exchange for making sure you’re still there when they need you in a year’s time? (Especially if doing so also nets them a sexy emblem on your website, increasing their own reach and making them look good in the process.)

Are there companies selling complementing products, like electric skateboards, robot arms, and so on, who have a vested interest in servocontrollers coming down in price and getting easier to develop with? (And is there actually a higher-tier subscription that, in addition to the feel-good publicity, entitles them to your help and experience in putting together their own custom hardware?)

Are there people who see this community, and the currently pretty high levels of goodwill it has, and see enough value in there to be worth preserving? Has anyone asked their opinion?

Wrap up

It’s easy to say this from the outside, but I don’t see any reason why, with the right marketing and positioning, ODrive can’t explode the way Blender did. The two projects share many of the same qualities.

If anything, ODrive is a better product than Blender (who wants to make 3D pictures when you could be building robots?) By rights, ODrive should be the jewel of open source that everyone’s heard of.

But for that, it would need to be run in the appropriate way, which is not the direction you are currently planning. It’s a different model, with a different approach and mindset. And it brings a lot of its own work: there must be several full-time Blender employees who never even touch the actual codebase of Blender itself.

I understand if to an engineer, this kind of work isn’t appealing. It’s just not as fun or direct as getting on with the nitty gritty of the actual motor controller. I can’t pass judgement on that without being a hypocrite: I’m the worst person for putting my head down and focussing on the code because the people-stuff is too woolly for me.

I still think it’s worth your consideration. My apologies for the long post.

1 Like

Thanks for the writeup.
Yes the reach of Blender, Arduino or Prusa is just so much higher it makes a qualitative difference. I feel pretty confident that asking for donations and contributions harder would not get us far enough. There was more encouragement before, but it was pretty clear it wasn’t happening and I kind of gave up on that about 4 years ago.

A lot of people who want to get at the internals are either doing so because they want learn, in which case they can use v3.6, or because they want something custom on a reliable and supported platform for a commercial product: for those companies the NDA route is almost always ok.
There are lots of companies who tell us they are more than happy to pay a licence fee, but they can’t make their management pay a voluntary fee if they can get it for free.

Capturing the revenue from these companies who are currently freeloading and using that to build better and more robust features, better docs, and tooling, is going to be a net benefit to the vast majority of users.

@jbombastor what custom firmware are you looking to do that you feel like the current situation on the ODrive Pro is not working for you?

1 Like

When did you last do this? I don’t remember ever being invited to donate or to contribute, and I’ve been here since 2019.
Never mind: You said you gave up on this 4 years ago, so it was just before I found you. :cry:
Can I ask how much has your community-base grown in those 4 years?

Well, they really shouldn’t.
Open source software typically includes very explicit exclusions of warranty, and you probably should have made it clear to customers that they were paying for components and PCB fabrication services, plus a donation to support further open source development - not a product.
If someone were stupid enough to use ODrive to make an electric vehicle or large industrial robot, and it became clear that a fault in the ODrive software had directly caused the death of a person, who would be liable? Hopefully not you.
Technically speaking, to sell commercially to these companies you need to meet ISO 9001, and that will probably say that you have to meet ISO/IEC 61508. Your customers, if they are in large companies doing large things, are in breach of their own ISO 9001 requirements if they use a non-certified drive in one of their own products.
And “trust me”, you Really DON’T want to thinking about ISO/IEC 61508 yourselves.

These companies would be easily ‘encouraged’ if you made a split-licensing option: GPL or Commercial. Company managers do not like to be responsible for possible future legal action against their company.
I have worked for several companies who said “No, we can’t use ANYTHING open-source” because they were so terrified of the GPL.

May I suggest – WASM – wasm3/Hardware.md at main · wasm3/wasm3 · GitHub

Being able to compile and load custom extensions – for control laws and IO in particular – and have it run in the loop at 8kHz (observation-to-response latency <125us) – would absolutely be a great differentiator for you! this is something that no other controllers offer at this price level. Definitely a pro-like feature. Sure, you can get a fully programmable FPGA controller but that’s a different price level altogether.

Today one can compile to WASM from many languages including C, Ada, Rust, and more.

Well, right now, my impression is the ODrive Pro is in a limbo where I can’t look into it myself but I also can’t expect quality help from the forums, so v3.6 is strictly better.

In the future, I would simply expect that the ODrive Pro won’t be as stable as an open source driver that has crowd-sourced its bug reports and fixes. Nor, long term, would I expect it to grow as fast.

When choosing between closed source drivers, I’d go with a more solid competitor if I wanted off-the-shelf, or a more local company if I wanted custom development.

But I admit, a lot of the attraction of ODrive was ideological.

I use Windows 10 everyday, which shows other people’s adverts on my desktop when I’m trying to work, deluges me with corporate clickbait whenever I use the search bar, gobbles up my hard drive without asking and restarts itself without my permission, throwing all my unsaved work away in the process. I use Autodesk Fusion 360 which forces me to store all my data offsite and stops working whenever the Internet is spotty, because the CAD libraries will run fine offline but the DRM won’t. Even my supposedly open source Android phone is a compound espionage device with no compunction about updates that quietly change my settings for me because the company has decided maybe I didn’t really mean it.

Basically, I spend every day as a digital peon who is treated with utter contempt by the companies he relies on. It makes me very sad that we now live like this, and, cow-like, everyone just accepts it. The Open Source movement that looked so promising 20 years ago has slid slowly into something else that isn’t achieving what it set out to at all. And the ODrive is just a case of, “another one bites the dust.”

I think the root of the problem is that open source projects by their nature are run by coders/engineers, and coders/engineers by their nature are uninterested in the non-technical side of running a business.

Success stories like Blender are successful not because they engineered harder, but because they stopped engineering full time and learned (or pulled in people who already knew how) to market themselves.

It sounds to me like you tried donations in the past, but didn’t have the skillset to do it right. Whether it would work now, with your larger, post-James Bruton public profile, is an open question, but probably academic without a more significant change of approach.

I continue to recommend the ODrive v3.6 to people. Are you planning to continue selling this, or is it going to be phased out?

1 Like

On-device WebAssembly is indeed something we considered for customization, as well as a library approach (like Nordic’s SoftDevice that @hjoungjoo mentioned) and other possibilities. But no decision has been made yet.

There is no material difference between MIT and GPL here. The only difference is if the company makes changes to the firmware, with GPL they would have to share those changes. However typically there are no changes. With our MIT licence ODrive v3.6 it gets copied into commercial products at a very high rate. As for the aversion of open source in general: yeah several companies have told us they are happy we are going more closed source commercial as it looks less sketchy in that case, purely from the optics (no changes to certifications etc). Seems strange to me, but yeah.

Hm we have been supporting ODrive Pro on the forum but not with a fantastic turnaround time. We have a dedicated channel on the discord for it and our dev team tend to it with quite a lot of attention. That said, most issues people need help with doesn’t require reading the source, instead it’s mostly about experience and knowhow in how to use things.

Maybe if we had a ton of contributors that may be true. But it’s ~0, so the bug reports are the same (users report bugs on the product they use), and the fixes are just us fixing it, so it’s also the same in general.

We will continue making it for as long as we can find chips for it, which is unfortunately getting difficult.

Yep that looks cool!