Skip to content
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

instructions about how to run L4T on the Jamboard carrier board #1

Open
bbf opened this issue Jul 6, 2024 · 17 comments
Open

instructions about how to run L4T on the Jamboard carrier board #1

bbf opened this issue Jul 6, 2024 · 17 comments
Assignees

Comments

@bbf
Copy link

bbf commented Jul 6, 2024

Hello,

I saw your post on the Android forums that you managed to run L4T on the Jamboard, and saw the specific version you used on one of the markdowns here. Thank you for sharing that. Would you be willing to document the steps you took to flash L4T into the Jamboard?

Thanks

@pb4ugoout
Copy link
Owner

I can do my best. I sort of abandoned the project. I don’t know enough coding or enough about Android to make my own build of LineageOS for the Jamboard hardware.

It’s a fairly straightforward process but you will need a spare Jetson TX1 or TX2 module as the one inside the Jamboard is fused and without keys from Google there’s no way to load any other software on to it.

You can follow along with my photos and tear down to remove the back panel. That’s the hardest part of the whole thing. The rear panel is actually beauty panel. Pop that off first. Then unscrew the actual back cover. The clips are tough and the plastic is huge. Be prepared for LOTS of screws as well. Once inside you can remove the 4 screws from the heat sink/passive cooler and then the 3 screw securing the module to the carrier. Just replace the module with your own and flash L4T using the rear usb port on the Jamboard. It’s the micro by the power plug in the middle of the back. One of the volume buttons is the recover button. Hold that down and press and release power. That will put your module into APX mode so that you can flash L4T.

If my documentation is unclear please let me know. I never meant to give the assumption that you could flash the factory module without opening up the unit.

Is that helpful?

@bbf
Copy link
Author

bbf commented Jul 6, 2024

I actually opened up my Jamboard yesterday, and took several pictures of the internals, before giving up on the hardware hack approach, and trying again to take a software based approach. I'm a software engineer, and even have worked for Google, but I don't have any insider info on the Jamboard. I decided the software approach because I thought that by doing a "fastboot oem unlock" (which did work, its not locked) I could perhaps provide a L4T kernel and trampoline out of the Android (perhaps Things) shell they built. I'm by no means an expert on Android, specially their boot process, but I have done my fair share of flashing custom roms and building lean distros for embedded hardware a long time in the past.

Thank you for the info on how you achieved L4T with a different Jetson module. I would be happy enough if I could get Linux running on the Jamboard if I can get most of the hardware working. Even their camera module seems to be custom (Chicony maybe custom built it for them), and there's some issues when used as a standard UVC device.

If you are interested in collaborating, I'm willing to help on the software side on what I can. I noticed someone else trying something similar:
https://gitlab.incom.co/CM-Shield/android_device_nvidia_foster/-/commit/49814dbbf198e91863a88c301ca589dc3140fa97#

I can politely ask some ex-coworkers at Google for some information (especially after the October date), although I think the original team has already been disbanded, so bit rot will take over soon.

@bbf
Copy link
Author

bbf commented Jul 6, 2024

I think @webgeek1234 is the owner of the gitlab above, and he pushed that change a couple of days ago. It seems he actively participates in many parts of LineageOS. Perhaps there's some hope on making this work... I'm going to setup a local build env for LineageOS and see how far I can get.

@webgeek1234
Copy link
Collaborator

I think @webgeek1234 is the owner of the gitlab above

Yeah, that's me. I tried a few things at the request of the owner of this repo several months ago, but unfortunately doing so without hands on the hardware makes things really difficult and it didn't really go anywhere. Maybe come October if a bunch of them end up on second hand markets for cheap, I'll be able to get ahold of a full unit. Though not sure I'll have a place to put one at this point...

The main issue with booting anything based on the shield devices is that the jamboard is booting a 4.4 kernel and the kernel device tree isn't fully compatible with the 4.9 kernel currently in use by foster. Combined with google never releasing kernel source for the jamboard. If someone was able to make that latter happen, I could probably make something happen. But I either need a proper source release or a dump of the DTB partition. Without either, stuff is difficult.

@bbf
Copy link
Author

bbf commented Jul 7, 2024

