Slide deck for my presentation at the Google Developer Group San Francisco. Step-by-step guide to turning a ThinkPad X220 into a Chromium OS Android development machine. Covers hardware, firmware and software upgrades. Dynamic up-to-date slides at https://goo.gl/ivaugY
Have a quick overview of most of the embedded linux components and their details. How ti build Embedded Linux Hardware & Software, and developing Embedded Products
Have a quick overview of most of the embedded linux components and their details. How ti build Embedded Linux Hardware & Software, and developing Embedded Products
Bootkit threats have always been a powerful weapon in the hands of cybercriminals, allowing them to establish persistent and stealthy presence in their victims' systems. The most recent notable spike in bootkit infections was associated with attacks on 64-bit versions of the Microsoft Windows platform, which restrict the loading of unsigned kernel-mode drivers. However, these bootkits aren't effective against UEFI-based platforms. So, are UEFI-based machines immune against bootkit threats (or would they be)?
The aim of this presentation is to show how bootkit threats have evolved over time and what we should expect in the near future. Firstly, we will summarize what we've learned about the bootkits seen in the wild targeting the Microsoft Windows platform: from TDL4 and Rovnix (which was used by the Carberp banking trojan) up to Gapz (which employs one of the stealthiest bootkit infection techniques seen so far). We will review their infection approaches and the methods they have employed to evade detection and removal from the system.
Secondly, we will look at the security of the increasingly popular UEFI platform from the point of view of the bootkit author, as UEFI is becoming a target of choice for researchers in offensive security, and proof-of-concept bootkits targeting Windows 8 OS using UEFI have already been released. We will focus on various attack vectors against UEFI and discuss available tools and what measures should be taken to mitigate against them.
Booting UEFI-aware OS on coreboot enabled platform - "In God's Name, Why?"Piotr Król
This talk was presented durign European coreboot Conference 2017 in Bochum. In this talk we described our experience during enabling Tianocore payload for PC Engines apu2 (AMD G-series) platform.
Video is available here: https://youtu.be/nt0BkqVUu3w
Based on the new Z370 platform, MSI introduces a complete lineup in 4 segments with all models fully supporting Intel 6-core CPUs. The next generation MSI motherboards are found in the famous three GAMING segments: Enthusiast GAMING, Performance GAMING and Arsenal GAMING to serve perfectly to any type of gamer around the world. For designers, content creators and workstation users, MSI has prepared new PRO Series models. MSI motherboards are packed with unique features to cater to any PC Enthusiast, Gamer or Professional user. To top things off, making sure anyone can squeeze maximum performance out of the new 6-core processors.
►More about MSI Z370 Motherboard:
https://www.msi.com/Landing/intel-coffee-lake-z370-gaming-motherboard
Social:
►Facebook: hhttps://www.facebook.com/MSIGaming/
►Twitter: https://twitter.com/msitweets
►Instagram: https://www.instagram.com/msigaming
MSI, the leading motherboard manufacturer, is proud to announce that MSI B450 motherboards are on shelf now. To satisfy all kinds of gamers and users, MSI has prepared motherboards in Performance GAMING, Arsenal GAMING and PRO Series. With more MSI exclusive features and hardware improvements, MSI B450 motherboards allow users to maximize performance and gain better gaming experiences.This time, MSI motherboards are well-prepared, packed with several brand-new features to fulfill gamers and professional users’ needs. To make updating the BIOS even easier than before, most of the MSI B450 motherboards are equipped with BIOS Flashback+, which is built on the back panel to simplify flashing the BIOS and continue gaming within minutes. More conveniently, BIOS Flashback+ even works without a CPU, memory or graphics card installed. Shipped with the new AMD SSD technology ‘StoreMI’, and MSI’s exclusive X-Boost, MSI B450 motherboards will provide an optimized transfer experience. StoreMI helps create a virtual SSD by blending storage capacity, treats flash as primary storage and optimizes data access with continuous monitoring. Combined with MSI’s X-Boost, transfer performance can be increased up to 10%, significantly boosting data transferring speeds.
►More about MSI 400-Series Motherboard:
https://www.msi.com/Landing/amd-ryzen-b450-gaming-motherboard
Social:
►Facebook: hhttps://www.facebook.com/MSIGaming/
►Twitter: https://twitter.com/msitweets
►Instagram: https://www.instagram.com/msigaming
The Raspberry Pi is an inexpensive ($35), credit card sized computer that is able to run the Linux operating system. The card also contains USB ports, an Ethernet port, camera port, GPIO lines, serial ports, SPI port, HDMI port, and I2C port – just about anything you would want for an inexpensive and very powerful robot controller! Lloyd Moore will show us how to get started with this device. Specifically we'll talk about loading and configuring the operating system, installing the Qt (C++) development system, and controlling some of the ports.
Topic: Low cost computing using the Raspberry PI and other single board computing platforms. Overview of the growing low cost computing environment and demo of basic configuration of the Raspberry PI and Arduino for home and business projects.
Bootkit threats have always been a powerful weapon in the hands of cybercriminals, allowing them to establish persistent and stealthy presence in their victims' systems. The most recent notable spike in bootkit infections was associated with attacks on 64-bit versions of the Microsoft Windows platform, which restrict the loading of unsigned kernel-mode drivers. However, these bootkits aren't effective against UEFI-based platforms. So, are UEFI-based machines immune against bootkit threats (or would they be)?
The aim of this presentation is to show how bootkit threats have evolved over time and what we should expect in the near future. Firstly, we will summarize what we've learned about the bootkits seen in the wild targeting the Microsoft Windows platform: from TDL4 and Rovnix (which was used by the Carberp banking trojan) up to Gapz (which employs one of the stealthiest bootkit infection techniques seen so far). We will review their infection approaches and the methods they have employed to evade detection and removal from the system.
Secondly, we will look at the security of the increasingly popular UEFI platform from the point of view of the bootkit author, as UEFI is becoming a target of choice for researchers in offensive security, and proof-of-concept bootkits targeting Windows 8 OS using UEFI have already been released. We will focus on various attack vectors against UEFI and discuss available tools and what measures should be taken to mitigate against them.
Booting UEFI-aware OS on coreboot enabled platform - "In God's Name, Why?"Piotr Król
This talk was presented durign European coreboot Conference 2017 in Bochum. In this talk we described our experience during enabling Tianocore payload for PC Engines apu2 (AMD G-series) platform.
Video is available here: https://youtu.be/nt0BkqVUu3w
Based on the new Z370 platform, MSI introduces a complete lineup in 4 segments with all models fully supporting Intel 6-core CPUs. The next generation MSI motherboards are found in the famous three GAMING segments: Enthusiast GAMING, Performance GAMING and Arsenal GAMING to serve perfectly to any type of gamer around the world. For designers, content creators and workstation users, MSI has prepared new PRO Series models. MSI motherboards are packed with unique features to cater to any PC Enthusiast, Gamer or Professional user. To top things off, making sure anyone can squeeze maximum performance out of the new 6-core processors.
►More about MSI Z370 Motherboard:
https://www.msi.com/Landing/intel-coffee-lake-z370-gaming-motherboard
Social:
►Facebook: hhttps://www.facebook.com/MSIGaming/
►Twitter: https://twitter.com/msitweets
►Instagram: https://www.instagram.com/msigaming
MSI, the leading motherboard manufacturer, is proud to announce that MSI B450 motherboards are on shelf now. To satisfy all kinds of gamers and users, MSI has prepared motherboards in Performance GAMING, Arsenal GAMING and PRO Series. With more MSI exclusive features and hardware improvements, MSI B450 motherboards allow users to maximize performance and gain better gaming experiences.This time, MSI motherboards are well-prepared, packed with several brand-new features to fulfill gamers and professional users’ needs. To make updating the BIOS even easier than before, most of the MSI B450 motherboards are equipped with BIOS Flashback+, which is built on the back panel to simplify flashing the BIOS and continue gaming within minutes. More conveniently, BIOS Flashback+ even works without a CPU, memory or graphics card installed. Shipped with the new AMD SSD technology ‘StoreMI’, and MSI’s exclusive X-Boost, MSI B450 motherboards will provide an optimized transfer experience. StoreMI helps create a virtual SSD by blending storage capacity, treats flash as primary storage and optimizes data access with continuous monitoring. Combined with MSI’s X-Boost, transfer performance can be increased up to 10%, significantly boosting data transferring speeds.
►More about MSI 400-Series Motherboard:
https://www.msi.com/Landing/amd-ryzen-b450-gaming-motherboard
Social:
►Facebook: hhttps://www.facebook.com/MSIGaming/
►Twitter: https://twitter.com/msitweets
►Instagram: https://www.instagram.com/msigaming
The Raspberry Pi is an inexpensive ($35), credit card sized computer that is able to run the Linux operating system. The card also contains USB ports, an Ethernet port, camera port, GPIO lines, serial ports, SPI port, HDMI port, and I2C port – just about anything you would want for an inexpensive and very powerful robot controller! Lloyd Moore will show us how to get started with this device. Specifically we'll talk about loading and configuring the operating system, installing the Qt (C++) development system, and controlling some of the ports.
Topic: Low cost computing using the Raspberry PI and other single board computing platforms. Overview of the growing low cost computing environment and demo of basic configuration of the Raspberry PI and Arduino for home and business projects.
BeagleBone Black: Platform Bring-Up with Upstream ComponentsGlobalLogic Ukraine
This document is intended to give the user overall instructions on how to obtain, build and flash upstream software to the BeagleBone Black board, with detailed explanation of all related features and components.
Please find the additional details in this deck: https://www.slideshare.net/GlobalLogicUkraine/beaglebone-black-with-upstream-software
The respective workshop was held by Victoriia Taraniuk (Associate Manager, Quality Assurance, Consultant, GlobalLogic) at GlobalLogic Mykolaiv Embedded TechTalk #1 on May 25, 2018.
Desktop Ubutu on Laptops and RaspberryPi_practices how to use it with SD card...Masafumi Ohta
I had presented at OpenExpo Europe 2022 on 30th June, talking about Ubuntu on Desktop Environment, how to deal with it and manage for your good one. also talking about Ubuntu on RaspberryPi.
Embedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hoodEmbeddedFest
Das U-Boot - це універсальний бутлоадер з відкритим кодом, який фактично є стандартом де-факто в світі Embedded Linux. Його використовують провідні виробники SoC у своїх продуктах протягом останнього десятиліття. У цій презентації ми детально розглянемо процес завантаження Linux та роль U-boot у ньому, висвітлимо його архітектуру (включаючи всі оновлення до версії v2019.10) та коротко розглянемо процес апстрімінгу ваших патчів в open-source ком'юніті.
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...Joone Hur
This is about accelerating Web graphics performance with ozone-gbm on Intel based Linux desktop systems.
You can find Google Docs slides at
https://docs.google.com/presentation/d/1o-a-DV43SnPPeyQodeMdbIqA05bRTNpZ3uidP2CBYeo/edit#slide=id.g38a9ffee37_0_0
This presentation by Aleksandr Bulyshchenko (Consultant, Engineering, GlobalLogic, Ukraine, Kharkiv) and Maksym Prymierov (Junior Software Engineer, Engineering, Consultant, GlobalLogic, Ukraine, Kharkiv) was delivered at GlobalLogic Ukraine On Air Webinar on April 15, 2020.
Our practical experts shared their expertise and results of porting the trendy Android 10 to Orange Pi board as well as demonstrated its possible DIY applications such as the ultra-popular Android TV box.
Similar to ChromePad - Chromium OS ThinkPad X220 (20)
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
6. Why Chromium OS for Android Development?
Why not Chrome OS for Android Development?
7. Everything explained in Part 2 is doable in Chrome OS,
if you have a Google Pixel Chromebook.
8GB or 16GB of RAM = Good to Go
If you don’t have a Google Pixel Chromebook, or another
powerful Chromebook with 8-16GB of RAM it’s not going
to work so well.
8. The Problem is with Chromebooks, not Chrome OS.
They come with a fixed
amount of RAM memory.
9. For development we’re going to want as much ram as we can afford, and it’s
nice to have the ability to move the RAM around between devices.
The X220 RAM is held in place by 3 screws and is directly accessible on the
underside of the laptop.
10. Install Chrome OS on a ThinkPad?
The short answer is No.
Google Chrome OS is the Google product that OEMs ship on Chromebooks for
general consumer use.
However, we can install Chromium OS on a ThinkPad, or any other compatible
laptop.
15. Chromium is an open-source
browser project that aims to build
a safer, faster, and more stable
way for all Internet users to
experience the web.
https://www.chromium.org/Home
16. Chromium is the open source browser inside
of the open source Chromium operating
system. They both share an attractive icon:
19. WARNING: EXPERIMENTAL FEATURES AHEAD!
By enabling these features, you could lose
browser data or compromise your security or
privacy. Enabled features apply to all users of
this browser.
20. Chromium OS - Experimental Features
The key to getting the most out of Chromium OS is utilizing chrome://flags
In your Chromium browser navigate to chrome://flags and bookmark it.
In Chromium OS flags extend to system settings, such as enabling Night Light
or the Zip archiver (both of which are extremely useful).
21. Chromium Experimental Features
The key to getting the most out of Chromium is making use of chrome://flags
In your Chromium browser navigate to chrome://flags and bookmark it.
The flags are essentially settings that you can enable or disable to enable or
disable a wide range of new features.
23. The easiest way to try Chromium is to use the
Chromium browser on the PC or Android that
you already have.
https://download-chromium.appspot.com
The link is an official Chromium source,
Just download, unzip and install.
24. For Android it’s even easier, you can use my
open source app getChromium.
https://github.com/andDevW/getChromium
26. If we want to play it safe, according to the official documentation the best
we can do is the ThinkPad R60.
https://www.chromium.org/chromium-os/getting-dev-hardware/dev-hardware-list
27. The good news is that
Chromium OS works great
with Coreboot, and we can
install Coreboot on some
great ThinkPads.
29. Updated Dev-Hardware-List
WiFi Ethernet TrackPad Suspend/Resume
Lenovo X220 NO YES YES YES
Coreboot X220 YES YES YES YES
X220 with stock Lenovo BIOS and X220 with Coreboot
30. ThinkPad X220 - The Great (AKA Hardware)
- The last ThinkPad made with “the good keyboard”.
- Compact enough that it’s actually usable in today’s world.
- No shortage of models with the 2.5GHz i5.
- Works wonderfully with Coreboot.
- OEM replacement parts are affordable and easy to obtain.
- Great battery life, batteries are cheap and swappable.
- Easily/cheaply upgradable IPS display.
- Arguably still looks cool.
31. ThinkPad X220 - The Bad (AKA Firmware)
- Extremely slow boot time
- WiFi card whitelist locks out the ability to upgrade WiFi
- RAM speed limited to 1866MHz
- Firmware level malware
- Lenovo Service Engine (LSE), etc.
- Intel ME
*All of these things can either be mitigated or negated by installing Coreboot.
32. A wide range of ThinkPads
have Great Hardware paired
with Terrible Firmware.
33. We Can Fix Some.
I haven’t tested this, but it looks like we should be able to do what I’ve done
with the ThinkPad X220 with at least some ThinkPads that meet the following
criteria:
1. amd64
2. Supported by Coreboot
If you’ve tested Chromium OS on other Coreboot ThinkPads I’d love to add
that info to the Updated Hardware List.
Contact me at andDevW@gmail.com
37. Advantages of Coreboot
- Boot time is drastically reduced.
- Allows use of mini PCIE WiFi cards
- Allows use of faster RAM
- Allows booting from ExpressCard
- Allows cool extras (games like Tint)
- Coreboot is an open source project
- Intel ME neutered https://www.coreboot.org/Intel_Management_Engine
- Lenovo Malicious Firmware neutered (security bonus)
39. Requirements
What you need:
1x ThinkPad X220
1x PC Running *Debian/Ubuntu
1x Micro SD Card 4GB+ (Faster is better)
1x BeagleBone Black (Raspberry Pi can also be used)
1x USB 2 Mini USB Cable (comes with the BeagleBone)
1x PC PSU(any old PC’s power supply)
LOTS of JUMPER WIRES - In all of the available configs (FF/FM/MM)
40. Sources
BeagleBone Black https://www.digikey.com/product-detail/en/ghi-electronics-llc/BBB01-SC-505/BBB01-
SC-505-ND/6210999
Pomona 5250 https://www.digikey.com/products/en/test-and-measurement/test-clips-
ic/624?k=pomona%205250
Jumper Cables - Get one of each type https://www.digikey.com/product-detail/en/adafruit-industries-
llc/825/1528-1161-ND/5353621 https://www.digikey.com/product-detail/en/adafruit-industries-llc/759/1528-
1155-ND/5353615 https://www.digikey.com/product-detail/en/adafruit-industries-llc/794/1528-1159-
ND/5353619
PSU - An old PC will have one of these (It’s the part that the power cord connects to).
http://www.instructables.com/id/How-to-power-up-an-ATX-Power-Supply-without-a-PC/
41. Plug-and-Play Hardware Upgrades
WiFi Upgrade Atheros AR9285 Half Mini PCI-E Card - NOT the AzureWave
Bluetooth Upgrade Foxconn 4.0 daughter card - FRU 60Y3303
Cmos Upgrade CR2032 CMOS - Odds are that your battery is old
RAM Upgrade (16GB 2×8GB DDR3 SO-DIMM) - Get 2 of the same
USB 3.0 Upgrade AKE USB 3.0 Card 54mm - The AKE model with 2 USB ports
Display Upgrade LP125WH2-SLT1 - Lenovo Twist S230U touch screen unit
Battery Upgrade Lenovo ThinkPad Battery 44++(9 Cell) - NEW via Lenovo
43. Configure X220 UEFI BIOS
Coreboot utilizes proprietary binary blobs that are extracted from the factory
firmware image. In order to build Coreboot with the latest binary blobs the
factory firmware needs to be updated prior to flashing with Coreboot.
Boot the X220, holding down the blue ThinkVantage key.
At the Startup Interrupt Menu hit F1
Set the boot order to USB HDD
Save and Exit.
44. Updating UEFI BIOS - Part 1
Download the latest factory BIOS from Lenovo
https://download.lenovo.com/pccbbs/mobiles/8duj28us.iso
Verify the ISO Checksum and Convert ISO to IMG
$ echo ‘cf433cc5adfabf62f49146f87ae814c9d990f83db386bae1d581878908e5032e8duj28us.iso’ | sha256sum -c
$ sudo apt-get install genisoimage
$ geteltorito -o bios.img fwss31.iso
Burn IMG to USB
$ sudo dd if=bios.img of=/dev/sdX bs=4M status=progress
45. Updating UEFI BIOS - Part 2
1. Plug the X220 into the AC adapter, insert the USB with the bios.img and
boot.
2. In the Main Menu Window select #2 Update System Program
3. At the prompts hit the Y key and the Enter key to proceed.
4. After the reboot select #3 in the Main Menu Window
5. Continue through the prompts with Y and Enter.
46. // DISCLAIMER
The final key requirement is a willingness to completely destroy your X220
motherboard in the pursuit of making a superior one-off device.
47. X220 Service Manual PDF
This is a great resource for identifying FRUs. FRUs are ThinkPad part ID numbers
that can simplify purchasing replacement parts online.
https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles_pdf/0a60739.pdf
48. Getting at the Chip
Illustrated Description on Pages 73 - 78 in X220 Manual
Turn the X220 over and remove the following parts in the following order:
1. Battery
2. HDD
3. Screws required to remove both the Palmrest and the Keyboard.
4. Keyboard
5. Palmrest
6. WiFi Card (swap with the Atheros AR9285 card)
7. Bluetooth daughter card
8. CMOS battery (swap with fresh new battery)
49. Upgrade Bluetooth
Bluetooth daughter card check:
Look at the card to determine if you have 2.0 or 4.0
Bluetooth 4.0 - FRU 60Y3303 or FRU 60Y3305
Bluetooth 2.1 - FRU 60Y3271 or FRU 60Y3275
I
50. Configuring the BeagleBone Black - 001
KEY and COLOR CODE
PC = Debian system
that is connected to the BeagleBone via USB
BB = Terminal SSH
X220 =
ThinkPad we are modifying
Download Bone Debian 7.8 (works for flashing) https://debian.beagleboard.org/images/bone-
debian-7.8-lxde-4gb-armhf-2015-03-01-4gb.img.xz
Verify the image:
$ echo ‘bone-debian-7.8-lxde-4gb-armhf-2015-03-01-4gb.img.xz c848627722b7a5f7bc89791cc8949e3b’ | md5sum -c
Unpack the image and write it to an sd card
$ xz -d BBB*.xz
51. Configuring the BeagleBone Black - 002
Insert the sd card into the BeagleBone and connect the BeagleBone to your PC via the USB cable.
Plug an Ethernet cable with an Internet connection into the BeagleBone.
In your PC open a terminal.
$ ssh 192.167.7.2 -l root
Say yes and proceed through the prompts.
Now in your BB terminal
$ apt-get update && apt-get upgrade
$ apt-get install ntp
52. Configuring the BeagleBone Black - 003
# apt-get install bash-completion vim build-essential pciutils usbutils libpci-dev libusb-dev libftdi-
dev zlib1g-dev curl wget zip
# wget https://elinux.org/images/1/1f/BB-SPI0-01-00A0.txt
# dtc -O dtb -o BB-SPI0-01-00A0.dtbo -b 0 -@ BB-SPI0-
01-00A0.dts # cp BB-
SPI0-01-00A0.dtbo /lib/firmware/
# echo BB-SPI0-01 > /sys/devices/bone_capemgr.*/slots
Check to see that installation worked
# cat
/sys/devices/bone_capemgr.*/slots
The last line of the result should match this:
53. Configuring the BeagleBone Black - 004
Verify that spidev exists
# ls -al /dev/spid*
Which should print out something like this
crw-rw---T 1 root spi 153, 0 Feb 29 05:39 /dev/spidev1.0
Make the last line of the file /etc/default/capemgr read
CAPE=BB-SPI0-01
54. Configuring the BeagleBone Black - 005
On your PC download
https://www.mirrorservice.org/sites/libreboot.org/release/stable/20160907/libreboot_r20160907_util.tar.xz
Verify download
$ echo
‘c5bfa5a06d55c61e5451e70cd8da3f430b5e06686f9a74c5a2e9fe0e9d155505867b0ca3428d85a983741146c4e024a6b
0447638923423000431c98d048bd473 libreboot_r20160907_util.tar.xz’ | sha512sum -c -
Transfer the utility to your BB sd card.
In the BB terminal
$ tar xf
libreboot_r20160907_util.tar.xz
# chmod u+x
libreboot_util/ich9deblob/armv7l/ich9gen libreboot_util/flashrom/armv7l/flashrom
55. Configuring the BeagleBone Black - 006
Connect the BB to the Pomona clip and connect the clip to the SOIC-8 as
specified https://www.coreboot.org/Board:lenovo/x220
Don’t connect the power cable until the clip is correctly attached to the SOIC, only
connecting the ground cable initially.
For the 2 wires delivering power from the PSU, which have to be long, it’s best to
use twisted pair cabling to cancel out any interference.
For the rest of the jumper cables keep the length of everything as short as
possible.
56. Read the flash two times.
# /libreboot_util/flashrom/armv7l/flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -r flash_01.bin
# /libreboot_util/flashrom/armv7l/flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -r flash_02.bin
# diff flash_01.bin flash_02.bin
If they don’t match, don’t proceed.
If they do match(you get no response after running diff) save a copy on external
media.
58. Use the ifdtool to recover descriptor and me firmware
$ cd ~/coreboot/util/ifdtool
$ make
$ sudo make install
$ ifdtool -x ~/flash01.bin
ifdtool -x /path/to/extracted/flash.bin
60. Get Coreboot - 001
Go to https://www.coreboot.org/Supported_Motherboards and search for
X220. Click the "upstream tree" link to find the commit hash and then check
it out.
$ cd ~/coreboot
$ git checkout
<hash>
$ git submodule update --checkout
61. Configure Coreboot - 001
$ cd ~/coreboot
$ make nconfig
General Setup
[*] Compress
ramstage with LZMA
[*] Include the coreboot . config file into the
ROM image (NEW) [*] Allow use of binary-
only repository
Mainboard
Mainboard vendor (Lenovo)
62. Configure Coreboot - 002
chipset
[*]
Enable VMX for virtualization
[*] Ignore vendor programmed
fuses that limit max. DRAM frequency (NEW) [*] Ignore XMP profile max
DIMMs per channel
[*] Beep on fatal error (NEW)
[*] Flash LEDs on
fatal error (NEW)
[*] Add Intel descriptor.bin file (NEW)
[*] Add
Intel ME/TXE firmware
64. Configure Coreboot - 004
Console
[*]
Squelch AP CPUs from early console
[*] Show POST codes on the debug console
System
tables
[*] Generate SMBIOS
tables (NEW)
Payload
[*] SeaBIOS version (master)
[*] Load coreinfo
65. Configure Coreboot - 005
Hit F6, then hit the Enter key. Hit F9 to exit.
Copy
$ make crossgcc-i386 CPUS=4
$ make iasl
$ make
66. Flash Coreboot - 001
When make finishes, your new rom is located at
~/coreboot/build/coreboot.rom
Flash it
# /libreboot_util/flashrom/armv7l/flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -w
/coreboot/build/coreboot.rom
You may have to play around with the clip to get a successful flash.
69. Prerequisites
● An x86_64 64-bit Debian or Ubuntu system with at least 8GB of RAM
● An Internet connection (faster is better)
● A good amount of free disk space and time
● A 16GB USB drive
72. Install depot_tools
$ cd ~
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
73. Make Sudo More Permissive
$ cd /tmp
Copy and paste, or carefully type each of the following lines one at a time,
hitting the Enter key after each.
$ cat > ./sudo_editor <<EOF
#!/bin/sh
echo Defaults !tty_tickets > $1 # Entering your password in one shell affects all shells
echo Defaults timestamp_timeout=180 >> $1 # Minutes between re-requesting your
password EOF
$ chmod +x ./sudo_editor
$ sudo
EDITOR=./sudo_editor visudo -f /etc/sudoers.d/relax_requirements
74. Configuring Environmental Variables
$ vi ~/.bashrc
Add the following line at the very bottom of your .bashrc file:
export PATH=$PATH:~/depot_tools
Source .bashrc
$ . ~/.bashrc
75. Get the Source Code
Make a directory for Chromium OS
$ mkdir -p ${HOME}/chromiumos
$ cd ${HOME}/chromiumos
$ repo init -u https://chromium.googlesource.com/chromiumos/manifest.git --
repo-url https://chromium.googlesource.com/external/repo.git
$ repo sync -j4
76. Add Google API Keys - 001
This needs to be completed prior to building the Chromium OS image.
https://www.chromium.org/developers/how-tos/api-keys
1. Subscribe to Chromium Dev’s Google Group (mandatory)
2. Navigate to https://console.cloud.google.com/
3. At top left, between Google Cloud Platform and the search bar, select
the menu with 3 dots. In the pop-up menu click on box with the + the in
the top right corner. Create a project.
4. Click on the hamburger menu in the top left corner, then scroll down to
APIs & Services in the new menu. In the submenu select Credentials.
5. Select Create credentials > API key
77. Add Google API Keys - 002
6. In the API key created dialog copy your API key.
7. Open a new terminal window and cd to your home directory
8. Make a file .googleapikeys, adding in your own keys as you get them:
google_api_key = "your_api_key"
google_default_client_id = "your_client_id"
google_default_client_secret = "your_client_secret"
78. Add Google API Keys - 003
9. You should have the API key already. Follow the rest of the steps as outlined
here to obtain your own client id and client secret.
Paste these credentials into the .googleapikeys file and save it.
After completing this step the API keys will be automatically baked-in to all of
your Chromium OS builds.
79. Build Steps
The Formula
1. Enter Chroot
2. Select Board
3. Set Chronos User Password
4. Build Packages
5. Build Disk Image
6. Write Chromium OS Image to USB
80. Create a chroot
$ cd ~/chromiumos
Enter the command to download and enter the chroot
$ cros_sdk
While inside the chroot you will see a special cros-chroot prompt
~/trunk/src/scripts $
After the initial download cros_sdk enters the chroot.
82. Set the Chronos User Password
Set the password that you will use to enter the command line in Chromium
OS. You need to repeat this step every time you build a new image.
~/trunk/src/scripts $ ./set_shared_user_password.sh
83. Build Packages
Build all of the packages for the board
~/trunk/src/scripts $ ./build_packages --board=${BOARD}
84. Build a Disk Image
Build the developer image with the additional developer packages built-in
~/trunk/src/scripts $ ./build_image --board=${BOARD} --noenable_rootfs_verification dev
85. Write the Chromium OS Image to USB
Making a Chromium OS USB installer is easy.
Plug a 16GB USB drive into your PC.
~/trunk/src/scripts $ cros flash usb:// ${BOARD}/latest
Select the USB device from the options and confirm.
cros_flash writes the image while keeping you informed of its progress.
86. Great Job!
Remove the USB and take a moment to feel like something of a technical badass.
If you skipped the API keys part you’re going to be devastated to learn that your
build is *useless, so go back and finish that, and then repeat the steps for Building
Chromium OS.
Also, use this time to remind yourself that using Chromium OS is an
involved process that requires you repeating this process (or other
manual update process) every single time you want to update.
*It will boot and install to a SSD, but you’re going to be sad.
87. // DISCLAIMER
Chromium OS and Chromium don’t auto-update.
Chromium OS isn’t for general consumer use.
88. Dual-Use Chromium OS USB Installer
1. Boot the X220 from the USB and run Chromium OS as-is
2. Boot the X220 from the USB and install Chromium OS to the SSD
We want the second option, because it’s always going to be faster than running
Chromium OS from a USB drive.
The general rule for read/write speed is SSD> HDD> USB 3> USB 2
*Coreboot allows us to enable booting from the ExpressCard, which we can
outfit with a USB 3.0 adapter, enabling us to boot from a USB 3.0 drive.
90. Insert the USB drive into the X220 and boot.
At the Welcome screen enter VT2 by pressing Alt + Ctrl + F3
login: chronos
Log in with the password that you set earlier.
91. Installing Chromium OS to a SSD
Make sure that you have a SSD in your X220.
$ sudo /usr/sbin/chromeos-install --dst /dev/sda
Hit the y key and let everything run, it will throw errors.
Exit VT2 by pressing Ctrl + Alt + F1
Power off and remove the USB drive.
92. Boot Chromium OS from SSD
At the Welcome screen enter VT2 by pressing Alt + Ctrl + F3
Log in.
Make your rootfs writable
$ sudo /usr/share/vboot/bin/make_dev_ssd.sh --force --
remove_rootfs_verification
93. Exit by hitting Alt + Ctrl + F1
Remove the USB drive and boot into your
new Chromium OS ThinkPad X220.
94. Experimental Settings
Here are some of the flags that I find useful.
To check them out just enter them in your
Chromium browser’s omnibox.
#ash-enable-night-light
#enable-zip-archiver-packer
#smooth-scrolling
#enable-
easyunlock-promotions
Search in chrome://flags for md and enable the material design components.
This looks promising, as it should work with X220 hardware
98. // DISCLAIMER
Android Studio on Chromium OS/Chrome OS™ isn’t 100%.
Mainly
● AVD and Virtualization aren’t working.
It’s good, but it’s not perfect.
102. Crouton
Chromium OS Universal Chroot Environment
https://github.com/dnschneid/crouton
Star it on GitHub, and check out the
documentation.
103. Download the latest Crouton https://goo.gl/fd3zc
Open up a shell:
Ctrl + Alt + T
Then type shell and hit Enter.
104. Install Debian in a Crouton
Install the Crouton Chrome Extension
https://goo.gl/OVQOEt
$ sudo sh -e ~/Downloads/crouton -r sid -t xiwi,xfce -n debiandroid
Let everything download.
At the prompt create a user name and a password.
106. Configure Debian
At the prompt select ‘Use default config’
Right click on the Desktop and select open terminal here.
$ sudo vi /etc/apt/sources.list
107. Update /etc/apt/sources.list
deb http://ftp.us.debian.org/debian/ stretch main non-free contrib
deb-src http://ftp.us.debian.org/debian/ stretch main non-free contrib
deb http://ftp.us.debian.org/debian/ stretch-backports main contrib non-free
deb-src http://ftp.us.debian.org/debian/ stretch-backports main contrib non-free
deb http://security.debian.org/ stretch/updates main
deb-src http://security.debian.org/ stretch/updates main
*You can copy and paste from GitHub https://goo.gl/pVfVHZ
108. $ sudo dpkg –add-architecture i386
$ sudo apt-get update && sudo apt-get upgrade
Outside of the Crouton navigate to https://developer.android.com/studio/index.html#downloads
Download the Linux platform package.
Go back into your Chroot
$ sudo apt-get install openjdk-8-jdk gradle
$ unzip ~/Downloads/android-studio-ide-171.4443003-linux.zip
$ ./android-studio/bin/studio.sh
113. How to Start Your Debian Crouton
Open up a shell:
Ctrl+Alt+T
Type shell and hit enter.
Debian in a Chromium Tab
$ sudo startxfce4 -n
debiandroid -X xiwi-tab -b
Debian in its own Chromium Window
$ sudo startxfce4 -n debiandroid -X
114. Enjoy your Chromium OS ThinkPad X220!
Please don’t hesitate to reach out if you have
questions/comments/issues etc.
116. Attributions
Chromium™, Chrome OS™, Chromebook™, Chromebook Pixel™ are trademarks of
Google LLC.
Lenovo™ and ThinkPad® are trademarks of Lenovo in the United States, other
countries, or both.
Editor's Notes
If you can hold all of your questions until the end, that would be great.
This is a closeup of a typical Chromebook’s Motherboard
The green arrows point to soldered RAM memory.
The problem w most Chromebooks is that they generally don’t have a lot of RAM
Google makes Chromebooks that address the RAM issue, they’re expensive.
So this sounds perfect.
If this sounds interesting, but you’re not sure, trying the Chromium browser is a great easy way to get an idea of what Chromium OS is like.
Chromium OS is essentially a self-contained Chromium browser.
If you’re unsure of what to think about Chromium OS,
I recommend trying the Chromium browser.
Just download, unzip and install the Chromium browser.
Unfortunately, the if you check the developer hardware guide the newest ThinkPad listed in the official documentation is the LenovoIBM ThinkPad R60e.
So I’ve updated the hardware list
Both of these represent the same X220 ThinkPad
Lenovo is the stock Lenovo BIOS model
Coreboot is that model with Coreboot installed.
I’m confident there’s an easy way to fix the Suspend/Resume.
Beyond these basics, there’s a working webcam, as well as a SIM modem and fingerprint reader that should be configurable.
The ThinkPad X220 is compact, and happens to be the very last model made with the “good” keyboard, and we can drop in an upgraded screen.
Batteries are available in lots of different sizes and configs.
I’m a big advocate of flashing your ThinkPad with Coreboot.
If you want to do Coreboot here’s a list of what you’ll need.
There’s already a lot of great walk-thrus on installing Coreboot.
Before I go any further, here’s the warning about Chromium.
This is the fundamental problem, and if we can all understand this and what it means, then everything’s going to be great.
The way it works is, you install Chromium or Chromium OS again each time you want to update it.
Boot from your new USB installer.
Make sure that you are OK with the HDD being obliterated.
After exiting the shell, power off your laptop and pull out the USB installer.
This is a really cool thing that you can do in Chromium OS or Chrome OS.
You won’t be able to do everything with this Android Studio setup.
Debugging isn’t happening without the use of workarounds.
OK, so it’s not perfect but it will let me do almost everything except debugging.
I still want to do it, but how?
The answer is...
Ok, sure Debian’s awesome, but what’s a Crouton?
How are we going to install Android Studio on Chromium OS?
The answer is Crouton.
Chromium OS Universal Chroot Environment
Let’s get started.
If you’ve changed your settings to customize your Chromium downloads, you’ll want to download the Crouton
I went with XFCE here because it’s light and we’re not really going to be using the desktop.
debiandroid is going to be the Name of your Crouton.
This makes life much easier when you’ve got more than one.
The XIWI option allows us to run individual apps in Chromium tabs.
If you want a shell running you can omit the ‘option b’
We need to update our sources.list file
You want to make your /etc/apt/sources.list file look like this
Now we need to add the i386 architecture and update and upgrade APT
Download the current Android Studio package in a browser tab OUTSIDE of your Crouton.
The file will still show up in your Crouton in the Downloads folder, because everything’s sharing.
Install some packages, unzip the Android-Studio file and start it up.
Walk thru the prompts, and make sure not to select the System Image
Don’t check the box next to Android Virtual Device
In the context of a Crouton I haven’t been able to get them to work well enough to recommend.
One easy method of wireless testing is to build a debug package and then shoot it over to your Android via Gmail.
Inside Android Studio at the bottom select ‘Configure’
And then from the drop-down menu select ‘Create Desktop Entry’
Be sure and check the box, and when it’s done go ahead and shut down Android Studio.
Inside Chromium you can use Debian at any time by following this process.
Chromium OS doesn’t auto-update, so when we manually update it’s generally going to get rid of everything that’s on the disk.
Backing up and restoring Croutons isn’t the easiest thing to do, so one workaround is installing the Crouton on an SD card or a USB drive.
Then, when you update your Chromium OS, you don’t have to worry because the Crouton’s on it’s own disk.
The downside of this workaround is that you’re not getting the same write and read speeds as you will with your primary SSD.
The workaround for faster USB/SD is
I’ve shortened my talk to keep things interesting, so I’ll be posting the complete unabridged build instructions on my blog, and on my GitHub.
The full version has information on adding your Google API Keys, entering Developer Mode, and the full step-by-step Chromium OS build instructions.