User documentation and guides for products sold on the Libre Tech Shop. https://docs.libretech.shop
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1009 lines
35 KiB

  1. <!doctype html>
  2. <html lang="en" class="no-js">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <meta name="description" content="Accessible & Free Documentation for Libre Products">
  7. <meta name="author" content="Abhas Abhinav">
  8. <link rel="shortcut icon" href="../../images/lts-icon.png">
  9. <meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.2.4">
  10. <title>(LC230) User Guide - LibreTechShop - Documentation</title>
  11. <link rel="stylesheet" href="../../assets/stylesheets/main.15aa0b43.min.css">
  12. <link rel="stylesheet" href="../../assets/stylesheets/palette.75751829.min.css">
  13. <meta name="theme-color" content="#ffffff">
  14. <link rel="stylesheet" href="../../css/extra.css">
  15. </head>
  16. <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="white" data-md-color-accent="pink">
  17. <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
  18. <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
  19. <label class="md-overlay" for="__drawer"></label>
  20. <div data-md-component="skip">
  21. <a href="#lc230-user-guide" class="md-skip">
  22. Skip to content
  23. </a>
  24. </div>
  25. <div data-md-component="announce">
  26. </div>
  27. <header class="md-header" data-md-component="header">
  28. <nav class="md-header-nav md-grid" aria-label="Header">
  29. <a href="../.." title="LibreTechShop - Documentation" class="md-header-nav__button md-logo" aria-label="LibreTechShop - Documentation">
  30. <img src="../../images/lts-icon.png" alt="logo">
  31. </a>
  32. <label class="md-header-nav__button md-icon" for="__drawer">
  33. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
  34. </label>
  35. <div class="md-header-nav__title" data-md-component="header-title">
  36. <div class="md-header-nav__ellipsis">
  37. <div class="md-header-nav__topic">
  38. <span class="md-ellipsis">
  39. LibreTechShop - Documentation
  40. </span>
  41. </div>
  42. <div class="md-header-nav__topic">
  43. <span class="md-ellipsis">
  44. (LC230) User Guide
  45. </span>
  46. </div>
  47. </div>
  48. </div>
  49. <label class="md-header-nav__button md-icon" for="__search">
  50. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
  51. </label>
  52. <div class="md-search" data-md-component="search" role="dialog">
  53. <label class="md-search__overlay" for="__search"></label>
  54. <div class="md-search__inner" role="search">
  55. <form class="md-search__form" name="search">
  56. <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required>
  57. <label class="md-search__icon md-icon" for="__search">
  58. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
  59. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
  60. </label>
  61. <button type="reset" class="md-search__icon md-icon" aria-label="Clear" data-md-component="search-reset" tabindex="-1">
  62. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
  63. </button>
  64. </form>
  65. <div class="md-search__output">
  66. <div class="md-search__scrollwrap" data-md-scrollfix>
  67. <div class="md-search-result" data-md-component="search-result">
  68. <div class="md-search-result__meta">
  69. Initializing search
  70. </div>
  71. <ol class="md-search-result__list"></ol>
  72. </div>
  73. </div>
  74. </div>
  75. </div>
  76. </div>
  77. <div class="md-header-nav__source">
  78. <a href="https://sovran.dev/mh/lts-docs" title="Go to repository" class="md-source">
  79. <div class="md-source__icon md-icon">
  80. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 00-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 01-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 000 40.81l195.61 195.6a28.86 28.86 0 0040.8 0l194.69-194.69a28.86 28.86 0 000-40.81z"/></svg>
  81. </div>
  82. <div class="md-source__repository">
  83. mh/lts-docs
  84. </div>
  85. </a>
  86. </div>
  87. </nav>
  88. </header>
  89. <div class="md-container" data-md-component="container">
  90. <main class="md-main" data-md-component="main">
  91. <div class="md-main__inner md-grid">
  92. <div class="md-sidebar md-sidebar--primary" data-md-component="navigation" >
  93. <div class="md-sidebar__scrollwrap">
  94. <div class="md-sidebar__inner">
  95. <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
  96. <label class="md-nav__title" for="__drawer">
  97. <a href="../.." title="LibreTechShop - Documentation" class="md-nav__button md-logo" aria-label="LibreTechShop - Documentation">
  98. <img src="../../images/lts-icon.png" alt="logo">
  99. </a>
  100. LibreTechShop - Documentation
  101. </label>
  102. <div class="md-nav__source">
  103. <a href="https://sovran.dev/mh/lts-docs" title="Go to repository" class="md-source">
  104. <div class="md-source__icon md-icon">
  105. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 00-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 01-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 000 40.81l195.61 195.6a28.86 28.86 0 0040.8 0l194.69-194.69a28.86 28.86 0 000-40.81z"/></svg>
  106. </div>
  107. <div class="md-source__repository">
  108. mh/lts-docs
  109. </div>
  110. </a>
  111. </div>
  112. <ul class="md-nav__list" data-md-scrollfix>
  113. <li class="md-nav__item">
  114. <a href="../.." class="md-nav__link">
  115. Home
  116. </a>
  117. </li>
  118. <li class="md-nav__item md-nav__item--active md-nav__item--nested">
  119. <input class="md-nav__toggle md-toggle" data-md-toggle="nav-2" type="checkbox" id="nav-2" checked>
  120. <label class="md-nav__link" for="nav-2">
  121. LC230
  122. <span class="md-nav__icon md-icon"></span>
  123. </label>
  124. <nav class="md-nav" aria-label="LC230" data-md-level="1">
  125. <label class="md-nav__title" for="nav-2">
  126. <span class="md-nav__icon md-icon"></span>
  127. LC230
  128. </label>
  129. <ul class="md-nav__list" data-md-scrollfix>
  130. <li class="md-nav__item">
  131. <a href="../" class="md-nav__link">
  132. (LC230) Overview
  133. </a>
  134. </li>
  135. <li class="md-nav__item md-nav__item--active">
  136. <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
  137. <label class="md-nav__link md-nav__link--active" for="__toc">
  138. (LC230) User Guide
  139. <span class="md-nav__icon md-icon"></span>
  140. </label>
  141. <a href="./" class="md-nav__link md-nav__link--active">
  142. (LC230) User Guide
  143. </a>
  144. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  145. <label class="md-nav__title" for="__toc">
  146. <span class="md-nav__icon md-icon"></span>
  147. Table of contents
  148. </label>
  149. <ul class="md-nav__list" data-md-scrollfix>
  150. <li class="md-nav__item">
  151. <a href="#the-coreboot-boot-process" class="md-nav__link">
  152. The Coreboot Boot Process
  153. </a>
  154. </li>
  155. <li class="md-nav__item">
  156. <a href="#installing-an-os" class="md-nav__link">
  157. Installing an OS
  158. </a>
  159. <nav class="md-nav" aria-label="Installing an OS">
  160. <ul class="md-nav__list">
  161. <li class="md-nav__item">
  162. <a href="#build-usb-installer" class="md-nav__link">
  163. Build USB Installer
  164. </a>
  165. </li>
  166. <li class="md-nav__item">
  167. <a href="#plug-in-usb-disk" class="md-nav__link">
  168. Plug-in USB Disk
  169. </a>
  170. </li>
  171. <li class="md-nav__item">
  172. <a href="#choose-the-boot-device" class="md-nav__link">
  173. Choose the boot device
  174. </a>
  175. </li>
  176. <li class="md-nav__item">
  177. <a href="#install-the-os" class="md-nav__link">
  178. Install the OS
  179. </a>
  180. </li>
  181. </ul>
  182. </nav>
  183. </li>
  184. <li class="md-nav__item">
  185. <a href="#coreboot-internal-flashing" class="md-nav__link">
  186. Coreboot Internal Flashing
  187. </a>
  188. <nav class="md-nav" aria-label="Coreboot Internal Flashing">
  189. <ul class="md-nav__list">
  190. <li class="md-nav__item">
  191. <a href="#configure-the-kernel" class="md-nav__link">
  192. Configure the kernel
  193. </a>
  194. </li>
  195. <li class="md-nav__item">
  196. <a href="#query-coreboot-details" class="md-nav__link">
  197. Query Coreboot details
  198. </a>
  199. </li>
  200. <li class="md-nav__item">
  201. <a href="#install-flashrom" class="md-nav__link">
  202. Install: flashrom
  203. </a>
  204. </li>
  205. <li class="md-nav__item">
  206. <a href="#read-bios-image" class="md-nav__link">
  207. Read BIOS Image
  208. </a>
  209. </li>
  210. <li class="md-nav__item">
  211. <a href="#write-bios-image" class="md-nav__link">
  212. Write BIOS Image
  213. </a>
  214. </li>
  215. <li class="md-nav__item">
  216. <a href="#flash-skulls" class="md-nav__link">
  217. Flash: Skulls
  218. </a>
  219. </li>
  220. <li class="md-nav__item">
  221. <a href="#flash-heads" class="md-nav__link">
  222. Flash: Heads
  223. </a>
  224. </li>
  225. </ul>
  226. </nav>
  227. </li>
  228. <li class="md-nav__item">
  229. <a href="#configuring-coreboot" class="md-nav__link">
  230. Configuring Coreboot
  231. </a>
  232. <nav class="md-nav" aria-label="Configuring Coreboot">
  233. <ul class="md-nav__list">
  234. <li class="md-nav__item">
  235. <a href="#swapping-fn-and-ctrl" class="md-nav__link">
  236. Swapping Fn and Ctrl
  237. </a>
  238. </li>
  239. <li class="md-nav__item">
  240. <a href="#increasing-graphics-memory" class="md-nav__link">
  241. Increasing Graphics Memory
  242. </a>
  243. </li>
  244. <li class="md-nav__item">
  245. <a href="#other-settings" class="md-nav__link">
  246. Other settings
  247. </a>
  248. </li>
  249. </ul>
  250. </nav>
  251. </li>
  252. </ul>
  253. </nav>
  254. </li>
  255. <li class="md-nav__item">
  256. <a href="../troubleshooting/" class="md-nav__link">
  257. (LC230) Troubleshooting
  258. </a>
  259. </li>
  260. </ul>
  261. </nav>
  262. </li>
  263. <li class="md-nav__item">
  264. <a href="../../ledc/" class="md-nav__link">
  265. LEDC
  266. </a>
  267. </li>
  268. <li class="md-nav__item">
  269. <a href="../../mhsw/" class="md-nav__link">
  270. MHSW
  271. </a>
  272. </li>
  273. </ul>
  274. </nav>
  275. </div>
  276. </div>
  277. </div>
  278. <div class="md-sidebar md-sidebar--secondary" data-md-component="toc" >
  279. <div class="md-sidebar__scrollwrap">
  280. <div class="md-sidebar__inner">
  281. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  282. <label class="md-nav__title" for="__toc">
  283. <span class="md-nav__icon md-icon"></span>
  284. Table of contents
  285. </label>
  286. <ul class="md-nav__list" data-md-scrollfix>
  287. <li class="md-nav__item">
  288. <a href="#the-coreboot-boot-process" class="md-nav__link">
  289. The Coreboot Boot Process
  290. </a>
  291. </li>
  292. <li class="md-nav__item">
  293. <a href="#installing-an-os" class="md-nav__link">
  294. Installing an OS
  295. </a>
  296. <nav class="md-nav" aria-label="Installing an OS">
  297. <ul class="md-nav__list">
  298. <li class="md-nav__item">
  299. <a href="#build-usb-installer" class="md-nav__link">
  300. Build USB Installer
  301. </a>
  302. </li>
  303. <li class="md-nav__item">
  304. <a href="#plug-in-usb-disk" class="md-nav__link">
  305. Plug-in USB Disk
  306. </a>
  307. </li>
  308. <li class="md-nav__item">
  309. <a href="#choose-the-boot-device" class="md-nav__link">
  310. Choose the boot device
  311. </a>
  312. </li>
  313. <li class="md-nav__item">
  314. <a href="#install-the-os" class="md-nav__link">
  315. Install the OS
  316. </a>
  317. </li>
  318. </ul>
  319. </nav>
  320. </li>
  321. <li class="md-nav__item">
  322. <a href="#coreboot-internal-flashing" class="md-nav__link">
  323. Coreboot Internal Flashing
  324. </a>
  325. <nav class="md-nav" aria-label="Coreboot Internal Flashing">
  326. <ul class="md-nav__list">
  327. <li class="md-nav__item">
  328. <a href="#configure-the-kernel" class="md-nav__link">
  329. Configure the kernel
  330. </a>
  331. </li>
  332. <li class="md-nav__item">
  333. <a href="#query-coreboot-details" class="md-nav__link">
  334. Query Coreboot details
  335. </a>
  336. </li>
  337. <li class="md-nav__item">
  338. <a href="#install-flashrom" class="md-nav__link">
  339. Install: flashrom
  340. </a>
  341. </li>
  342. <li class="md-nav__item">
  343. <a href="#read-bios-image" class="md-nav__link">
  344. Read BIOS Image
  345. </a>
  346. </li>
  347. <li class="md-nav__item">
  348. <a href="#write-bios-image" class="md-nav__link">
  349. Write BIOS Image
  350. </a>
  351. </li>
  352. <li class="md-nav__item">
  353. <a href="#flash-skulls" class="md-nav__link">
  354. Flash: Skulls
  355. </a>
  356. </li>
  357. <li class="md-nav__item">
  358. <a href="#flash-heads" class="md-nav__link">
  359. Flash: Heads
  360. </a>
  361. </li>
  362. </ul>
  363. </nav>
  364. </li>
  365. <li class="md-nav__item">
  366. <a href="#configuring-coreboot" class="md-nav__link">
  367. Configuring Coreboot
  368. </a>
  369. <nav class="md-nav" aria-label="Configuring Coreboot">
  370. <ul class="md-nav__list">
  371. <li class="md-nav__item">
  372. <a href="#swapping-fn-and-ctrl" class="md-nav__link">
  373. Swapping Fn and Ctrl
  374. </a>
  375. </li>
  376. <li class="md-nav__item">
  377. <a href="#increasing-graphics-memory" class="md-nav__link">
  378. Increasing Graphics Memory
  379. </a>
  380. </li>
  381. <li class="md-nav__item">
  382. <a href="#other-settings" class="md-nav__link">
  383. Other settings
  384. </a>
  385. </li>
  386. </ul>
  387. </nav>
  388. </li>
  389. </ul>
  390. </nav>
  391. </div>
  392. </div>
  393. </div>
  394. <div class="md-content">
  395. <article class="md-content__inner md-typeset">
  396. <h1 id="lc230-user-guide">(LC230) User Guide<a class="headerlink" href="#lc230-user-guide" title="Permanent link">&para;</a></h1>
  397. <h2 id="the-coreboot-boot-process">The Coreboot Boot Process<a class="headerlink" href="#the-coreboot-boot-process" title="Permanent link">&para;</a></h2>
  398. <p>Here is what the boot process looks like with Coreboot installed:</p>
  399. <figure>
  400. <img src="/images/coreboot-diagram.png" width="420" />
  401. <figcaption>Coreboot Sequence Diagram</figcaption>
  402. </figure>
  403. <p>The first part of the boot process (labelled as "Coreboot Internal" in the diagram above) is
  404. largely hidden from the user. The boot process is illustrated below:</p>
  405. <figure>
  406. <img src="/images/lc230-boot.gif" width="420" />
  407. <figcaption>LC230 Boot Process</figcaption>
  408. </figure>
  409. <h2 id="installing-an-os">Installing an OS<a class="headerlink" href="#installing-an-os" title="Permanent link">&para;</a></h2>
  410. <p>To install any GNU/Linux OS, here is a sequence of steps:</p>
  411. <h3 id="build-usb-installer">Build USB Installer<a class="headerlink" href="#build-usb-installer" title="Permanent link">&para;</a></h3>
  412. <p>Any GNU/Linux OS would work very well on your LC230 laptop. (Some owners have
  413. also installed and used FreeBSD on it.)</p>
  414. <p>LC230 is configured to run without any proprietary firmware and hence, any of
  415. the following operating systems would work well by default:</p>
  416. <ul>
  417. <li><a href="https://debian.org">Debian GNU/Linux (main)</a></li>
  418. <li><a href="https://pureos.net/">PureOS</a></li>
  419. <li><a href="https://trisquel.info/">Triquel</a></li>
  420. </ul>
  421. <div class="admonition tip">
  422. <p class="admonition-title">Tip</p>
  423. <p>The <a href="https://www.raspberrypi.org/software/">Rasperrby Pi Imager</a> is a good
  424. tool to use to write an OS image to a USB disk. <a href="https://www.balena.io/etcher/">Balena Etcher</a> is another
  425. one.</p>
  426. </div>
  427. <h3 id="plug-in-usb-disk">Plug-in USB Disk<a class="headerlink" href="#plug-in-usb-disk" title="Permanent link">&para;</a></h3>
  428. <p>The USB needs to be plugged in before you reboot the laptop - or else SeaBIOS
  429. will not detect it and show it as a boot option.</p>
  430. <div class="admonition info">
  431. <p class="admonition-title">Info</p>
  432. <p>The blue USB ports on the left side of the laptop are USB3 ports. If you
  433. have a USB disk that works with USB3, then using these ports will give you
  434. much better USB disk performance.</p>
  435. <p>The USB port on the right side (yellow in colour) is a USB2 port.</p>
  436. </div>
  437. <h3 id="choose-the-boot-device">Choose the boot device<a class="headerlink" href="#choose-the-boot-device" title="Permanent link">&para;</a></h3>
  438. <p>Press <span class="keys"><kbd class="key-escape">Esc</kbd></span> on boot and choose the USB disk as the boot device</p>
  439. <figure>
  440. <img src="/images/lc230-boot-logo.jpg" width="400" />
  441. <figcaption>LC230 Boot Image</figcaption>
  442. </figure>
  443. <p>By default, the first boot option is chosen to boot off. This is usually the
  444. 2.5" SATA disk if it is plugged in to the laptop. To choose another boot
  445. device, you need to press <span class="keys"><kbd class="key-escape">Esc</kbd></span> and then choose the desired boot device
  446. from the SeaBIOS menu.</p>
  447. <p>If you have a 2.5" SATA disk, then a USB disk would be the second boot device.
  448. If you have a 2.5" SATA disk <strong>and</strong> a mSATA disk, then the USB disk would be
  449. the third boot device.</p>
  450. <figure>
  451. <img src="/images/lc230-usb3.jpg"/>
  452. <figcaption>LC230 USB3 Ports</figcaption>
  453. </figure>
  454. <h3 id="install-the-os">Install the OS<a class="headerlink" href="#install-the-os" title="Permanent link">&para;</a></h3>
  455. <p>You can now proceed with the OS installation as normal.</p>
  456. <p>The LC230 does not provide a UEFI BIOS (like the default Lenovo BIOS firmware).
  457. SeaBIOS is a pc-bios payload and most GNU/Linux OS installers will detect that
  458. and install the correct bootloader. This would be <code>grub-pc</code> if you choose to
  459. use Grub and Debian.</p>
  460. <h2 id="coreboot-internal-flashing">Coreboot Internal Flashing<a class="headerlink" href="#coreboot-internal-flashing" title="Permanent link">&para;</a></h2>
  461. <p>To flash Coreboot to the x230 motherboard, the first step is to flash the BIOS
  462. externally - ie. using a SIOC-8 flashing clip connecting to the BIOS chips:</p>
  463. <figure>
  464. <img src="/images/x230-flashing.png"/>
  465. <figcaption>Liberating the LC230 via External Flashing</figcaption>
  466. </figure>
  467. <p>However, as a part of the external flashing process, the BIOS is unlocked. This
  468. means that you can update / modify the BIOS on the SPI Flash internally - from
  469. within the operating system. Here are some reasons to do that and the steps
  470. involved.</p>
  471. <h3 id="configure-the-kernel">Configure the kernel<a class="headerlink" href="#configure-the-kernel" title="Permanent link">&para;</a></h3>
  472. <p>The first things to do before you can flash Coreboot internally, is to boot the
  473. kernel with an additional option:</p>
  474. <div class="codehilite"><pre><span></span><code>iomem=relaxed
  475. </code></pre></div>
  476. <p>On Debian (and derived operating systems such as Ubuntu), you can make this a
  477. permanent setting:</p>
  478. <ol>
  479. <li>Edit the file: <code>/etc/default/grub</code></li>
  480. <li>
  481. <p>Update the line <code>GRUB_CMDLINE_LINUX</code> to read:</p>
  482. <p><code>GRUB_CMDLINE_LINUX="iomem=relaxed"</code></p>
  483. </li>
  484. <li>
  485. <p>Run: <code>update-grub</code> to update the Grub configuration.</p>
  486. </li>
  487. </ol>
  488. <h3 id="query-coreboot-details">Query Coreboot details<a class="headerlink" href="#query-coreboot-details" title="Permanent link">&para;</a></h3>
  489. <p>You can verify the coreboot version (as well as the fact that you're running
  490. coreboot) by using the <code>dmidecode</code> utility as follows:</p>
  491. <h4 id="bios-version">BIOS version<a class="headerlink" href="#bios-version" title="Permanent link">&para;</a></h4>
  492. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo dmidecode -t bios
  493. <span class="gp"># </span>dmidecode <span class="m">3</span>.3
  494. <span class="go">Getting SMBIOS data from sysfs.</span>
  495. <span class="go">SMBIOS 2.8 present.</span>
  496. <span class="go">Handle 0x0000, DMI type 0, 26 bytes</span>
  497. <span class="go">BIOS Information</span>
  498. <span class="go"> Vendor: coreboot</span>
  499. <span class="go"> Version: CBET4000 4.10-1082-g4357a82076-dirty</span>
  500. <span class="go"> Release Date: 10/20/2019</span>
  501. <span class="go"> ROM Size: 12 MB</span>
  502. <span class="go"> Characteristics:</span>
  503. <span class="go"> PCI is supported</span>
  504. <span class="go"> PC Card (PCMCIA) is supported</span>
  505. <span class="go"> BIOS is upgradeable</span>
  506. <span class="go"> Selectable boot is supported</span>
  507. <span class="go"> ACPI is supported</span>
  508. <span class="go"> Targeted content distribution is supported</span>
  509. <span class="go"> BIOS Revision: 4.10</span>
  510. <span class="go"> Firmware Revision: 0.0</span>
  511. </code></pre></div>
  512. <h4 id="system-type-name">System type &amp; name<a class="headerlink" href="#system-type-name" title="Permanent link">&para;</a></h4>
  513. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo dmidecode -t system
  514. <span class="gp"># </span>dmidecode <span class="m">3</span>.3
  515. <span class="go">Getting SMBIOS data from sysfs.</span>
  516. <span class="go">SMBIOS 2.8 present.</span>
  517. <span class="go">Handle 0x0001, DMI type 1, 27 bytes</span>
  518. <span class="go">System Information</span>
  519. <span class="go"> Manufacturer: LENOVO</span>
  520. <span class="go"> Product Name: 2325BU3</span>
  521. <span class="go"> Version: ThinkPad X230</span>
  522. <span class="go"> Serial Number: PK1HM8E</span>
  523. <span class="go"> UUID: ce136601-xxxx-xxxx-xxxx-xxxxxxxxxxxx</span>
  524. <span class="go"> Wake-up Type: Reserved</span>
  525. <span class="go"> SKU Number: Not Specified</span>
  526. <span class="go"> Family: ThinkPad X230</span>
  527. <span class="go">Handle 0x000B, DMI type 32, 11 bytes</span>
  528. <span class="go">System Boot Information</span>
  529. <span class="go"> Status: No errors detected</span>
  530. </code></pre></div>
  531. <h3 id="install-flashrom">Install: <code>flashrom</code><a class="headerlink" href="#install-flashrom" title="Permanent link">&para;</a></h3>
  532. <p>The primary tool for operating on your BIOS is called <code>flashrom</code>. The Debian
  533. package is also called by the same name and can be installed as:</p>
  534. <div class="codehilite"><pre><span></span><code>apt-get install flashrom
  535. </code></pre></div>
  536. <p>If the kernel is booted correctly with <code>iomem=relaxed</code>, you can run <code>flashrom</code>:</p>
  537. <div class="codehilite"><pre><span></span><code>flashrom -pinternal
  538. </code></pre></div>
  539. <p>Ouput:</p>
  540. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo flashrom -pinternal
  541. <span class="go">flashrom v1.2 on Linux 5.10.9-gnu (x86_64)</span>
  542. <span class="go">flashrom is free software, get the source code at https://flashrom.org</span>
  543. <span class="go">Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).</span>
  544. <span class="go">coreboot table found at 0xbff51000.</span>
  545. <span class="go">Found chipset &quot;Intel QM77&quot;.</span>
  546. <span class="go">Enabling flash write... SPI Configuration is locked down.</span>
  547. <span class="go">Enabling hardware sequencing due to multiple flash chips detected.</span>
  548. <span class="go">OK.</span>
  549. <span class="go">Found Programmer flash chip &quot;Opaque flash chip&quot; (12288 kB, Programmer-specific) mapped at physical address 0x0000000000000000.</span>
  550. <span class="go">No operations were specified.</span>
  551. </code></pre></div>
  552. <div class="admonition tip">
  553. <p class="admonition-title">Tip</p>
  554. <p>Sometimes <code>flashrom</code> will not detect the internal flash chip, though it
  555. might very well be able to confirm the BIOS type and machine name. In such
  556. cases, you can try to run <code>flashrom</code> as: <code>flashrom
  557. -pinternal:laptop=force_I_want_a_brick</code>. This is not completely safe</p>
  558. </div>
  559. <h3 id="read-bios-image">Read BIOS Image<a class="headerlink" href="#read-bios-image" title="Permanent link">&para;</a></h3>
  560. <p>You can dump the BIOS to a file:</p>
  561. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>flashrom -pinternal -r lc230-coreboot.rom
  562. </code></pre></div>
  563. <p>This will read the BIOS to a file: <code>lc230-coreboot.rom</code>. This file will be 12 MB in size.</p>
  564. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo flashrom -pinternal -r lc230.rom
  565. <span class="go">flashrom v1.2 on Linux 5.10.9-gnu (x86_64)</span>
  566. <span class="go">flashrom is free software, get the source code at https://flashrom.org</span>
  567. <span class="go">Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).</span>
  568. <span class="go">coreboot table found at 0xbff51000.</span>
  569. <span class="go">Found chipset &quot;Intel QM77&quot;.</span>
  570. <span class="go">Enabling flash write... SPI Configuration is locked down.</span>
  571. <span class="go">Enabling hardware sequencing due to multiple flash chips detected.</span>
  572. <span class="go">OK.</span>
  573. <span class="go">Found Programmer flash chip &quot;Opaque flash chip&quot; (12288 kB, Programmer-specific) mapped at physical address 0x0000000000000000.</span>
  574. <span class="go">Reading flash... done.</span>
  575. <span class="gp">$ </span>ls -lh lc230-coreboot.rom
  576. <span class="go">-rw-r--r-- 1 root root 12M Feb 8 04:46 lc230-coreboot.rom</span>
  577. </code></pre></div>
  578. <h3 id="write-bios-image">Write BIOS Image<a class="headerlink" href="#write-bios-image" title="Permanent link">&para;</a></h3>
  579. <p>You can now write back to the BIOS chips as follows:</p>
  580. <div class="highlight"><pre><span></span><code><span class="gp">$ </span>sudo flashrom -pinternal -w lc230-coreboot.rom
  581. <span class="go">flashrom v1.2 on Linux 5.10.9-gnu (x86_64)</span>
  582. <span class="go">flashrom is free software, get the source code at https://flashrom.org</span>
  583. <span class="go">Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).</span>
  584. <span class="go">coreboot table found at 0xbff51000.</span>
  585. <span class="go">Found chipset &quot;Intel QM77&quot;.</span>
  586. <span class="go">Enabling flash write... SPI Configuration is locked down.</span>
  587. <span class="go">Enabling hardware sequencing due to multiple flash chips detected.</span>
  588. <span class="go">OK.</span>
  589. <span class="go">Found Programmer flash chip &quot;Opaque flash chip&quot; (12288 kB, Programmer-specific) mapped at physical address 0x0000000000000000.</span>
  590. <span class="go">Reading old flash chip contents... done.</span>
  591. <span class="go">Erasing and writing flash chip... </span>
  592. <span class="go">Warning: Chip content is identical to the requested image.</span>
  593. <span class="go">Erase/write done</span>
  594. </code></pre></div>
  595. <h3 id="flash-skulls">Flash: Skulls<a class="headerlink" href="#flash-skulls" title="Permanent link">&para;</a></h3>
  596. <p>The Skulls Coreboot distribution provides built in scripts to upgrade the BIOS.
  597. The update procedure is <a href="https://github.com/merge/skulls/blob/master/x230/README.md#updating">detailed
  598. here</a>.
  599. Your LC230 ships with the latest release of Skull available at the time of
  600. shipping the laptop to you. You can upgrade skulls using the instructions above. </p>
  601. <h3 id="flash-heads">Flash: Heads<a class="headerlink" href="#flash-heads" title="Permanent link">&para;</a></h3>
  602. <p>If you want to experiment with the <a href="https://osresearch.net/">Heads firmware</a>,
  603. instructions are available on the <a href="https://osresearch.net/">Heads website</a> as
  604. well as in the <a href="https://github.com/merge/skulls/blob/master/x230/README.md#moving-to-heads">Skulls documentation</a>.</p>
  605. <h2 id="configuring-coreboot">Configuring Coreboot<a class="headerlink" href="#configuring-coreboot" title="Permanent link">&para;</a></h2>
  606. <p>Your LC230 ships with a SeaBIOS payload called <code>nvramcui</code> that allows you to
  607. configure coreboot behaviour and save the settings to nvram.</p>
  608. <div style="text-align: center">
  609. <figure style="display: inline-block" >
  610. <img src="/images/nvramcui-1.jpg" width="250" />
  611. <figcaption> nvramcui options (1) </figcaption>
  612. </figure>
  613. <figure style="display: inline-block" >
  614. <img src="/images/nvramcui-2.jpg" width="235" />
  615. <figcaption> nvramcui options (2) </figcaption>
  616. </figure>
  617. <figure style="display: inline-block" >
  618. <img src="/images/nvramcui-3.jpg" width="235" />
  619. <figcaption> nvramcui options (3) </figcaption>
  620. </figure>
  621. </div>
  622. <h3 id="swapping-fn-and-ctrl">Swapping <span class="keys"><kbd class="key-function">Fn</kbd></span> and <span class="keys"><kbd class="key-control">Ctrl</kbd></span><a class="headerlink" href="#swapping-fn-and-ctrl" title="Permanent link">&para;</a></h3>
  623. <p>The <code>fn_ctrl_swap</code> on the 2<sup>nd</sup> page of the <code>nvramcui</code> settings page enables you
  624. to toggle the <span class="keys"><kbd class="key-function">Fn</kbd></span> and <span class="keys"><kbd class="key-control">Ctrl</kbd></span> swap. If you like to have the control key
  625. on the bottom left corner of the keyboard, then you can set this option to <code>Enable</code>.</p>
  626. <h3 id="increasing-graphics-memory">Increasing Graphics Memory<a class="headerlink" href="#increasing-graphics-memory" title="Permanent link">&para;</a></h3>
  627. <p>The x230 GPU does not have dedication RAM. Instead it shares its memory with
  628. the main system memory. You can configure how much RAM is dedicated to the GPU
  629. via the <code>gfx_uma_size</code> option on the 3<sup>rd</sup> page of the <code>nvramcui</code> settings.</p>
  630. <p>Pressing the <span class="keys"><kbd class="key-arrow-left">Left</kbd></span> and <span class="keys"><kbd class="key-arrow-right">Right</kbd></span> arrow keys you can iterate over all the
  631. available settings for this option.</p>
  632. <h3 id="other-settings">Other settings<a class="headerlink" href="#other-settings" title="Permanent link">&para;</a></h3>
  633. <p>You can also configure the following behaviour via nvramcui:</p>
  634. <ul>
  635. <li>
  636. <p><strong>Always On USB</strong>: By enabling this option, you can configure the USB ports
  637. to be <em>always on</em> - even when the laptop is suspended.</p>
  638. </li>
  639. <li>
  640. <p><strong>Enable/Disable Trackpoing, Touchpad</strong>: You can toggle the <code>touchpad</code> and
  641. <code>trackpoint</code> options to enable or disable the the touchpad and trackpoint
  642. respectively.</p>
  643. </li>
  644. </ul>
  645. </article>
  646. </div>
  647. </div>
  648. </main>
  649. <footer class="md-footer">
  650. <div class="md-footer-nav">
  651. <nav class="md-footer-nav__inner md-grid" aria-label="Footer">
  652. <a href="../" class="md-footer-nav__link md-footer-nav__link--prev" rel="prev">
  653. <div class="md-footer-nav__button md-icon">
  654. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
  655. </div>
  656. <div class="md-footer-nav__title">
  657. <div class="md-ellipsis">
  658. <span class="md-footer-nav__direction">
  659. Previous
  660. </span>
  661. (LC230) Overview
  662. </div>
  663. </div>
  664. </a>
  665. <a href="../troubleshooting/" class="md-footer-nav__link md-footer-nav__link--next" rel="next">
  666. <div class="md-footer-nav__title">
  667. <div class="md-ellipsis">
  668. <span class="md-footer-nav__direction">
  669. Next
  670. </span>
  671. (LC230) Troubleshooting
  672. </div>
  673. </div>
  674. <div class="md-footer-nav__button md-icon">
  675. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
  676. </div>
  677. </a>
  678. </nav>
  679. </div>
  680. <div class="md-footer-meta md-typeset">
  681. <div class="md-footer-meta__inner md-grid">
  682. <div class="md-footer-copyright">
  683. <div class="md-footer-copyright__highlight">
  684. Copyright &copy; Mostly Harmless
  685. </div>
  686. Made with
  687. <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
  688. Material for MkDocs
  689. </a>
  690. </div>
  691. </div>
  692. </div>
  693. </footer>
  694. </div>
  695. <script src="../../assets/javascripts/vendor.93c04032.min.js"></script>
  696. <script src="../../assets/javascripts/bundle.83e5331e.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
  697. <script>
  698. app = initialize({
  699. base: "../..",
  700. features: [],
  701. search: Object.assign({
  702. worker: "../../assets/javascripts/worker/search.8c7e0a7e.min.js"
  703. }, typeof search !== "undefined" && search)
  704. })
  705. </script>
  706. </body>
  707. </html>