Disclaimer: I'm not a lawyer so I can't make any assertions, and neither does my opinion here reflect the opinions of my current or previous employers. =)

Although if Google seems out of compliance by not sharing the source tree used to produce and distribute the binary used in the Jamboard, I might know a contact that perhaps will be able to help. I have to check if they are still at Google, since I left 2 and 1/2 years ago. Let me reach out to see if I can get the ball rolling. I'll update here as soon as I have any news.

@bbf
Copy link
Author

bbf commented Jul 7, 2024

Well, Chris DiBona who used to run the OSPO inside of Google left in 2023, so I don't have a direct contact right now. Let me dig further and I'll see if I can find an alternative.

@albeauregard
Copy link

Hey guys. I' seem to be 1-6months late joining the party here. I suspect traffic in this area is going to pick up soon, as the October deadline approaches. I just picked up my first jamboard last week, and I'm getting to the point of poking at fastboot, and adb, and discovery that there's a Jetson TX1 module inside, and the jetson bootloader appear to be available. I'm picking up two more boards next week, to start disecting them. If anybody with the skills to work on this project is local to the Raleigh, NC, USA area, I've got a lead with about 20 of these things left, and threatening to send them to recycling as soon as next week.

@makinbacon21
Copy link
Collaborator

makinbacon21 commented Aug 11, 2024 via email

@albeauregard
Copy link

There is definitely no reasonable way to ship these things. Just the panel by itself is 94 lbs. The rolling stand is 65 lbs. My source doesn't have any more with stands, but has the official wall-mounts, which is also 15 lbs by itself.

@webgeek1234
Copy link
Collaborator

I'd like to get a unit in hand to do some tinkering and support. But I'm even further away, so shipping would be the only way to get one here. Maybe if one of the units doesn't get claimed, the carrier board and module could be salvaged first and shipped out. That'd get me 3/4s of the way there.

@makinbacon21
Copy link
Collaborator

makinbacon21 commented Aug 11, 2024 via email

@albeauregard
Copy link

Just to be clear, I’m not the actual source for these things, and even though he’s threatening to recycle them, he’s not giving them away for free (yet?). I don’t mind making a small donation to a school if it might help this project along, but I can’t buy or store all of them. :)

@makinbacon21
Copy link
Collaborator

makinbacon21 commented Aug 11, 2024 via email

@bbf
Copy link
Author

bbf commented Nov 8, 2024

Just an update on my attempts:
Every contact attempt to Google I tried fell onto deaf ears. I didn't get a single response, and I fear this would only be taken seriously if some legal action was made to justify them using resources to even address this. I'm not a lawyer, but I believe that distributing a binary of the kernel without providing the sources might be a violation of the GPL. While I would love to have access to that and play around with AOSP / LineageOS on this device, I don't have the time and motivation to deal with any legal issues with Google. If anyone here decides to follow that with the help of ESF of FSF, keep us updated :)

I might take the approach of buying a Jetson module that hasn't had it's fuses burned and installing L4T instead. @pb4ugoout do you have a sense of how much of the carrier board was supported by the current L4T kernel? How much of the integrated hardware was supported? Based on how much works through the mini-USB connector, I imagine that these devices would work:

  • Touch-screen
  • Audio output
  • Video / GPU support (since it's part of Jetson itself)

But I imagine that these would not work at all:

  • NFC Reader
  • Camera (video and audio)
  • TV board interfacing (brightness / volume control)

Can anyone who has tried the Jetson module replacement comment on their experience around this please?

@makinbacon21
Copy link
Collaborator

makinbacon21 commented Nov 8, 2024 via email

@pb4ugoout
Copy link
Owner

@bbf I’ve been working with makinbacon, webgeek, and a few others to get Lineage booting. I’m more of a hardware guy myself so they are doing all of heavy lifting. Mostly I’m identifying hardware and continuing to figure out the what and why of this thing. That said, we’ve made excellent progress and have Lineage booting as makinbacon said above.

I’m unsure what all was working in L4T. I haven’t had that running in quite some time. I do remember the touch screen didn’t work but we have a shell script that I believe would make it work. I may test that again in he future on one of my extra modules. At the time I was fiddling with L4T, my goal was Lineage so I didn’t spend my time testing the hardware. Unfortunately I don’t know too much about what all was or wasn’t working as intended.

We only got the touch screen working earlier this week. The device is recognized but needs work in the user space to get it function properly. It’s a USB device that also has gpio connections to the jetson that are used in the power sequence as well as for selecting the boot mode. Currently it requires multiple inputs to scroll/swipe and single taps appear to function like a latch, continuing to fire the input. A double tap does exactly that and acts like a quick toggle. Quirks that I’m confident these guys can solve.

As for the compatibility of the other hardware you mentioned:

1.) Audio and video are fully standalone and just work. The Jetson module is sending DisplayPort over hdmi to an output on the carrier. From there it goes down under the soldered heatsink. There’s a milestone video processor there. That chip is handling the three 4 inputs (two HDMI, one DP, and one type-c) and the eDP output to the LCd panel. Audio is stripped from the outbound TDMS lines and passes through each input on its way to an ST audio chip. We haven’t had to do anything.

