-
Notifications
You must be signed in to change notification settings - Fork 65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
closed source? #1
Comments
for the curious edit: whoops, forgot
for the first partition |
a bit random grepping reveals that at least https://github.com/hodgef/react-simple-keyboard
|
We are wondering wheter open or not. |
At least, we will open most interfaces/API for images,HID operations, that DIYer can customize their own functions without dig hard into complex bsp sdk. |
I make a vote on twitter: https://x.com/SipeedIO/status/1810508366336115192 |
thank you for the comprehensive answer and also thanks for creating the poll. |
Not using X/Twitter either but wanting to emphasis on the open source aspect -> trust into the device being not equipped with a backdoor. Folks are fine using whatever commercial iKVM solution but once it's open hardware but comes from China they start to worry. Especially residents of the Five Eyes states who are absolutely fine with their governments/agencies spying on everyone on this planet are trained to believe that everything that originates from China must be evil. As such allowing users to build their own firmware image from sources will at least be a try to stop these 'concerns' your KVM device being backdoored by design. |
+1 for opensource without X account |
what about open backend(go), close frontend(react)? |
I don't think that will stop people talking about your device being backdoored... |
I bought a full and lite through the pre-order to check them out, but without the firmware being open source I do not think this will gain wide traction. I really want this project to be successful as it brings a near order of magnitude cost reduction (and size!) to the ip based KVM world . So take this as my (non X using) vote to work toward open source firmware. |
Also +1 on open source. |
If it's just for playing around, closed-source is fine, but if it involves projects or production data, then I wouldn't use it [I have already bought one]. |
i need HDMI to a monitor as well, is it possible with this hardware? or splitter? |
I have the LicheeRV Nano board and am familiar with PiKVM, how can I help you to finish? |
I'm waiting for the code to be open source before buying one :) |
I know many downvoted this. But if you’re willing to open source the backend and sell an SDK for enterprises that want to build their own front end anyways and integrate with their own Idps. Not sure. There might be something there |
Here's another strategy that can be a win-win for both Sipeed and regular consumers of your product: Commit to releasing it as opensource as soon as you've sold, say, 3000 units (arbitrary amount to be decided by Sipeed). Motivation behind this is:
As it stands right now I'm siding with @M0NsTeRRR's position: if there is no clear commitment to release it as opensource, I'm not interested since I know that sooner or later the binary will be reverse engineered and re-implemented as OSS anyway (plus all the other security and future maintenance related concerns outlined in this issue). EDIT: Current reversing efforts uncover worrying flaws: https://lichtlos.weblog.lol/2024/08/how-to-reverse-the-sipeed-nanokvm-firmware |
I bought it first, assuming it was OSS from the beginning. I'm gonna wait for the OSS release. I can see them adding new features to their private fw every few days, but I'd rather very much just use OSS. |
I already took some look at LicheeRV-Nano-Build and this is what I found so far:
The middleware should also be open-sourced (by the SoC vendor), it seems to be required for NanoKVM PS: To get a better overview of the hardware related changes, I splitted out opensbi, u-boot and linux, re-based it to the original project git: |
I almost finished my research on LicheeRV-Nano-Build and created the branches on forks of existing projects: https://github.com/scpcom/linux/tree/licheervnano-5.10.y https://github.com/scpcom/buildroot/tree/licheervnano-2023.11 https://github.com/scpcom/sophgo-fsbl/tree/licheervnano https://github.com/scpcom/sophgo-build/tree/licheervnano Currently I am locally connecting them together as submodules, I may create and publish a top-level repo next, to make it easier. If you look in the history you can see a replay of the commits to LicheeRV-Nano-Build splitted in to the sub projects. First I needed to find a point on the original project which is close to the current LicheeRV Nano version. Some notes about the content and references to the original projects: buildroot freertos fsbl host-tools linux_5.10 opensbi oss ramdisk u-boot-2021.10 The delta between LicheeRV-Nano-Build and the following repos (also some parts of the others) build middleware middleware/v2/sample/test_mmf (KVM Demo) middleware/v2/sample/test_mmf/media_server-1.0.1 If you add the missing parts you may be able to compile the libs found in |
Good reversing writeup on: https://lichtlos.weblog.lol/2024/08/how-to-reverse-the-sipeed-nanokvm-firmware |
Here is my version of the Nano-Build repo using the submodules described above: |
The frontend was recently open sourced, and the backend will be open sourced when the repository reaches 2k stars or the NanoKVM sells 10k units. See this tweet |
A good start, glad to see that ! |
They should open source everything in the first hand and not wait for whatever. I bought one too because I'm interested, but I can understand why people not want to buy it if it's running on closed source. |
How am I supposed to trust a device that gives backdoor access to my hardware, without the ability to run or maintain my own operating system or software for it? |
The NanoKVM is based on the LicheeRV Nano. If you want to make your own firmware, feel free, the information is located here. |
@polyzium I saw those claims that they tried to port kvmd and related code, which is why I am surprised to see that they have none in their end product. Overall the release process for this thing hasn't been transparent enough for what the product does (provide backdoor access to your hardware). I'm aware of all of the things I can do myself, but I haven't got my hands on the hardware yet, despite applying for the beta boards. I was looking forward to putting NixOS and kvmd on the device, or building open firmware with Nix, for it. |
GG @geerlingguy ! Came and subscribed to this ticket too. |
Waiting for update/announcement😁 |
There has already been one - check above. (Targeting mid-October) |
Oops! My bad! Time to get couples of them😁 It is not only about the price, the compact size matter in my case too. |
I updated my submodule based repo and did larger changes to get the firmware to a more recent level:
Some more details can be found in the README.md The source code for the 7 libs listed here... I updated the "/mnt/system/usr/bin/test_mmf 10" sample to get a stable rtsp stream (stable but still with some delay), no OLED or other display required. camera works with 1440P 30fps and HDMI input with 720P 60fps stream resolution. Tested on LicheeRV Nano W with gc4653 and on NanoKVM. |
Looks like the server code just went up on GitHub! |
Added to buildroot: |
I saw this release on Twitter: https://x.com/SipeedIO/status/1844035902596956574 And the linked folder has this note:
This is a violation of the OpenBMC project (mixture of MIT and GPL licenses) and likely any other open-source code this project relies on. If you're compiling or including open-source code into your app, obeying the license is not optional, and you can't distribute the license "in the form of a binary bin file." Read the terms of the license of the projects you're including. MIT and GPL both require license notices for each project you're including/compiling, and GPL requires you to provide sources, including any modifications or derivations. |
@mtlynch - This particular issue is regarding the software they're currently running on the NanoKVM — the linked Twitter post is about an experimental OpenBMC port, that I don't believe is being supported or recommended at this point, just mentioned. It would probably be best to open a new issue to discuss that port. The source code for NanoKVM's backend is now in this repository—see https://github.com/sipeed/NanoKVM/tree/3b2e142657d24337d8b3cedefdaea0777d81ec0d/server (however also some things might not be fully integrated, see @scpcom's comment above). |
I expect to be able to flash the device completely from scratch with everything built from source - that's the only way NanoKVM could be truly considered open source. Hopefully we'll get that mid-october as promised. |
Until we see concrete evidence otherwise, I think we should assume a good-faith effort on Sipeed's behalf to get their system opened up. From what I've seen they are doing real, difficult, uncompensated work to satisfy those of us who prefer open source for network control components, while still meeting their previous commitments to the customers who bought the devices already, and keeping the business afloat. Sipeed has been unusually transparent about how the source license interacts with their business needs, and the decisions that they faced around that licensing. I think it was tremendously generous of them to offer open sourcing based on source demand (GitHub stars) and not just business milestones like recovery of R&D costs or similar. I feel that this has earned them some patience and grace from the community, and I hope that they see the comments here making demands of them as being excessive enthusiasm rather than hostility. I don't want them to regret their decision to offer the open source path. If nothing else, we should treat "mid-October" as an estimate and desire, rather than an iron-clad commitment. |
Any plans on open-sourcing the firmware itself or will it stay closed-source forever? |
Yes, you can compile NanoKVM server and web and it works on the hardware.
Since I also have a plain Lichee RV Nano and MaixCDK did not work I started to create a replacement for libmaixcam_lib based on the found sources some weeks ago, now it is a fully functional replacement (only vdec missing, not required for NanoKVM): Next step was not much to do, just using the code from test_mmf sample to get a kvm_system replacement: Some days ago I wanted to know what was happening on port 8000 and at the end I found a cool project that works as perfect replacement: I would prefer the original code but it is optional now :-) |
I meant the firmware. The stuff that gets flashed to the device from the .img file. |
Perhaps this is a naive question, but isn't the server flashed to the device as part of the image? |
The current official firmware image is created with this: |
Do you meant that install openBMC to nanoKVM hardware or nanokvm firmware to some of openbmc hardware? |
@scpcom Thank you for the info! As your repo can serve as a fall back for future maintenance, I am ordering now😁 |
Some conclusion about my work done. If you want to use a fork of the original project:
If you want to use a more recent base system:
Building an SD/TF card image is similar for both:
During the build process the original latest.zip is downloaded but no binaries are used from it anymore. It is just needed for the init scripts and config files. The resulting image works out of the box, NanoKVM itself does not need any internet connection to work, no additional downloads required. |
The make the build more reproducible I removed the download of latest.zip and added the non-binary files to a git instead: I also updated the build script for NanoKVM server and web: On NanoKVM 2.1.0 the kvm_stream binary was replaced with libkvm.so binary: I started my own implementation here: Most magic ist still done inside maixcam_lib: And the middleware libs are also still required. The h264 implementation in my maixcam_lib variant is complete (including avc2flv converter). |
h264 is working with my kvm_vision variant too now. |
@scpcom Is it possible that your changes make it upstream to the official firmware/linux (maybe not all changes but the improvements at least), basically into this repository? |
I know this will sound quite annoying, but I'm not able to truly understand all the comments and what happened with trying to fully open source the firmware/libraries: if someone buy a NanoKVM today, what kind of things can use/flash onto it to possibly only use open source components? There's still something closed source that must be used? What's the degree of risk using it, eventually? Sorry for this "non technical" question but as everyone else I'm concerned about security of the device, and I'm not able to truly understand (as someone that doesn't have it right now, but plan to buy it if everything matches) the degree of uncertainty/obscurity if I use the device like it is vs what's available as totally open source |
I already created two pull requests in September:
If you use the original sources from Sipeed you have to put them all together yourself, and not all official sources are published yet, you still would require some closed source libs. |
Let's talk about the 7 closed source libs remaining. libae.so, libaf.so, libawb.so: responsible for things like gain control If you have a Lichee RV Nano with camera module (a.k.a. MaixCAM) you may want to keep them. Many of the lib symbols are referenced but during runtime of NanoKVM only 3 of them are really used in addition to the (Un)Register functions: I did not want to harm the source code which is referencing ae, af and awb so I created dummy libs that almost do nothing: algo, json-c and miniz is only used in libcvi_bin.so, libcvi_bin_isp.so and libisp.so. On NanoKVM you will see not difference in quality, speed or functionality. Something about licenses: I put my own commits under BSD 3-clause. |
Now I took a look at the host-tools. The arm versions are from linaro and can be found here too: The riscv versions are based on Xuantie-900 GNU Toolchain V2.6.1 which can be found here: This contains almost all we need with one exception: T-Head does not seem to offer a repository for the riscv-musl libc submodule. The result can be found here: The scripts work standalone, for example you can copy build-riscv-thead-musl-toolchain.sh to somewhere else and run it there. It will clone all required code before build. |
All other pre-built host-tools like genimage are also build from source now, provided by linux, u-boot and buildroot: Building tailscale from source is now also possible with LicheeSG-Nano-Build: You can enable it with: |
interesting device, found it via https://www.cnx-software.com/2024/07/08/20-nanokvm-is-a-tiny-low-power-risc-v-kvm-over-ip-solution/#comments
but are you really planning to keep it closed source?
edit: finally ordered one 2 month later :)
The text was updated successfully, but these errors were encountered: