tasks.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <style type="text/css">
  7. @import url('css/main.css');
  8. </style>
  9. <title>Libreboot task list</title>
  10. </head>
  11. <body>
  12. <div class="section" id="pagetop">
  13. <h1>Libreboot task list</h1>
  14. <p>
  15. Back to <a href="index.html">index.html</a>.
  16. </p>
  17. </div>
  18. <div class="section">
  19. <h1 id="tasks">
  20. Important tasks for the libreboot project
  21. </h1>
  22. <p>
  23. This page is part of the git repository, so feel free to submit patches
  24. adding to or removing from this list. (adapting the HTML should be simple enough)
  25. </p>
  26. </div>
  27. <div class="section">
  28. <h1 id="board_ports">Board ports</h1>
  29. <ul>
  30. <li>
  31. Libreboot has so far been biased towards Intel. This needs to end (the sooner, the better). A nice start:
  32. <ul>
  33. <li>
  34. Lenovo G505S (works without CPU microcode updates).
  35. Videos BIOS is not yet fully replaced (openatom doesn't have a working framebuffer, yet, but
  36. it can draw a bitmap in user space, using a special utility) -
  37. <a href="https://github.com/alterapraxisptyltd/openatom">openatom in github</a>.
  38. SMU needs replacing (ruik/funfuctor/patrickg/mrnuke might be able to help).
  39. </li>
  40. <li>
  41. ASUS KFSN4-DRE - fam10h, already in coreboot, seems to have native graphics initialization already,
  42. fam10h, already in coreboot. Works without CPU microcode updates, has native graphics initialization
  43. (text-mode and framebuffer mode). PLCC flash chip, but can be read/flashed from factory firmware
  44. so just boot up, dump, hot-swap and flash the dump to make a backup, then check that the system
  45. boots with the backup. Then flash the original chip with libreboot. <b>External PLCC flash programmer
  46. not needed!</b>
  47. - keep note of this ACPI issue (ask tpearson about it later):
  48. <a href="http://www.coreboot.org/pipermail/coreboot/2015-June/079966.html">http://www.coreboot.org/pipermail/coreboot/2015-June/079966.html</a>
  49. </li>
  50. <li>
  51. ASUS KGPE-D16 - code not yet public,
  52. ported by <a href="http://raptorengineeringinc.com/content/base/main.htm">Raptor Engineering Inc.</a> (USA).
  53. They are asking for 90K* USD to pay for the work to upstream the code (do code review, add more patches,
  54. get it merged in coreboot master repository - a lot of work!). Crowd funding will be necessary.
  55. Crowd funding will be necessary.
  56. See <a href="http://www.coreboot.org/pipermail/coreboot/2015-April/079773.html">coreboot mailing list</a>.
  57. This board uses DIP-8 (socket) SPI flash, so it's easy to flash (external flashing required for initial install).
  58. * was 35K. The extra 15K is a stretch goal for S3 support and full text-mode graphics initialization (bugs eliminated).
  59. * 40K was added for Fam15h support. See <a href="http://www.coreboot.org/pipermail/coreboot/2015-June/079950.html">http://www.coreboot.org/pipermail/coreboot/2015-June/079950.html</a>
  60. </li>
  61. <li>
  62. F2A85-M and E350M1 (libreboot_*_headless.rom). Test openatom (video BIOS replacement). SMU firmware is a problem. XHCI firmware is a problem.
  63. </li>
  64. <li>
  65. <b>TODO: Add ARM candidates here (the above systems are all AMD).</b>
  66. <ul>
  67. <li>Look into the <i>rockchip</i> (rk3288. note: mali gpu. one or two blobs might need replacing.
  68. see <a href="http://blogs.coreboot.org/blog/2015/05/26/report-on-chrome-os-upstreaming/">this page</a>
  69. for example) and <i>IBM 'POWER8' platforms</i></li>
  70. </ul>
  71. </li>
  72. <li><b>This list needs to expand!</b></li>
  73. </ul>
  74. </li>
  75. <li>
  76. That doesn't mean Intel is off the table just yet:
  77. <ul>
  78. <li>
  79. ThinkPad R500
  80. </li>
  81. <li>
  82. ThinkPad W500: they all use switchable graphics (ATI+Intel). Unknown if PM45 is compatible with GM45.
  83. </li>
  84. <li>
  85. ThinkPad X61: ICH8, i965
  86. lubko in #coreboot. <a href="https://github.com/lkundrak/coreboot/tree/x61">https://github.com/lkundrak/coreboot/tree/x61</a>
  87. - raminit still isn't done, there might be other parts that need to be finished (probably EC).
  88. This system comes with a ME, but it's optional like in GM45, and can be removed.
  89. <ul>
  90. <li>T61: <a href="http://review.coreboot.org/#/c/8482/">http://review.coreboot.org/#/c/8482/</a></li>
  91. </ul>
  92. </li>
  93. <li>
  94. Non-lenovo GM45 laptops:
  95. <ul>
  96. Dell Latitude E6400 - quite a few of these online. This is a good laptop to target in coreboot and libreboot.
  97. NOTE: EC support. ALSO: DDR2 memory (coreboot raminit for GM45 currently only supports DDR3)</li>
  98. </ul>
  99. </li>
  100. <li>
  101. <b>Desktop</b> system: Dell Optiplex 755. There are <b>lots</b> of these available online.
  102. ICH9. DDR2 RAM (needs work in coreboot). No EC (it's a desktop). It will require
  103. quite a bit of work in coreboot, but this is a very good candidate.
  104. The ME can probably be removed and disabled, using ich9gen without any modifications
  105. (or with few modifications). Where are the datasheets? Schematics?
  106. </li>
  107. </ul>
  108. </li>
  109. </ul>
  110. <p><a href="#pagetop">Back to top of page.</a></p>
  111. </div>
  112. <div class="section">
  113. <h1>Platform-specific bugs</h1>
  114. <ul>
  115. <li>
  116. all thinkpads: When the system is running, plugging in an ethernet cable
  117. doesn't always work (no network), you have to try several times. Booting with
  118. an ethernet cable attached is reliable. Debug this and fix it.
  119. </li>
  120. <li>
  121. Fix these issues on GM45/GS45 targets:
  122. <ul>
  123. <li>
  124. X200: text-mode is broken. only framebuffer graphics work. Git-bisect is needed.
  125. </li>
  126. <li>
  127. X60: on the latest coreboot-libre update lately (during June 2015), keyboard works intermittently.
  128. Bisect and fix.
  129. </li>
  130. <li>
  131. X200/X60: battery drained even while system is "off" on some systems. investigate.
  132. Could just be the Ethernet controller waiting for a Wake-on-LAN frame.
  133. </li>
  134. <li>
  135. Sound (internal speaker) broken on T500 (works in lenovobios). external speaker/headphones work.
  136. - probably a different hda_verb
  137. </li>
  138. <li>
  139. Fix remaining incompatible LCD panels in native graphics on T500.
  140. See <a href="hcl/t500.html">hcl/t500.html</a>.
  141. - EDID related, or difference in how VGA ROM does init. Investigate.
  142. </li>
  143. <li>
  144. T400/T500/R400 (tested on T400): UART (serial port) doesn't work. Investigate.
  145. (already tried enabling early h8 dock option. some RE with superiotool is needed).
  146. - kmalkki has an R400. He says he can be contracted for it. (try to DIY first)
  147. </li>
  148. </ul>
  149. </li>
  150. <li>
  151. <b>Finish all work listed in <a href="future/index.html">future/index.html</a></b>
  152. </li>
  153. <li>
  154. Fix these issues on i945 targets (X60/T60/macbook21)
  155. <ul>
  156. <li>
  157. i945: fix VRAM size (currently 8MB. should be 64MB).
  158. See <a href="future/index.html#i945_vram_size">future/index.html#i945_vram_size</a>.
  159. </li>
  160. <li>
  161. Fix remaining incompatible LCD panels in native graphics on T60.
  162. See <a href="future/index.html#lcd_i945_incompatibility">future/index.html#lcd_i945_incompatibility</a>.
  163. - EDID related, or difference in how VGA ROM does init. Investigate.
  164. </li>
  165. <li>
  166. i945: the intel video driver used to initialize the display without native graphics initialization
  167. and without the extracted video BIOS. It no longer does, so investigate why it does not, and fix
  168. the regression (fix has to be done in the kernel, Linux).
  169. See <a href="http://www.coreboot.org/pipermail/coreboot/2014-June/078104.html">http://www.coreboot.org/pipermail/coreboot/2014-June/078104.html</a> and
  170. <a href="http://www.coreboot.org/pipermail/coreboot/2014-June/078105.html">http://www.coreboot.org/pipermail/coreboot/2014-June/078105.html</a>
  171. </li>
  172. <li>
  173. Add fake_vbt tables on i945 systems (also GM45).
  174. </li>
  175. <li>
  176. Commit 26ca08caf81ad2dcc9c8246a743d82ffb464c767 in coreboot, see the while (1) loop that
  177. waits for the panel to power up on i945. This is an infinite loop if the panel doesn't power up.
  178. Fix it. Also, are there panels that don't power up? Test this, and fix it.
  179. </li>
  180. </ul>
  181. </li>
  182. <li>
  183. Look into the notes an <a href="http://www.thinkwiki.org/wiki/Problem_with_high_pitch_noises">http://www.thinkwiki.org/wiki/Problem_with_high_pitch_noises</a>
  184. </li>
  185. </ul>
  186. <p><a href="#pagetop">Back to top of page.</a></p>
  187. </div>
  188. <div class="section">
  189. <h1>
  190. Flashing from lenovobios to libreboot (and vice versa)
  191. </h1>
  192. <ul>
  193. <li>
  194. Implement everything outlined in
  195. <a href="hcl/gm45_remove_me.html#demefactory">hcl/gm45_remove_me.html#demefactory</a>
  196. and test it.
  197. </li>
  198. </ul>
  199. <p><a href="#pagetop">Back to top of page.</a></p>
  200. </div>
  201. <div class="section">
  202. <h1>Payloads</h1>
  203. <ul>
  204. <li>
  205. Add ProteanOS payload to systems with big enough flash chips. (eg X200/R400).
  206. This page (outdated, but still useful according to the maintainer) has some info:
  207. <a href="http://www.proteanos.com/doc/plat/porting/">http://www.proteanos.com/doc/plat/porting/</a>.
  208. pehjota says that once the port is done, prokit can be modified to generate the entire
  209. distribution as a vmlinuz and initrd.img file.
  210. </li>
  211. </ul>
  212. <p><a href="#pagetop">Back to top of page.</a></p>
  213. </div>
  214. <div class="section">
  215. <h1>Build system</h1>
  216. <ul>
  217. <li>
  218. add <i>resources/checksums/*</i> and update it whenever updating the modules
  219. (coreboot, flashrom, etc) or updating patches.
  220. For each download script, make it check the sha512 hashes of all the files, to ensure
  221. that the files match the checksums.
  222. </li>
  223. <li>re-enable building of txtmode images (get memtest86 working again first, and fix gm45 txtmode)</li>
  224. <li>
  225. When downloading coreboot/grub/memtest/etc using the download scripts, it currently does
  226. not check the integrity of these sources at all. Libreboot releases are signed, but
  227. what can be done to improve it is to check the sha512sums of all files downloaded
  228. by these scripts (which are in the git repository, but not the release archives,
  229. because the release archives already include these sources). Do this for all
  230. non-integrated modules used in libreboot.
  231. </li>
  232. <li>Make memtest86+ build using coreboot's own crossgcc toolchain. Currently,
  233. memtest86+ doesn't even work at all when cross-compiled using the toolchain in x86-64 trisquel7</li>
  234. <li>
  235. Make libreboot (all of it!) build reproducibly. This is very important.
  236. <ul>
  237. <li>Talk to h01ger in coreboot about the coreboot part (he did reproducible.debian.net/coreboot/coreboot.html</li>
  238. <li>
  239. h01ger says ------ fchmmr: please keep the reproducible-builds@lists.alioth.debian.org mailing list posted - i'm aware of http://projects.mtjm.eu/work_packages/16 :-)
  240. </li>
  241. <li><a href="https://reproducible.debian.net/coreboot/coreboot.html">https://reproducible.debian.net/coreboot/coreboot.html</a></li>
  242. <li>
  243. check coreboot mailing list, eg:
  244. <a href="http://www.coreboot.org/pipermail/coreboot/2015-June/079994.html">http://www.coreboot.org/pipermail/coreboot/2015-June/079994.html</a>
  245. </li>
  246. <li>
  247. Check GRUB in Debian (or GRUB upstream) for how to make that reproducible
  248. if Debian has done this already (they are working on reproducible builds)
  249. - <b>h01ger says reproducible.debian.net/grub2</b>
  250. </li>
  251. <li>
  252. <a href="https://wiki.debian.org/ReproducibleBuilds">https://wiki.debian.org/ReproducibleBuilds</a>
  253. </li>
  254. <li>
  255. Join #debian-reproducible on OFTC IRC.
  256. </li>
  257. <li>
  258. merged in master (coreboot) - pay attention to these, especially
  259. the fact that the reproducibility relies on git (libreboot uses coreboot without git,
  260. and the reason makes this unavoidable):
  261. <a href="http://review.coreboot.org/#/c/8616/">http://review.coreboot.org/#/c/8616/</a>
  262. <a href="http://review.coreboot.org/#/c/8617/">http://review.coreboot.org/#/c/8617/</a>
  263. <a href="http://review.coreboot.org/#/c/8618/">http://review.coreboot.org/#/c/8618/</a>
  264. <a href="http://review.coreboot.org/#/c/8619/">http://review.coreboot.org/#/c/8619/</a>
  265. </li>
  266. <li>
  267. not yet merged in master (coreboot:
  268. <a href="http://review.coreboot.org/#/c/10515/">http://review.coreboot.org/#/c/10515/</a> --
  269. not really relevant yet, but will be in the future. (libreboot currently ignores SeaBIOS)
  270. </li>
  271. </ul>
  272. </li>
  273. <li>
  274. build/release/util currently fails on Parabola (it only works well in Trisquel).
  275. - this should be made portable. Build (cross-compile all of the dependencies from upstream,
  276. and include a <i>ccs/</i> release archive. Then use those for dependencies to cross-compile
  277. everything (this should make portability easy, and there aren't a lot of dependencies
  278. for the utilities).
  279. </li>
  280. </ul>
  281. <p><a href="#pagetop">Back to top of page.</a></p>
  282. </div>
  283. <div class="section">
  284. <h1>Improvements to the utilities</h1>
  285. <ul>
  286. <li>
  287. Make ich9gen/ich9deblob portable. They both rely extensively on bitfields, and they assume
  288. little-endian; for instance, mapping a little endian file directly to a struct, instead
  289. of serializing/deserializing. Re-factor both utilities and make them fully portable.
  290. </li>
  291. <li>
  292. Make ich9gen/ich9deblob/demefactory show GPL license info via <i>--version</i> argument.
  293. </li>
  294. <li>
  295. Adapt linux-libre deblob scripts for use with coreboot. Libreboot is already deblobbed
  296. using its own script, but updating it is still a bit too manual. linux-libre's deblob
  297. scripts do an excellent job and (adapted) will make it much easier to maintain coreboot-libre.
  298. </li>
  299. </ul>
  300. <p><a href="#pagetop">Back to top of page.</a></p>
  301. </div>
  302. <div class="section">
  303. <h1>
  304. BeagleBone Black
  305. </h1>
  306. <ul>
  307. <li>Get libre distros ported to it. Eg proteanos, trisquel, parabola, librecmc and so on.</li>
  308. <li>See <a href="https://coreboot.org/BBB_screwdriver">BBB screwdriver</a> - from the coreboot
  309. project, this is an openwrt-based image for the BBB that comes with EHCI enabled out of the box.
  310. Look into re-basing that on librecmc (librecmc is a deblobbed version of openwrt).</li>
  311. </ul>
  312. <p><a href="#pagetop">Back to top of page.</a></p>
  313. </div>
  314. <div class="section">
  315. <h1>Documentation improvements</h1>
  316. <ul>
  317. <li>
  318. Next release after 20150518: note, mention that ACPI brightness methods for X60/T60 work again.
  319. </li>
  320. <li>
  321. Get /proc/ioports for all hw logs. (this was added to Motherboard Porting Guide recently)
  322. - other instructions were also added there. basically, get whatever extra logs are
  323. desirable, for all systems.
  324. </li>
  325. <li>
  326. Add info about FTDI FT232H usbdebug (BBB could be used for this):
  327. <a href="http://review.coreboot.org/#/c/10063">http://review.coreboot.org/#/c/10063</a>
  328. </li>
  329. <li>
  330. Add information from hw registers on all boards.
  331. Get them for the following remaining boards: X60, T60, macbook21, R400
  332. </li>
  333. <li>
  334. There are no instructions for how to use the GRUB terminal to find
  335. a grub.cfg manually, or how to boot an installed GNU/Linux manually,
  336. so some users get stuck after the initial installation of libreboot
  337. not knowing how to boot the GNU/Linux system that they had before installing.
  338. Fix that. (also, promote the FSF-endorsed distros while you do it)
  339. </li>
  340. <li>
  341. Add guides for GM45 laptops in docs/security/
  342. </li>
  343. <li>
  344. Add guides for GM45 laptops in docs/hardware/
  345. </li>
  346. <li>
  347. Convert documentation to Sphinx/ReST
  348. <ul>
  349. <li>Translations are needed for the documentation and the main website.
  350. Most people don't speak English as a first language.</li>
  351. </ul>
  352. </li>
  353. <li>
  354. LUKS key in initramfs: Add Trisquel documentation for docs/gnulinux/encrypted_trisquel.html.
  355. </li>
  356. <li>
  357. PLCC flashing guide is needed:
  358. <a href="http://blogs.coreboot.org/files/2013/07/vultureprog_shuttle_sbs.jpg">image</a>,
  359. <a href="http://blogs.coreboot.org/files/2013/08/vultureprog_probing.jpg">image</a>,
  360. <a href="http://blogs.coreboot.org/files/2013/06/superboosted2.jpg">image</a> -
  361. work with mrnuke on getting info about vultureprog PLCC flashing into libreboot. Libreboot needs
  362. server boards. <a href="https://github.com/mrnuke/vultureprog">https://github.com/mrnuke/vultureprog</a>,
  363. <a href="https://github.com/mrnuke/qiprog">https://github.com/mrnuke/qiprog</a>,
  364. <a href="https://github.com/mrnuke/vultureprog-hardware">https://github.com/mrnuke/vultureprog-hardware</a>.
  365. He also uses the sigrok logic analyzer (free/libre):
  366. <a href="http://www.dx.com/p/logic-analyzer-w-dupont-lines-and-usb-cable-for-scm-black-148945">http://www.dx.com/p/logic-analyzer-w-dupont-lines-and-usb-cable-for-scm-black-148945</a>
  367. </li>
  368. </ul>
  369. <p><a href="#pagetop">Back to top of page.</a></p>
  370. </div>
  371. <div class="section">
  372. <h1>Project (institutional) improvements</h1>
  373. <ul>
  374. <li>
  375. Add proper guidelines for contributions,
  376. like <i>Development Guidelines</i> on the coreboot wiki. For instance, require
  377. <i>Sign-off-by</i> in all commits for libreboot. Consulting with the FSF about this
  378. (licensing@fsf.org).
  379. </li>
  380. <li>
  381. <b>Libreboot needs to be factory firmware, not the replacement. It needs to be *the* firmware.
  382. Consult with the openlunchbox project (and maybe others) on getting hardware manufactured
  383. with libreboot support (out of the box, from the factory).</b>
  384. </li>
  385. <li>
  386. Set up a routine (project-wise) for testing each system with the latest kernel version.
  387. </li>
  388. </ul>
  389. <p><a href="#pagetop">Back to top of page.</a></p>
  390. </div>
  391. <div class="section">
  392. <h1>EC firmware</h1>
  393. <p>
  394. <a href="http://www.coreboot.org/Embedded_controller">http://www.coreboot.org/Embedded_controller</a>
  395. Replace this on all libreboot targets. Some laptops use an extra SPI flash chip for the EC, some
  396. have EC in the main chip, some don't use SPI flash at all but have the firmware inside the EC chip itself.
  397. If the EC has integrated flash then you need to be able to get to the pins on the chip or be able to program them over LPC or SPI (if they have that feature).
  398. The lenovo laptops currently supported in libreboot all use H8 EC chips (contains flash inside the chip).
  399. Read the datasheets on how to externally programme the EC. Chromebooks seem to have free EC
  400. (<a href="https://chromium.googlesource.com/chromiumos/platform/ec/+/master/chip/">https://chromium.googlesource.com/chromiumos/platform/ec/+/master/chip/</a>).
  401. - see
  402. <a href="http://blogs.coreboot.org/blog/2015/05/28/progress-gsoc-week-1/">http://blogs.coreboot.org/blog/2015/05/28/progress-gsoc-week-1/</a> (H8S EC, applies to thinkpads)
  403. </p>
  404. <p><a href="#pagetop">Back to top of page.</a></p>
  405. </div>
  406. <div class="section">
  407. <p>
  408. Copyright &copy; 2014, 2015 Francis Rowe &lt;info@gluglug.org.uk&gt;<br/>
  409. This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions.
  410. A copy of the license can be found at <a href="cc-by-sa-4.txt">cc-by-sa-4.txt</a>.
  411. </p>
  412. <p>
  413. This document is distributed in the hope that it will be useful,
  414. but WITHOUT ANY WARRANTY; without even the implied warranty of
  415. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="cc-by-sa-4.txt">cc-by-sa-4.txt</a> for more information.
  416. </p>
  417. </div>
  418. </body>
  419. </html>