2.) Along with that brightness and volume control are fully functional. The input button still works as intended to cycle through them, however, volume is no longer functional and the buttons control only the screen brightness when the external inputs are used. I confirmed this with Google support before the Jamboard went EoL. There is no onboard audio control for the external inputs. They intended them to be used with computers which would have their own volume control. With enough effort I think it could be made to control volume but I think it would require changing the configuration of the audio processor ic and the video chip since the vol buttons change to brightness buttons. Currently we aren’t able to confirm if we even have protocol (i2c, uart, etc…) access to them. This isn’t something we’ve discussed working on and I honestly don’t think it’s necessary or even possible at all.

3.) We have video from the camera. Unsure about the microphone, I can test that tomorrow. The camera is odd in that it’s not recognized by any other computer I’ve plugged it into. But it does work in Lineage.

3.) The nfc reader is an I2C device and the driver for it is easily obtained. It’s an NXP PN544. Assuming nothing comes up, the plan is to have it functional in the release build.

Lastly, I have reached out to a few of my contacts to see if we can get anywhere with Google. They are indeed in violation of the GPL but getting in touch with anyone relevant is incredibly difficult. It’s sort of a case of who you know. Within the group of us working on this, we all have at least one Jamboard on hand. However, I am the only one of us that purchased Jamboards outright and had them licensed and active in a Google Enterprise domain. As such, I have the most legal claim to any source code requests. I’m hesitant to pursue the legal route as that generally results in an immediate halt to all communication. It’s simply easier if we can get someone to agree and give us what we’re asking for. However, once I have exhausted my options, with or without the source code in hand, I do plan to put Google on notice as makinbacon said. I’ll reach out to Linus’ legal team, the GNU project team, and possible Google’s legal department as well. I have written documentation of Google support agreeing that my request is valid but then also refusing to assist me in obtaining what I’m asking for. It’s asinine on an embarrassing scale.

Anyway, I think that’s it for my novel there. Feel free to let us know if you need help or have more questions. Thanks for chiming in!

@pb4ugoout pb4ugoout reopened this Nov 9, 2024
@pb4ugoout pb4ugoout self-assigned this Nov 9, 2024
@bbf
Copy link
Author

bbf commented Nov 11, 2024

Thank you for everyone's dedicated effort on this :) I'm happy that you folks made so much progress. I will try again to reach out to a friend inside of Google to see if he can somehow internally move the needle on this, since the contacts I found where dead-ends, although I doubt we will see any progress on this. I heard from an friend ex-Googler that found a situation similar to this, while still working internally, that they usually only take action when there's legal reasons to do so, if they haven't done already out of good will.

For example, I was part of Stadia, and I was glad that at the end we at least provided an escape hatch so that the controllers could be used as regular game controllers. I'm annoyed that not all teams had the same mindset, or that they were disbanded before they could reach that outcome. Although if you consider Jamboards, the PR hit versus Stadia PR hit is quite different.

BTW, are there any nightly builds available somewhere so I can test the Jamboard Lineage OS build?
Does the foster flavor already contain the current dev efforts? Would something like this work: https://download.lineageos.org/devices/foster/builds lineage-21.0-20241111-nightly-foster-signed.zip

Is there any discussion forum outside of here I could join to provide feedback or help in any way?
Thanks again for all the effort :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants