├── .mvn
└── wrapper
│ ├── .gitignore
│ ├── maven-wrapper.properties
│ └── MavenWrapperDownloader.java
├── .dockerignore
├── .idea
└── vcs.xml
├── src
└── main
│ ├── java
│ └── com
│ │ └── chrultrabook
│ │ └── cbdb
│ │ ├── rest
│ │ ├── bean
│ │ │ ├── DeviceNote.java
│ │ │ ├── DeviceGenerationNote.java
│ │ │ ├── DeviceGeneration.java
│ │ │ └── Device.java
│ │ └── PublicRS.java
│ │ ├── constants
│ │ └── OS.java
│ │ └── entity
│ │ ├── BrandEntity.java
│ │ ├── ReadOnly.java
│ │ ├── DeviceNoteEntity.java
│ │ ├── DeviceGenerationNoteEntity.java
│ │ ├── DeviceGenerationEntity.java
│ │ └── DeviceEntity.java
│ ├── resources
│ └── application.properties
│ └── docker
│ ├── Dockerfile.native
│ ├── Dockerfile.native-micro
│ ├── Dockerfile.legacy-jar
│ └── Dockerfile.jvm
├── .gitignore
├── Dockerfile
├── README.md
├── pom.xml
├── mvnw.cmd
├── mvnw
└── devices.json
/.mvn/wrapper/.gitignore:
--------------------------------------------------------------------------------
1 | maven-wrapper.jar
2 |
--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------
1 | *
2 | !target/*-runner
3 | !target/*-runner.jar
4 | !target/lib/*
5 | !target/quarkus-app/*
6 | !.env
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/main/java/com/chrultrabook/cbdb/rest/bean/DeviceNote.java:
--------------------------------------------------------------------------------
1 | package com.chrultrabook.cbdb.rest.bean;
2 |
3 | import com.chrultrabook.cbdb.constants.OS;
4 |
5 | public record DeviceNote (
6 | int id,
7 | OS os,
8 | String note
9 | ) {
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | quarkus.datasource.db-kind = postgresql
2 | #quarkus.datasource.username in .env
3 | #quarkus.datasource.password in .env
4 | #quarkus.datasource.jdbc.url = jdbc:postgresql://localhost:5432/chruldatabase
5 | quarkus.hibernate-orm.database.generation = update
--------------------------------------------------------------------------------
/src/main/java/com/chrultrabook/cbdb/constants/OS.java:
--------------------------------------------------------------------------------
1 | package com.chrultrabook.cbdb.constants;
2 |
3 | public enum OS {
4 | WINDOWS,
5 | LINUX,
6 | MACOS,
7 | ALL;
8 |
9 | public String toLowerString() {
10 | return super.toString().toLowerCase();
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/com/chrultrabook/cbdb/rest/bean/DeviceGenerationNote.java:
--------------------------------------------------------------------------------
1 | package com.chrultrabook.cbdb.rest.bean;
2 |
3 | import com.chrultrabook.cbdb.constants.OS;
4 |
5 | public record DeviceGenerationNote(
6 | int id,
7 | OS os,
8 | String note,
9 | boolean showIfDeviceNotePresent
10 | ) {
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/com/chrultrabook/cbdb/rest/bean/DeviceGeneration.java:
--------------------------------------------------------------------------------
1 | package com.chrultrabook.cbdb.rest.bean;
2 |
3 | import java.util.List;
4 |
5 | public record DeviceGeneration(
6 | int id,
7 | String shortName,
8 | String name,
9 | String baseboard,
10 | List notes,
11 | List devices
12 | ) {
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/com/chrultrabook/cbdb/rest/bean/Device.java:
--------------------------------------------------------------------------------
1 | package com.chrultrabook.cbdb.rest.bean;
2 |
3 | import java.sql.Date;
4 | import java.util.List;
5 |
6 | public record Device(
7 | int id,
8 | String comName,
9 | String boardName,
10 | Date eolDate,
11 | boolean hasFullRom,
12 | String wpMethod,
13 | int stockKernelPartSize,
14 | String brand,
15 | List notes
16 | ) {
17 | }
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | #Maven
2 | target/
3 | pom.xml.tag
4 | pom.xml.releaseBackup
5 | pom.xml.versionsBackup
6 | release.properties
7 | .flattened-pom.xml
8 |
9 | # Eclipse
10 | .project
11 | .classpath
12 | .settings/
13 | bin/
14 |
15 | # IntelliJ
16 | .idea
17 | *.ipr
18 | *.iml
19 | *.iws
20 |
21 | # NetBeans
22 | nb-configuration.xml
23 |
24 | # Visual Studio Code
25 | .vscode
26 | .factorypath
27 |
28 | # OSX
29 | .DS_Store
30 |
31 | # Vim
32 | *.swp
33 | *.swo
34 |
35 | # patch
36 | *.orig
37 | *.rej
38 |
39 | # Local environment
40 | .env
41 |
42 | # Plugin directory
43 | /.quarkus/cli/plugins/
44 |
--------------------------------------------------------------------------------
/src/main/docker/Dockerfile.native:
--------------------------------------------------------------------------------
1 | ####
2 | # This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode.
3 | #
4 | # Before building the container image run:
5 | #
6 | # ./mvnw package -Dnative
7 | #
8 | # Then, build the image with:
9 | #
10 | # docker build -f src/main/docker/Dockerfile.native -t quarkus/chruldatabase .
11 | #
12 | # Then run the container using:
13 | #
14 | # docker run -i --rm -p 8080:8080 quarkus/chruldatabase
15 | #
16 | ###
17 | FROM registry.access.redhat.com/ubi8/ubi-minimal:8.9
18 | WORKDIR /work/
19 | RUN chown 1001 /work \
20 | && chmod "g+rwX" /work \
21 | && chown 1001:root /work
22 | COPY --chown=1001:root target/*-runner /work/application
23 |
24 | EXPOSE 8080
25 | USER 1001
26 |
27 | ENTRYPOINT ["./application", "-Dquarkus.http.host=0.0.0.0"]
28 |
--------------------------------------------------------------------------------
/src/main/java/com/chrultrabook/cbdb/entity/BrandEntity.java:
--------------------------------------------------------------------------------
1 | package com.chrultrabook.cbdb.entity;
2 |
3 | import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
4 | import jakarta.persistence.Cacheable;
5 | import jakarta.persistence.Column;
6 | import jakarta.persistence.Entity;
7 | import jakarta.persistence.EntityListeners;
8 | import jakarta.persistence.GeneratedValue;
9 | import jakarta.persistence.GenerationType;
10 | import jakarta.persistence.Id;
11 | import jakarta.persistence.Table;
12 |
13 | @Entity
14 | @EntityListeners(ReadOnly.class)
15 | @Table(name = "brand")
16 | @Cacheable
17 | public class BrandEntity extends PanacheEntityBase {
18 |
19 | @Id
20 | @GeneratedValue(strategy = GenerationType.IDENTITY)
21 | @Column(name = "id")
22 | public int id;
23 |
24 | @Column(name = "name")
25 | public String name;
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/com/chrultrabook/cbdb/entity/ReadOnly.java:
--------------------------------------------------------------------------------
1 | package com.chrultrabook.cbdb.entity;
2 |
3 | import io.quarkus.runtime.annotations.RegisterForReflection;
4 | import jakarta.persistence.PrePersist;
5 | import jakarta.persistence.PreRemove;
6 | import jakarta.persistence.PreUpdate;
7 |
8 | @RegisterForReflection
9 | public class ReadOnly {
10 |
11 | @PrePersist
12 | void onPrePersist(Object o) {
13 | throw new IllegalStateException("JPA is trying to persist an entity of type " + (o == null ? "null" : o.getClass()));
14 | }
15 |
16 | @PreUpdate
17 | void onPreUpdate(Object o) {
18 | throw new IllegalStateException("JPA is trying to update an entity of type " + (o == null ? "null" : o.getClass()));
19 | }
20 |
21 | @PreRemove
22 | void onPreRemove(Object o) {
23 | throw new IllegalStateException("JPA is trying to remove an entity of type " + (o == null ? "null" : o.getClass()));
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/docker/Dockerfile.native-micro:
--------------------------------------------------------------------------------
1 | ####
2 | # This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode.
3 | # It uses a micro base image, tuned for Quarkus native executables.
4 | # It reduces the size of the resulting container image.
5 | # Check https://quarkus.io/guides/quarkus-runtime-base-image for further information about this image.
6 | #
7 | # Before building the container image run:
8 | #
9 | # ./mvnw package -Dnative
10 | #
11 | # Then, build the image with:
12 | #
13 | # docker build -f src/main/docker/Dockerfile.native-micro -t quarkus/chruldatabase .
14 | #
15 | # Then run the container using:
16 | #
17 | # docker run -i --rm -p 8080:8080 quarkus/chruldatabase
18 | #
19 | ###
20 | FROM quay.io/quarkus/quarkus-micro-image:2.0
21 | WORKDIR /work/
22 | RUN chown 1001 /work \
23 | && chmod "g+rwX" /work \
24 | && chown 1001:root /work
25 | COPY --chown=1001:root target/*-runner /work/application
26 |
27 | EXPOSE 8080
28 | USER 1001
29 |
30 | ENTRYPOINT ["./application", "-Dquarkus.http.host=0.0.0.0"]
31 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | ####
2 | # This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode.
3 | # It uses a micro base image, tuned for Quarkus native executables.
4 | # It reduces the size of the resulting container image.
5 | # Check https://quarkus.io/guides/quarkus-runtime-base-image for further information about this image.
6 | #
7 | # Before building the container image run:
8 | #
9 | # ./mvnw package -Dnative
10 | #
11 | # Then, build the image with:
12 | #
13 | # docker build -f src/main/docker/Dockerfile.native-micro -t quarkus/chruldatabase .
14 | #
15 | # Then run the container using:
16 | #
17 | # docker run -i --rm -p 8080:8080 quarkus/chruldatabase
18 | #
19 | ###
20 | FROM quay.io/quarkus/quarkus-micro-image:2.0
21 | WORKDIR /work/
22 | RUN chown 1001 /work \
23 | && chmod "g+rwX" /work \
24 | && chown 1001:root /work
25 | COPY --chown=1001:root target/*-runner /work/application
26 |
27 | COPY --chown=1001:root .env /work/.env
28 |
29 | EXPOSE 8080
30 | USER 1001
31 |
32 | ENTRYPOINT ["./application", "-Dquarkus.http.host=0.0.0.0"]
33 |
--------------------------------------------------------------------------------
/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | # Licensed to the Apache Software Foundation (ASF) under one
2 | # or more contributor license agreements. See the NOTICE file
3 | # distributed with this work for additional information
4 | # regarding copyright ownership. The ASF licenses this file
5 | # to you under the Apache License, Version 2.0 (the
6 | # "License"); you may not use this file except in compliance
7 | # with the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing,
12 | # software distributed under the License is distributed on an
13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | # KIND, either express or implied. See the License for the
15 | # specific language governing permissions and limitations
16 | # under the License.
17 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.zip
18 | wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar
19 |
--------------------------------------------------------------------------------
/src/main/java/com/chrultrabook/cbdb/entity/DeviceNoteEntity.java:
--------------------------------------------------------------------------------
1 | package com.chrultrabook.cbdb.entity;
2 |
3 | import com.chrultrabook.cbdb.constants.OS;
4 | import com.chrultrabook.cbdb.rest.bean.DeviceNote;
5 |
6 | import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
7 | import jakarta.persistence.Cacheable;
8 | import jakarta.persistence.Column;
9 | import jakarta.persistence.Entity;
10 | import jakarta.persistence.EntityListeners;
11 | import jakarta.persistence.EnumType;
12 | import jakarta.persistence.Enumerated;
13 | import jakarta.persistence.GeneratedValue;
14 | import jakarta.persistence.GenerationType;
15 | import jakarta.persistence.Id;
16 | import jakarta.persistence.Table;
17 | import jakarta.persistence.Transient;
18 |
19 | @Entity
20 | @EntityListeners(ReadOnly.class)
21 | @Table(name = "device_note")
22 | @Cacheable
23 | public class DeviceNoteEntity extends PanacheEntityBase {
24 |
25 | @Id
26 | @GeneratedValue(strategy = GenerationType.IDENTITY)
27 | @Column(name = "id")
28 | public int id;
29 |
30 | @Column(name = "os")
31 | @Enumerated(EnumType.STRING)
32 | public OS os;
33 |
34 | @Column(name = "device_id")
35 | public int deviceId;
36 |
37 | @Column(name = "note")
38 | public String note;
39 |
40 | @Transient
41 | public DeviceNote toRecord() {
42 | return new DeviceNote(
43 | this.id,
44 | this.os,
45 | this.note
46 | );
47 | }
48 |
49 | }
50 |
--------------------------------------------------------------------------------
/src/main/java/com/chrultrabook/cbdb/entity/DeviceGenerationNoteEntity.java:
--------------------------------------------------------------------------------
1 | package com.chrultrabook.cbdb.entity;
2 |
3 | import com.chrultrabook.cbdb.constants.OS;
4 | import com.chrultrabook.cbdb.rest.bean.DeviceGenerationNote;
5 |
6 | import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
7 | import jakarta.persistence.Cacheable;
8 | import jakarta.persistence.Column;
9 | import jakarta.persistence.Entity;
10 | import jakarta.persistence.EntityListeners;
11 | import jakarta.persistence.EnumType;
12 | import jakarta.persistence.Enumerated;
13 | import jakarta.persistence.GeneratedValue;
14 | import jakarta.persistence.GenerationType;
15 | import jakarta.persistence.Id;
16 | import jakarta.persistence.Table;
17 | import jakarta.persistence.Transient;
18 |
19 | @Entity
20 | @EntityListeners(ReadOnly.class)
21 | @Table(name = "device_generation_note")
22 | @Cacheable
23 | public class DeviceGenerationNoteEntity extends PanacheEntityBase {
24 |
25 | @Id
26 | @GeneratedValue(strategy = GenerationType.IDENTITY)
27 | @Column(name = "id")
28 | public int id;
29 |
30 | @Column(name = "os")
31 | @Enumerated(EnumType.STRING)
32 | public OS os;
33 |
34 | @Column(name = "note")
35 | public String note;
36 |
37 | @Column(name = "show_on_device_note", columnDefinition = "BOOL")
38 | public boolean showIfDeviceNoteExists;
39 |
40 | @Transient
41 | public DeviceGenerationNote toRecord() {
42 | return new DeviceGenerationNote(
43 | this.id,
44 | this.os,
45 | this.note,
46 | this.showIfDeviceNoteExists
47 | );
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/src/main/java/com/chrultrabook/cbdb/entity/DeviceGenerationEntity.java:
--------------------------------------------------------------------------------
1 | package com.chrultrabook.cbdb.entity;
2 |
3 | import java.util.List;
4 |
5 | import com.chrultrabook.cbdb.rest.bean.DeviceGeneration;
6 |
7 | import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
8 | import jakarta.persistence.Cacheable;
9 | import jakarta.persistence.Column;
10 | import jakarta.persistence.Entity;
11 | import jakarta.persistence.EntityListeners;
12 | import jakarta.persistence.GeneratedValue;
13 | import jakarta.persistence.GenerationType;
14 | import jakarta.persistence.Id;
15 | import jakarta.persistence.OneToMany;
16 | import jakarta.persistence.Table;
17 |
18 | @Entity
19 | @EntityListeners(ReadOnly.class)
20 | @Table(name = "device_generation")
21 | @Cacheable
22 | public class DeviceGenerationEntity extends PanacheEntityBase {
23 |
24 | @Id
25 | @GeneratedValue(strategy = GenerationType.IDENTITY)
26 | @Column(name = "id")
27 | public int id;
28 |
29 | @Column(name = "short")
30 | public String shortName;
31 |
32 | @Column(name = "name")
33 | public String name;
34 |
35 | @Column(name = "baseboard")
36 | public String baseboard;
37 |
38 | @OneToMany
39 | public List notes;
40 |
41 | @OneToMany
42 | public List devices;
43 |
44 | public DeviceGeneration toRecord() {
45 | return new DeviceGeneration(
46 | this.id,
47 | this.shortName,
48 | this.name,
49 | this.baseboard,
50 | this.notes.stream().map(DeviceGenerationNoteEntity::toRecord).toList(),
51 | this.devices.stream().map(DeviceEntity::toRecord).toList()
52 | );
53 | }
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/src/main/java/com/chrultrabook/cbdb/rest/PublicRS.java:
--------------------------------------------------------------------------------
1 | package com.chrultrabook.cbdb.rest;
2 |
3 | import java.util.List;
4 | import java.util.Optional;
5 |
6 | import com.chrultrabook.cbdb.entity.DeviceEntity;
7 | import com.chrultrabook.cbdb.entity.DeviceGenerationEntity;
8 | import com.chrultrabook.cbdb.rest.bean.DeviceGeneration;
9 |
10 | import jakarta.ws.rs.GET;
11 | import jakarta.ws.rs.Path;
12 | import jakarta.ws.rs.PathParam;
13 | import jakarta.ws.rs.Produces;
14 | import jakarta.ws.rs.core.Response;
15 |
16 | @Path("/v1/public")
17 | public class PublicRS {
18 |
19 | @GET
20 | @Produces("application/json")
21 | @Path("everything")
22 | public List getAll() {
23 | List list = DeviceGenerationEntity.listAll();
24 | return list.stream().map(DeviceGenerationEntity::toRecord).toList();
25 | }
26 |
27 | @GET
28 | @Produces("application/json")
29 | @Path("generation/{shortName}")
30 | public Response getGeneration(@PathParam("shortName") String shortName) {
31 | Optional gen = DeviceGenerationEntity.find("shortName", shortName).firstResultOptional();
32 | if (gen.isPresent()) {
33 | return Response.ok(gen.get().toRecord()).build();
34 | }
35 | return Response.status(404, "Generation data not found").build();
36 | }
37 |
38 | @GET
39 | @Produces("application/json")
40 | @Path("device/{boardName}")
41 | public Response getDevice(@PathParam("boardName") String boardName) {
42 | Optional device = DeviceEntity.find("boardName", boardName).firstResultOptional();
43 | if (device.isPresent()) {
44 | return Response.ok(device.get().toRecord()).build();
45 | }
46 | return Response.status(404, "Device data not found").build();
47 | }
48 |
49 | }
50 |
--------------------------------------------------------------------------------
/src/main/java/com/chrultrabook/cbdb/entity/DeviceEntity.java:
--------------------------------------------------------------------------------
1 | package com.chrultrabook.cbdb.entity;
2 |
3 | import java.sql.Date;
4 | import java.util.List;
5 |
6 | import com.chrultrabook.cbdb.rest.bean.Device;
7 |
8 | import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
9 | import jakarta.annotation.Nullable;
10 | import jakarta.persistence.Cacheable;
11 | import jakarta.persistence.Column;
12 | import jakarta.persistence.Entity;
13 | import jakarta.persistence.EntityListeners;
14 | import jakarta.persistence.GeneratedValue;
15 | import jakarta.persistence.GenerationType;
16 | import jakarta.persistence.Id;
17 | import jakarta.persistence.ManyToOne;
18 | import jakarta.persistence.OneToMany;
19 | import jakarta.persistence.Table;
20 | import jakarta.persistence.Transient;
21 |
22 | @Entity
23 | @EntityListeners(ReadOnly.class)
24 | @Table(name = "device")
25 | @Cacheable
26 | public class DeviceEntity extends PanacheEntityBase {
27 |
28 | @Id
29 | @GeneratedValue(strategy = GenerationType.IDENTITY)
30 | @Column(name = "id")
31 | public int id;
32 |
33 | @Column(name = "com_name")
34 | @Nullable
35 | public String comName;
36 |
37 | @Column(name = "board_name")
38 | public String boardName;
39 |
40 | @Column(name = "eol_date")
41 | public Date eolDate;
42 |
43 | @Column(name = "has_full_rom", columnDefinition = "BOOL")
44 | public boolean hasFullRom;
45 |
46 | @Column(name = "wp_method")
47 | public String wpMethod;
48 |
49 | @Column(name = "wp_method_type")
50 | public String wpMethodType;
51 |
52 | @Column(name = "stock_kernel_part_size")
53 | public int stockKernelPartSize;
54 |
55 | @ManyToOne
56 | public BrandEntity brand;
57 |
58 | @OneToMany
59 | public List notes;
60 |
61 | @Transient
62 | public Device toRecord() {
63 | return new Device(
64 | this.id,
65 | this.comName,
66 | this.boardName,
67 | this.eolDate,
68 | this.hasFullRom,
69 | this.wpMethod,
70 | this.stockKernelPartSize,
71 | this.brand.name,
72 | this.notes.stream().map(DeviceNoteEntity::toRecord).toList()
73 | );
74 | }
75 |
76 | }
77 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # chruldatabase
2 |
3 | This project uses Quarkus, the Supersonic Subatomic Java Framework.
4 |
5 | If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ .
6 |
7 | ## Running the application in dev mode
8 |
9 | You can run your application in dev mode that enables live coding using:
10 |
11 | ```shell script
12 | ./mvnw compile quarkus:dev
13 | ```
14 |
15 | > **_NOTE:_** Quarkus now ships with a Dev UI, which is available in dev mode only at http://localhost:8080/q/dev/.
16 |
17 | ## Packaging and running the application
18 |
19 | The application can be packaged using:
20 |
21 | ```shell script
22 | ./mvnw package
23 | ```
24 |
25 | It produces the `quarkus-run.jar` file in the `target/quarkus-app/` directory.
26 | Be aware that it’s not an _über-jar_ as the dependencies are copied into the `target/quarkus-app/lib/` directory.
27 |
28 | The application is now runnable using `java -jar target/quarkus-app/quarkus-run.jar`.
29 |
30 | If you want to build an _über-jar_, execute the following command:
31 |
32 | ```shell script
33 | ./mvnw package -Dquarkus.package.type=uber-jar
34 | ```
35 |
36 | The application, packaged as an _über-jar_, is now runnable using `java -jar target/*-runner.jar`.
37 |
38 | ## Creating a native executable
39 |
40 | You can create a native executable using:
41 |
42 | ```shell script
43 | ./mvnw package -Dnative
44 | ```
45 |
46 | Or, if you don't have GraalVM installed, you can run the native executable build in a container using:
47 |
48 | ```shell script
49 | ./mvnw package -Dnative -Dquarkus.native.container-build=true
50 | ```
51 |
52 | You can then execute your native executable with: `./target/chruldatabase-1.0-SNAPSHOT-runner`
53 |
54 | If you want to learn more about building native executables, please consult https://quarkus.io/guides/maven-tooling.
55 |
56 | ## Related Guides
57 |
58 | - REST resources for Hibernate ORM with Panache ([guide](https://quarkus.io/guides/rest-data-panache)): Generate Jakarta
59 | REST resources for your Hibernate Panache entities and repositories
60 | - SmallRye OpenAPI ([guide](https://quarkus.io/guides/openapi-swaggerui)): Document your REST APIs with OpenAPI - comes
61 | with Swagger UI
62 | - JDBC Driver - PostgreSQL ([guide](https://quarkus.io/guides/datasource)): Connect to the PostgreSQL database via JDBC
63 |
--------------------------------------------------------------------------------
/.mvn/wrapper/MavenWrapperDownloader.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one
3 | * or more contributor license agreements. See the NOTICE file
4 | * distributed with this work for additional information
5 | * regarding copyright ownership. The ASF licenses this file
6 | * to you under the Apache License, Version 2.0 (the
7 | * "License"); you may not use this file except in compliance
8 | * with the License. You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing,
13 | * software distributed under the License is distributed on an
14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 | * KIND, either express or implied. See the License for the
16 | * specific language governing permissions and limitations
17 | * under the License.
18 | */
19 |
20 | import java.io.IOException;
21 | import java.io.InputStream;
22 | import java.net.Authenticator;
23 | import java.net.PasswordAuthentication;
24 | import java.net.URL;
25 | import java.nio.file.Files;
26 | import java.nio.file.Path;
27 | import java.nio.file.Paths;
28 | import java.nio.file.StandardCopyOption;
29 |
30 | public final class MavenWrapperDownloader {
31 | private static final String WRAPPER_VERSION = "3.2.0";
32 |
33 | private static final boolean VERBOSE = Boolean.parseBoolean(System.getenv("MVNW_VERBOSE"));
34 |
35 | public static void main(String[] args) {
36 | log("Apache Maven Wrapper Downloader " + WRAPPER_VERSION);
37 |
38 | if (args.length != 2) {
39 | System.err.println(" - ERROR wrapperUrl or wrapperJarPath parameter missing");
40 | System.exit(1);
41 | }
42 |
43 | try {
44 | log(" - Downloader started");
45 | final URL wrapperUrl = new URL(args[0]);
46 | final String jarPath = args[1].replace("..", ""); // Sanitize path
47 | final Path wrapperJarPath = Paths.get(jarPath).toAbsolutePath().normalize();
48 | downloadFileFromURL(wrapperUrl, wrapperJarPath);
49 | log("Done");
50 | } catch (IOException e) {
51 | System.err.println("- Error downloading: " + e.getMessage());
52 | if (VERBOSE) {
53 | e.printStackTrace();
54 | }
55 | System.exit(1);
56 | }
57 | }
58 |
59 | private static void downloadFileFromURL(URL wrapperUrl, Path wrapperJarPath)
60 | throws IOException {
61 | log(" - Downloading to: " + wrapperJarPath);
62 | if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
63 | final String username = System.getenv("MVNW_USERNAME");
64 | final char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
65 | Authenticator.setDefault(new Authenticator() {
66 | @Override
67 | protected PasswordAuthentication getPasswordAuthentication() {
68 | return new PasswordAuthentication(username, password);
69 | }
70 | });
71 | }
72 | try (InputStream inStream = wrapperUrl.openStream()) {
73 | Files.copy(inStream, wrapperJarPath, StandardCopyOption.REPLACE_EXISTING);
74 | }
75 | log(" - Downloader complete");
76 | }
77 |
78 | private static void log(String msg) {
79 | if (VERBOSE) {
80 | System.out.println(msg);
81 | }
82 | }
83 |
84 | }
85 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 | 4.0.0
7 | com.example
8 | chruldatabase
9 | 1.0-SNAPSHOT
10 |
11 | 3.12.1
12 | 21
13 | UTF-8
14 | UTF-8
15 | quarkus-bom
16 | io.quarkus.platform
17 | 3.13.3
18 | true
19 | 3.2.3
20 |
21 |
22 |
23 |
24 | ${quarkus.platform.group-id}
25 | ${quarkus.platform.artifact-id}
26 | ${quarkus.platform.version}
27 | pom
28 | import
29 |
30 |
31 |
32 |
33 |
34 | io.quarkus
35 | quarkus-hibernate-orm-rest-data-panache
36 |
37 |
38 | io.quarkus
39 | quarkus-rest-jackson
40 |
41 |
42 | io.quarkus
43 | quarkus-container-image-docker
44 |
45 |
46 | io.quarkus
47 | quarkus-smallrye-openapi
48 |
49 |
50 | io.quarkus
51 | quarkus-arc
52 |
53 |
54 | io.quarkus
55 | quarkus-jdbc-postgresql
56 |
57 |
58 | io.quarkus
59 | quarkus-junit5
60 | test
61 |
62 |
63 |
64 |
65 |
66 | ${quarkus.platform.group-id}
67 | quarkus-maven-plugin
68 | ${quarkus.platform.version}
69 | true
70 |
71 |
72 |
73 | build
74 | generate-code
75 | generate-code-tests
76 |
77 |
78 |
79 |
80 |
81 | maven-compiler-plugin
82 | ${compiler-plugin.version}
83 |
84 |
85 | -parameters
86 |
87 |
88 |
89 |
90 | maven-surefire-plugin
91 | ${surefire-plugin.version}
92 |
93 |
94 | org.jboss.logmanager.LogManager
95 | ${maven.home}
96 |
97 |
98 |
99 |
100 | maven-failsafe-plugin
101 | ${surefire-plugin.version}
102 |
103 |
104 |
105 | integration-test
106 | verify
107 |
108 |
109 |
110 |
111 |
112 | ${project.build.directory}/${project.build.finalName}-runner
113 | org.jboss.logmanager.LogManager
114 | ${maven.home}
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 | native
123 |
124 |
125 | native
126 |
127 |
128 |
129 | false
130 | true
131 | false
132 |
133 |
134 |
135 |
--------------------------------------------------------------------------------
/src/main/docker/Dockerfile.legacy-jar:
--------------------------------------------------------------------------------
1 | ####
2 | # This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode
3 | #
4 | # Before building the container image run:
5 | #
6 | # ./mvnw package -Dquarkus.package.type=legacy-jar
7 | #
8 | # Then, build the image with:
9 | #
10 | # docker build -f src/main/docker/Dockerfile.legacy-jar -t quarkus/chruldatabase-legacy-jar .
11 | #
12 | # Then run the container using:
13 | #
14 | # docker run -i --rm -p 8080:8080 quarkus/chruldatabase-legacy-jar
15 | #
16 | # If you want to include the debug port into your docker image
17 | # you will have to expose the debug port (default 5005 being the default) like this : EXPOSE 8080 5005.
18 | # Additionally you will have to set -e JAVA_DEBUG=true and -e JAVA_DEBUG_PORT=*:5005
19 | # when running the container
20 | #
21 | # Then run the container using :
22 | #
23 | # docker run -i --rm -p 8080:8080 quarkus/chruldatabase-legacy-jar
24 | #
25 | # This image uses the `run-java.sh` script to run the application.
26 | # This scripts computes the command line to execute your Java application, and
27 | # includes memory/GC tuning.
28 | # You can configure the behavior using the following environment properties:
29 | # - JAVA_OPTS: JVM options passed to the `java` command (example: "-verbose:class")
30 | # - JAVA_OPTS_APPEND: User specified Java options to be appended to generated options
31 | # in JAVA_OPTS (example: "-Dsome.property=foo")
32 | # - JAVA_MAX_MEM_RATIO: Is used when no `-Xmx` option is given in JAVA_OPTS. This is
33 | # used to calculate a default maximal heap memory based on a containers restriction.
34 | # If used in a container without any memory constraints for the container then this
35 | # option has no effect. If there is a memory constraint then `-Xmx` is set to a ratio
36 | # of the container available memory as set here. The default is `50` which means 50%
37 | # of the available memory is used as an upper boundary. You can skip this mechanism by
38 | # setting this value to `0` in which case no `-Xmx` option is added.
39 | # - JAVA_INITIAL_MEM_RATIO: Is used when no `-Xms` option is given in JAVA_OPTS. This
40 | # is used to calculate a default initial heap memory based on the maximum heap memory.
41 | # If used in a container without any memory constraints for the container then this
42 | # option has no effect. If there is a memory constraint then `-Xms` is set to a ratio
43 | # of the `-Xmx` memory as set here. The default is `25` which means 25% of the `-Xmx`
44 | # is used as the initial heap size. You can skip this mechanism by setting this value
45 | # to `0` in which case no `-Xms` option is added (example: "25")
46 | # - JAVA_MAX_INITIAL_MEM: Is used when no `-Xms` option is given in JAVA_OPTS.
47 | # This is used to calculate the maximum value of the initial heap memory. If used in
48 | # a container without any memory constraints for the container then this option has
49 | # no effect. If there is a memory constraint then `-Xms` is limited to the value set
50 | # here. The default is 4096MB which means the calculated value of `-Xms` never will
51 | # be greater than 4096MB. The value of this variable is expressed in MB (example: "4096")
52 | # - JAVA_DIAGNOSTICS: Set this to get some diagnostics information to standard output
53 | # when things are happening. This option, if set to true, will set
54 | # `-XX:+UnlockDiagnosticVMOptions`. Disabled by default (example: "true").
55 | # - JAVA_DEBUG: If set remote debugging will be switched on. Disabled by default (example:
56 | # true").
57 | # - JAVA_DEBUG_PORT: Port used for remote debugging. Defaults to 5005 (example: "8787").
58 | # - CONTAINER_CORE_LIMIT: A calculated core limit as described in
59 | # https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt. (example: "2")
60 | # - CONTAINER_MAX_MEMORY: Memory limit given to the container (example: "1024").
61 | # - GC_MIN_HEAP_FREE_RATIO: Minimum percentage of heap free after GC to avoid expansion.
62 | # (example: "20")
63 | # - GC_MAX_HEAP_FREE_RATIO: Maximum percentage of heap free after GC to avoid shrinking.
64 | # (example: "40")
65 | # - GC_TIME_RATIO: Specifies the ratio of the time spent outside the garbage collection.
66 | # (example: "4")
67 | # - GC_ADAPTIVE_SIZE_POLICY_WEIGHT: The weighting given to the current GC time versus
68 | # previous GC times. (example: "90")
69 | # - GC_METASPACE_SIZE: The initial metaspace size. (example: "20")
70 | # - GC_MAX_METASPACE_SIZE: The maximum metaspace size. (example: "100")
71 | # - GC_CONTAINER_OPTIONS: Specify Java GC to use. The value of this variable should
72 | # contain the necessary JRE command-line options to specify the required GC, which
73 | # will override the default of `-XX:+UseParallelGC` (example: -XX:+UseG1GC).
74 | # - HTTPS_PROXY: The location of the https proxy. (example: "myuser@127.0.0.1:8080")
75 | # - HTTP_PROXY: The location of the http proxy. (example: "myuser@127.0.0.1:8080")
76 | # - NO_PROXY: A comma separated lists of hosts, IP addresses or domains that can be
77 | # accessed directly. (example: "foo.example.com,bar.example.com")
78 | #
79 | ###
80 | FROM registry.access.redhat.com/ubi8/openjdk-21:1.18
81 |
82 | ENV LANGUAGE='en_US:en'
83 |
84 |
85 | COPY target/lib/* /deployments/lib/
86 | COPY target/*-runner.jar /deployments/quarkus-run.jar
87 |
88 | EXPOSE 8080
89 | USER 185
90 | ENV JAVA_OPTS_APPEND="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
91 | ENV JAVA_APP_JAR="/deployments/quarkus-run.jar"
92 |
93 | ENTRYPOINT [ "/opt/jboss/container/java/run/run-java.sh" ]
94 |
--------------------------------------------------------------------------------
/src/main/docker/Dockerfile.jvm:
--------------------------------------------------------------------------------
1 | ####
2 | # This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode
3 | #
4 | # Before building the container image run:
5 | #
6 | # ./mvnw package
7 | #
8 | # Then, build the image with:
9 | #
10 | # docker build -f src/main/docker/Dockerfile.jvm -t quarkus/chruldatabase-jvm .
11 | #
12 | # Then run the container using:
13 | #
14 | # docker run -i --rm -p 8080:8080 quarkus/chruldatabase-jvm
15 | #
16 | # If you want to include the debug port into your docker image
17 | # you will have to expose the debug port (default 5005 being the default) like this : EXPOSE 8080 5005.
18 | # Additionally you will have to set -e JAVA_DEBUG=true and -e JAVA_DEBUG_PORT=*:5005
19 | # when running the container
20 | #
21 | # Then run the container using :
22 | #
23 | # docker run -i --rm -p 8080:8080 quarkus/chruldatabase-jvm
24 | #
25 | # This image uses the `run-java.sh` script to run the application.
26 | # This scripts computes the command line to execute your Java application, and
27 | # includes memory/GC tuning.
28 | # You can configure the behavior using the following environment properties:
29 | # - JAVA_OPTS: JVM options passed to the `java` command (example: "-verbose:class")
30 | # - JAVA_OPTS_APPEND: User specified Java options to be appended to generated options
31 | # in JAVA_OPTS (example: "-Dsome.property=foo")
32 | # - JAVA_MAX_MEM_RATIO: Is used when no `-Xmx` option is given in JAVA_OPTS. This is
33 | # used to calculate a default maximal heap memory based on a containers restriction.
34 | # If used in a container without any memory constraints for the container then this
35 | # option has no effect. If there is a memory constraint then `-Xmx` is set to a ratio
36 | # of the container available memory as set here. The default is `50` which means 50%
37 | # of the available memory is used as an upper boundary. You can skip this mechanism by
38 | # setting this value to `0` in which case no `-Xmx` option is added.
39 | # - JAVA_INITIAL_MEM_RATIO: Is used when no `-Xms` option is given in JAVA_OPTS. This
40 | # is used to calculate a default initial heap memory based on the maximum heap memory.
41 | # If used in a container without any memory constraints for the container then this
42 | # option has no effect. If there is a memory constraint then `-Xms` is set to a ratio
43 | # of the `-Xmx` memory as set here. The default is `25` which means 25% of the `-Xmx`
44 | # is used as the initial heap size. You can skip this mechanism by setting this value
45 | # to `0` in which case no `-Xms` option is added (example: "25")
46 | # - JAVA_MAX_INITIAL_MEM: Is used when no `-Xms` option is given in JAVA_OPTS.
47 | # This is used to calculate the maximum value of the initial heap memory. If used in
48 | # a container without any memory constraints for the container then this option has
49 | # no effect. If there is a memory constraint then `-Xms` is limited to the value set
50 | # here. The default is 4096MB which means the calculated value of `-Xms` never will
51 | # be greater than 4096MB. The value of this variable is expressed in MB (example: "4096")
52 | # - JAVA_DIAGNOSTICS: Set this to get some diagnostics information to standard output
53 | # when things are happening. This option, if set to true, will set
54 | # `-XX:+UnlockDiagnosticVMOptions`. Disabled by default (example: "true").
55 | # - JAVA_DEBUG: If set remote debugging will be switched on. Disabled by default (example:
56 | # true").
57 | # - JAVA_DEBUG_PORT: Port used for remote debugging. Defaults to 5005 (example: "8787").
58 | # - CONTAINER_CORE_LIMIT: A calculated core limit as described in
59 | # https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt. (example: "2")
60 | # - CONTAINER_MAX_MEMORY: Memory limit given to the container (example: "1024").
61 | # - GC_MIN_HEAP_FREE_RATIO: Minimum percentage of heap free after GC to avoid expansion.
62 | # (example: "20")
63 | # - GC_MAX_HEAP_FREE_RATIO: Maximum percentage of heap free after GC to avoid shrinking.
64 | # (example: "40")
65 | # - GC_TIME_RATIO: Specifies the ratio of the time spent outside the garbage collection.
66 | # (example: "4")
67 | # - GC_ADAPTIVE_SIZE_POLICY_WEIGHT: The weighting given to the current GC time versus
68 | # previous GC times. (example: "90")
69 | # - GC_METASPACE_SIZE: The initial metaspace size. (example: "20")
70 | # - GC_MAX_METASPACE_SIZE: The maximum metaspace size. (example: "100")
71 | # - GC_CONTAINER_OPTIONS: Specify Java GC to use. The value of this variable should
72 | # contain the necessary JRE command-line options to specify the required GC, which
73 | # will override the default of `-XX:+UseParallelGC` (example: -XX:+UseG1GC).
74 | # - HTTPS_PROXY: The location of the https proxy. (example: "myuser@127.0.0.1:8080")
75 | # - HTTP_PROXY: The location of the http proxy. (example: "myuser@127.0.0.1:8080")
76 | # - NO_PROXY: A comma separated lists of hosts, IP addresses or domains that can be
77 | # accessed directly. (example: "foo.example.com,bar.example.com")
78 | #
79 | ###
80 | FROM registry.access.redhat.com/ubi8/openjdk-21:1.18
81 |
82 | ENV LANGUAGE='en_US:en'
83 |
84 |
85 | # We make four distinct layers so if there are application changes the library layers can be re-used
86 | COPY --chown=185 target/quarkus-app/lib/ /deployments/lib/
87 | COPY --chown=185 target/quarkus-app/*.jar /deployments/
88 | COPY --chown=185 target/quarkus-app/app/ /deployments/app/
89 | COPY --chown=185 target/quarkus-app/quarkus/ /deployments/quarkus/
90 |
91 | EXPOSE 8080
92 | USER 185
93 | ENV JAVA_OPTS_APPEND="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
94 | ENV JAVA_APP_JAR="/deployments/quarkus-run.jar"
95 |
96 | ENTRYPOINT [ "/opt/jboss/container/java/run/run-java.sh" ]
97 |
98 |
--------------------------------------------------------------------------------
/mvnw.cmd:
--------------------------------------------------------------------------------
1 | @REM ----------------------------------------------------------------------------
2 | @REM Licensed to the Apache Software Foundation (ASF) under one
3 | @REM or more contributor license agreements. See the NOTICE file
4 | @REM distributed with this work for additional information
5 | @REM regarding copyright ownership. The ASF licenses this file
6 | @REM to you under the Apache License, Version 2.0 (the
7 | @REM "License"); you may not use this file except in compliance
8 | @REM with the License. You may obtain a copy of the License at
9 | @REM
10 | @REM http://www.apache.org/licenses/LICENSE-2.0
11 | @REM
12 | @REM Unless required by applicable law or agreed to in writing,
13 | @REM software distributed under the License is distributed on an
14 | @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 | @REM KIND, either express or implied. See the License for the
16 | @REM specific language governing permissions and limitations
17 | @REM under the License.
18 | @REM ----------------------------------------------------------------------------
19 |
20 | @REM ----------------------------------------------------------------------------
21 | @REM Apache Maven Wrapper startup batch script, version 3.2.0
22 | @REM
23 | @REM Required ENV vars:
24 | @REM JAVA_HOME - location of a JDK home dir
25 | @REM
26 | @REM Optional ENV vars
27 | @REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
28 | @REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
29 | @REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
30 | @REM e.g. to debug Maven itself, use
31 | @REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
32 | @REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
33 | @REM ----------------------------------------------------------------------------
34 |
35 | @REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
36 | @echo off
37 | @REM set title of command window
38 | title %0
39 | @REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
40 | @if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
41 |
42 | @REM set %HOME% to equivalent of $HOME
43 | if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
44 |
45 | @REM Execute a user defined script before this one
46 | if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
47 | @REM check for pre script, once with legacy .bat ending and once with .cmd ending
48 | if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
49 | if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
50 | :skipRcPre
51 |
52 | @setlocal
53 |
54 | set ERROR_CODE=0
55 |
56 | @REM To isolate internal variables from possible post scripts, we use another setlocal
57 | @setlocal
58 |
59 | @REM ==== START VALIDATION ====
60 | if not "%JAVA_HOME%" == "" goto OkJHome
61 |
62 | echo.
63 | echo Error: JAVA_HOME not found in your environment. >&2
64 | echo Please set the JAVA_HOME variable in your environment to match the >&2
65 | echo location of your Java installation. >&2
66 | echo.
67 | goto error
68 |
69 | :OkJHome
70 | if exist "%JAVA_HOME%\bin\java.exe" goto init
71 |
72 | echo.
73 | echo Error: JAVA_HOME is set to an invalid directory. >&2
74 | echo JAVA_HOME = "%JAVA_HOME%" >&2
75 | echo Please set the JAVA_HOME variable in your environment to match the >&2
76 | echo location of your Java installation. >&2
77 | echo.
78 | goto error
79 |
80 | @REM ==== END VALIDATION ====
81 |
82 | :init
83 |
84 | @REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
85 | @REM Fallback to current working directory if not found.
86 |
87 | set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
88 | IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
89 |
90 | set EXEC_DIR=%CD%
91 | set WDIR=%EXEC_DIR%
92 | :findBaseDir
93 | IF EXIST "%WDIR%"\.mvn goto baseDirFound
94 | cd ..
95 | IF "%WDIR%"=="%CD%" goto baseDirNotFound
96 | set WDIR=%CD%
97 | goto findBaseDir
98 |
99 | :baseDirFound
100 | set MAVEN_PROJECTBASEDIR=%WDIR%
101 | cd "%EXEC_DIR%"
102 | goto endDetectBaseDir
103 |
104 | :baseDirNotFound
105 | set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
106 | cd "%EXEC_DIR%"
107 |
108 | :endDetectBaseDir
109 |
110 | IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
111 |
112 | @setlocal EnableExtensions EnableDelayedExpansion
113 | for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
114 | @endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
115 |
116 | :endReadAdditionalConfig
117 |
118 | SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
119 | set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
120 | set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
121 |
122 | set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
123 |
124 | FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
125 | IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B
126 | )
127 |
128 | @REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
129 | @REM This allows using the maven wrapper in projects that prohibit checking in binary data.
130 | if exist %WRAPPER_JAR% (
131 | if "%MVNW_VERBOSE%" == "true" (
132 | echo Found %WRAPPER_JAR%
133 | )
134 | ) else (
135 | if not "%MVNW_REPOURL%" == "" (
136 | SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
137 | )
138 | if "%MVNW_VERBOSE%" == "true" (
139 | echo Couldn't find %WRAPPER_JAR%, downloading it ...
140 | echo Downloading from: %WRAPPER_URL%
141 | )
142 |
143 | powershell -Command "&{"^
144 | "$webclient = new-object System.Net.WebClient;"^
145 | "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
146 | "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
147 | "}"^
148 | "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^
149 | "}"
150 | if "%MVNW_VERBOSE%" == "true" (
151 | echo Finished downloading %WRAPPER_JAR%
152 | )
153 | )
154 | @REM End of extension
155 |
156 | @REM If specified, validate the SHA-256 sum of the Maven wrapper jar file
157 | SET WRAPPER_SHA_256_SUM=""
158 | FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
159 | IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B
160 | )
161 | IF NOT %WRAPPER_SHA_256_SUM%=="" (
162 | powershell -Command "&{"^
163 | "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^
164 | "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^
165 | " Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^
166 | " Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^
167 | " Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^
168 | " exit 1;"^
169 | "}"^
170 | "}"
171 | if ERRORLEVEL 1 goto error
172 | )
173 |
174 | @REM Provide a "standardized" way to retrieve the CLI args that will
175 | @REM work with both Windows and non-Windows executions.
176 | set MAVEN_CMD_LINE_ARGS=%*
177 |
178 | %MAVEN_JAVA_EXE% ^
179 | %JVM_CONFIG_MAVEN_PROPS% ^
180 | %MAVEN_OPTS% ^
181 | %MAVEN_DEBUG_OPTS% ^
182 | -classpath %WRAPPER_JAR% ^
183 | "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
184 | %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
185 | if ERRORLEVEL 1 goto error
186 | goto end
187 |
188 | :error
189 | set ERROR_CODE=1
190 |
191 | :end
192 | @endlocal & set ERROR_CODE=%ERROR_CODE%
193 |
194 | if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
195 | @REM check for post script, once with legacy .bat ending and once with .cmd ending
196 | if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
197 | if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
198 | :skipRcPost
199 |
200 | @REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
201 | if "%MAVEN_BATCH_PAUSE%"=="on" pause
202 |
203 | if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
204 |
205 | cmd /C exit /B %ERROR_CODE%
206 |
--------------------------------------------------------------------------------
/mvnw:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # ----------------------------------------------------------------------------
3 | # Licensed to the Apache Software Foundation (ASF) under one
4 | # or more contributor license agreements. See the NOTICE file
5 | # distributed with this work for additional information
6 | # regarding copyright ownership. The ASF licenses this file
7 | # to you under the Apache License, Version 2.0 (the
8 | # "License"); you may not use this file except in compliance
9 | # with the License. You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing,
14 | # software distributed under the License is distributed on an
15 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 | # KIND, either express or implied. See the License for the
17 | # specific language governing permissions and limitations
18 | # under the License.
19 | # ----------------------------------------------------------------------------
20 |
21 | # ----------------------------------------------------------------------------
22 | # Apache Maven Wrapper startup batch script, version 3.2.0
23 | #
24 | # Required ENV vars:
25 | # ------------------
26 | # JAVA_HOME - location of a JDK home dir
27 | #
28 | # Optional ENV vars
29 | # -----------------
30 | # MAVEN_OPTS - parameters passed to the Java VM when running Maven
31 | # e.g. to debug Maven itself, use
32 | # set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
33 | # MAVEN_SKIP_RC - flag to disable loading of mavenrc files
34 | # ----------------------------------------------------------------------------
35 |
36 | if [ -z "$MAVEN_SKIP_RC" ] ; then
37 |
38 | if [ -f /usr/local/etc/mavenrc ] ; then
39 | . /usr/local/etc/mavenrc
40 | fi
41 |
42 | if [ -f /etc/mavenrc ] ; then
43 | . /etc/mavenrc
44 | fi
45 |
46 | if [ -f "$HOME/.mavenrc" ] ; then
47 | . "$HOME/.mavenrc"
48 | fi
49 |
50 | fi
51 |
52 | # OS specific support. $var _must_ be set to either true or false.
53 | cygwin=false;
54 | darwin=false;
55 | mingw=false
56 | case "$(uname)" in
57 | CYGWIN*) cygwin=true ;;
58 | MINGW*) mingw=true;;
59 | Darwin*) darwin=true
60 | # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
61 | # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
62 | if [ -z "$JAVA_HOME" ]; then
63 | if [ -x "/usr/libexec/java_home" ]; then
64 | JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME
65 | else
66 | JAVA_HOME="/Library/Java/Home"; export JAVA_HOME
67 | fi
68 | fi
69 | ;;
70 | esac
71 |
72 | if [ -z "$JAVA_HOME" ] ; then
73 | if [ -r /etc/gentoo-release ] ; then
74 | JAVA_HOME=$(java-config --jre-home)
75 | fi
76 | fi
77 |
78 | # For Cygwin, ensure paths are in UNIX format before anything is touched
79 | if $cygwin ; then
80 | [ -n "$JAVA_HOME" ] &&
81 | JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
82 | [ -n "$CLASSPATH" ] &&
83 | CLASSPATH=$(cygpath --path --unix "$CLASSPATH")
84 | fi
85 |
86 | # For Mingw, ensure paths are in UNIX format before anything is touched
87 | if $mingw ; then
88 | [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] &&
89 | JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)"
90 | fi
91 |
92 | if [ -z "$JAVA_HOME" ]; then
93 | javaExecutable="$(which javac)"
94 | if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then
95 | # readlink(1) is not available as standard on Solaris 10.
96 | readLink=$(which readlink)
97 | if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then
98 | if $darwin ; then
99 | javaHome="$(dirname "\"$javaExecutable\"")"
100 | javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac"
101 | else
102 | javaExecutable="$(readlink -f "\"$javaExecutable\"")"
103 | fi
104 | javaHome="$(dirname "\"$javaExecutable\"")"
105 | javaHome=$(expr "$javaHome" : '\(.*\)/bin')
106 | JAVA_HOME="$javaHome"
107 | export JAVA_HOME
108 | fi
109 | fi
110 | fi
111 |
112 | if [ -z "$JAVACMD" ] ; then
113 | if [ -n "$JAVA_HOME" ] ; then
114 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
115 | # IBM's JDK on AIX uses strange locations for the executables
116 | JAVACMD="$JAVA_HOME/jre/sh/java"
117 | else
118 | JAVACMD="$JAVA_HOME/bin/java"
119 | fi
120 | else
121 | JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)"
122 | fi
123 | fi
124 |
125 | if [ ! -x "$JAVACMD" ] ; then
126 | echo "Error: JAVA_HOME is not defined correctly." >&2
127 | echo " We cannot execute $JAVACMD" >&2
128 | exit 1
129 | fi
130 |
131 | if [ -z "$JAVA_HOME" ] ; then
132 | echo "Warning: JAVA_HOME environment variable is not set."
133 | fi
134 |
135 | # traverses directory structure from process work directory to filesystem root
136 | # first directory with .mvn subdirectory is considered project base directory
137 | find_maven_basedir() {
138 | if [ -z "$1" ]
139 | then
140 | echo "Path not specified to find_maven_basedir"
141 | return 1
142 | fi
143 |
144 | basedir="$1"
145 | wdir="$1"
146 | while [ "$wdir" != '/' ] ; do
147 | if [ -d "$wdir"/.mvn ] ; then
148 | basedir=$wdir
149 | break
150 | fi
151 | # workaround for JBEAP-8937 (on Solaris 10/Sparc)
152 | if [ -d "${wdir}" ]; then
153 | wdir=$(cd "$wdir/.." || exit 1; pwd)
154 | fi
155 | # end of workaround
156 | done
157 | printf '%s' "$(cd "$basedir" || exit 1; pwd)"
158 | }
159 |
160 | # concatenates all lines of a file
161 | concat_lines() {
162 | if [ -f "$1" ]; then
163 | # Remove \r in case we run on Windows within Git Bash
164 | # and check out the repository with auto CRLF management
165 | # enabled. Otherwise, we may read lines that are delimited with
166 | # \r\n and produce $'-Xarg\r' rather than -Xarg due to word
167 | # splitting rules.
168 | tr -s '\r\n' ' ' < "$1"
169 | fi
170 | }
171 |
172 | log() {
173 | if [ "$MVNW_VERBOSE" = true ]; then
174 | printf '%s\n' "$1"
175 | fi
176 | }
177 |
178 | BASE_DIR=$(find_maven_basedir "$(dirname "$0")")
179 | if [ -z "$BASE_DIR" ]; then
180 | exit 1;
181 | fi
182 |
183 | MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR
184 | log "$MAVEN_PROJECTBASEDIR"
185 |
186 | ##########################################################################################
187 | # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
188 | # This allows using the maven wrapper in projects that prohibit checking in binary data.
189 | ##########################################################################################
190 | wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar"
191 | if [ -r "$wrapperJarPath" ]; then
192 | log "Found $wrapperJarPath"
193 | else
194 | log "Couldn't find $wrapperJarPath, downloading it ..."
195 |
196 | if [ -n "$MVNW_REPOURL" ]; then
197 | wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
198 | else
199 | wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
200 | fi
201 | while IFS="=" read -r key value; do
202 | # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' )
203 | safeValue=$(echo "$value" | tr -d '\r')
204 | case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;;
205 | esac
206 | done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
207 | log "Downloading from: $wrapperUrl"
208 |
209 | if $cygwin; then
210 | wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath")
211 | fi
212 |
213 | if command -v wget > /dev/null; then
214 | log "Found wget ... using wget"
215 | [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet"
216 | if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
217 | wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
218 | else
219 | wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
220 | fi
221 | elif command -v curl > /dev/null; then
222 | log "Found curl ... using curl"
223 | [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent"
224 | if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
225 | curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
226 | else
227 | curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
228 | fi
229 | else
230 | log "Falling back to using Java to download"
231 | javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java"
232 | javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class"
233 | # For Cygwin, switch paths to Windows format before running javac
234 | if $cygwin; then
235 | javaSource=$(cygpath --path --windows "$javaSource")
236 | javaClass=$(cygpath --path --windows "$javaClass")
237 | fi
238 | if [ -e "$javaSource" ]; then
239 | if [ ! -e "$javaClass" ]; then
240 | log " - Compiling MavenWrapperDownloader.java ..."
241 | ("$JAVA_HOME/bin/javac" "$javaSource")
242 | fi
243 | if [ -e "$javaClass" ]; then
244 | log " - Running MavenWrapperDownloader.java ..."
245 | ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath"
246 | fi
247 | fi
248 | fi
249 | fi
250 | ##########################################################################################
251 | # End of extension
252 | ##########################################################################################
253 |
254 | # If specified, validate the SHA-256 sum of the Maven wrapper jar file
255 | wrapperSha256Sum=""
256 | while IFS="=" read -r key value; do
257 | case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;;
258 | esac
259 | done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
260 | if [ -n "$wrapperSha256Sum" ]; then
261 | wrapperSha256Result=false
262 | if command -v sha256sum > /dev/null; then
263 | if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then
264 | wrapperSha256Result=true
265 | fi
266 | elif command -v shasum > /dev/null; then
267 | if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then
268 | wrapperSha256Result=true
269 | fi
270 | else
271 | echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available."
272 | echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties."
273 | exit 1
274 | fi
275 | if [ $wrapperSha256Result = false ]; then
276 | echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2
277 | echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2
278 | echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2
279 | exit 1
280 | fi
281 | fi
282 |
283 | MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
284 |
285 | # For Cygwin, switch paths to Windows format before running java
286 | if $cygwin; then
287 | [ -n "$JAVA_HOME" ] &&
288 | JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME")
289 | [ -n "$CLASSPATH" ] &&
290 | CLASSPATH=$(cygpath --path --windows "$CLASSPATH")
291 | [ -n "$MAVEN_PROJECTBASEDIR" ] &&
292 | MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR")
293 | fi
294 |
295 | # Provide a "standardized" way to retrieve the CLI args that will
296 | # work with both Windows and non-Windows executions.
297 | MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*"
298 | export MAVEN_CMD_LINE_ARGS
299 |
300 | WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
301 |
302 | # shellcheck disable=SC2086 # safe args
303 | exec "$JAVACMD" \
304 | $MAVEN_OPTS \
305 | $MAVEN_DEBUG_OPTS \
306 | -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
307 | "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
308 | ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
309 |
--------------------------------------------------------------------------------
/devices.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "Sandybridge/Ivybridge",
4 | "default_wpmethod": "switch",
5 | "default_rwLegacy": false,
6 | "default_fullrom": true,
7 | "default_windows": "Supported",
8 | "default_mac": "Not tested. Celeron/Pentium devices unsupported.",
9 | "default_linux": "Supported",
10 | "devices": [
11 | {
12 | "device": [
13 | "HP Pavilion Chromebook 14"
14 | ],
15 | "boardname": "BUTTERFLY"
16 | },
17 | {
18 | "device": [
19 | "Google Chromebook Pixel (2013)"
20 | ],
21 | "boardname": "LINK",
22 | "rwLegacy": null,
23 | "wpMethod": "screw"
24 | },
25 | {
26 | "device": [
27 | "Samsung Chromebook Series 5 550"
28 | ],
29 | "boardname": "LUMPY",
30 | "wpMethod": "jumper"
31 | },
32 | {
33 | "device": [
34 | "Acer C7/C710 Chromebook"
35 | ],
36 | "boardname": "PARROT",
37 | "wpMethod": "jumper"
38 | },
39 | {
40 | "device": [
41 | "Lenovo Thinkpad X131e Chromebook"
42 | ],
43 | "boardname": "STOUT",
44 | "wpMethod": "switch"
45 | },
46 | {
47 | "device": [
48 | "Samsung Chromebox Series 3"
49 | ],
50 | "boardname": "STUMPY",
51 | "wpMethod": "jumper"
52 | }
53 | ]
54 | },
55 | {
56 | "name": "Haswell",
57 | "default_wpmethod": "screw",
58 | "default_rwLegacy": null,
59 | "default_fullrom": true,
60 | "default_windows": "Supported",
61 | "default_mac": "Not tested. Celeron/Pentium devices unsupported.",
62 | "default_linux": "Supported",
63 | "devices": [
64 | {
65 | "device": [
66 | "HP Chromebook 14"
67 | ],
68 | "boardname": "FALCO"
69 | },
70 | {
71 | "device": [
72 | "Toshiba Chromebook 13 (CB30)"
73 | ],
74 | "boardname": "LEON",
75 | "wpMethod": "screw"
76 | },
77 | {
78 | "device": [
79 | "Acer Chromebox CXI"
80 | ],
81 | "boardname": "McCLOUD",
82 | "wpMethod": "screw"
83 | },
84 | {
85 | "device": [
86 | "LG Chromebase 22"
87 | ],
88 | "boardname": "MONROE",
89 | "wpMethod": "screw"
90 | },
91 | {
92 | "device": [
93 | "Asus Chromebox CN60"
94 | ],
95 | "boardname": "PANTHER",
96 | "wpMethod": "screw"
97 | },
98 | {
99 | "device": [
100 | "Acer C720/C720P Chromebook"
101 | ],
102 | "boardname": "PEPPY",
103 | "wpMethod": "screw",
104 | "mac": "Tested, Supported."
105 | },
106 | {
107 | "device": [
108 | "Dell Chromebox 3010"
109 | ],
110 | "boardname": "TRICKY",
111 | "wpMethod": "screw"
112 | },
113 | {
114 | "device": [
115 | "Dell Chromebook 11 (CB1C13)"
116 | ],
117 | "boardname": "WOLF",
118 | "wpMethod": "screw"
119 | },
120 | {
121 | "device": [
122 | "HP Chromebox CB1 / G1"
123 | ],
124 | "boardname": "ZAKO",
125 | "wpMethod": "screw"
126 | }
127 | ]
128 | },
129 | {
130 | "name": "Broadwell",
131 | "default_wpmethod": "screw",
132 | "default_rwLegacy": null,
133 | "default_fullrom": true,
134 | "default_windows": "Supported",
135 | "default_mac": "Not tested. Celeron/Pentium devices unsupported.",
136 | "default_linux": "Supported",
137 | "devices": [
138 | {
139 | "device": [
140 | "Acer C740 Chromebook"
141 | ],
142 | "boardname": "AURON_PAINE"
143 | },
144 | {
145 | "device": [
146 | "Acer C910 Chromebook (CB5-571)"
147 | ],
148 | "boardname": "AURON_YUNA"
149 | },
150 | {
151 | "device": [
152 | "Acer Chromebase 24"
153 | ],
154 | "boardname": "BUDDY",
155 | "wpMethod": "screw"
156 | },
157 | {
158 | "device": [
159 | "Toshiba Chromebook2 (2015)"
160 | ],
161 | "boardname": "GANDOF",
162 | "wpMethod": "screw"
163 | },
164 | {
165 | "device": [
166 | "Asus Chromebox 2 (CN62)"
167 | ],
168 | "boardname": "GUADO",
169 | "wpMethod": "screw",
170 | "mac": "Tested, Supported."
171 | },
172 | {
173 | "device": [
174 | "Dell Chromebook 13 7310"
175 | ],
176 | "boardname": "LULU",
177 | "mac": "Tested, Supported."
178 | },
179 | {
180 | "device": [
181 | "Acer Chromebox CXI2"
182 | ],
183 | "boardname": "RIKKU",
184 | "wpMethod": "screw"
185 | },
186 | {
187 | "device": [
188 | "Google Chromebook Pixel (2015)"
189 | ],
190 | "boardname": "SAMUS",
191 | "wpMethod": "screw"
192 | },
193 | {
194 | "device": [
195 | "Lenovo ThinkCentre Chromebox"
196 | ],
197 | "boardname": "TIDUS",
198 | "wpMethod": "screw"
199 | }
200 | ]
201 | },
202 | {
203 | "name": "Baytrail",
204 | "default_wpmethod": "screw",
205 | "default_rwLegacy": null,
206 | "default_fullrom": true,
207 | "default_windows": "Supported",
208 | "default_mac": "No MacOS support.",
209 | "default_linux": "Supported",
210 | "devices": [
211 | {
212 | "device": [
213 | "Acer Chromebook 15 (CB3-531)"
214 | ],
215 | "boardname": "BANJO"
216 | },
217 | {
218 | "device": [
219 | "Dell Chromebook 11 (3120)"
220 | ],
221 | "boardname": "CANDY"
222 | },
223 | {
224 | "device": [
225 | "Lenovo N20/N20P Chromebook"
226 | ],
227 | "boardname": "CLAPPER"
228 | },
229 | {
230 | "device": [
231 | "Lenovo N21 Chromebook"
232 | ],
233 | "boardname": "ENGUARDE"
234 | },
235 | {
236 | "device": [
237 | "Lenovo ThinkPad 11e/Yoga Chromebook"
238 | ],
239 | "boardname": "GLIMMER"
240 | },
241 | {
242 | "device": [
243 | "Acer Chromebook 11 (CB3-111/131, C730, C730E, C735)"
244 | ],
245 | "boardname": "GNAWTY"
246 | },
247 | {
248 | "device": [
249 | "Haier Chromebook G2"
250 | ],
251 | "boardname": "HELI"
252 | },
253 | {
254 | "device": [
255 | "HP Chromebook 11 G3/G4",
256 | "HP Chromebook 14 G4"
257 | ],
258 | "boardname": "KIP"
259 | },
260 | {
261 | "device": [
262 | "AOpen Chromebox Commercial"
263 | ],
264 | "boardname": "NINJA"
265 | },
266 | {
267 | "device": [
268 | "Lenovo Ideapad 100S Chromebook"
269 | ],
270 | "boardname": "ORCO"
271 | },
272 | {
273 | "device": [
274 | "Asus Chromebook C300"
275 | ],
276 | "boardname": "QUAWKS"
277 | },
278 | {
279 | "device": [
280 | "Asus Chromebook C200"
281 | ],
282 | "boardname": "SQUAWKS"
283 | },
284 | {
285 | "device": [
286 | "AOpen Chromebase Commercial"
287 | ],
288 | "boardname": "SUMO"
289 | },
290 | {
291 | "device": [
292 | "Toshiba Chromebook 2 (2014)"
293 | ],
294 | "boardname": "SWANKY"
295 | },
296 | {
297 | "device": [
298 | "Samsung Chromebook 2 (XE500C12)"
299 | ],
300 | "boardname": "WINKY"
301 | }
302 | ]
303 | },
304 | {
305 | "name": "Braswell",
306 | "default_wpmethod": "screw",
307 | "default_rwLegacy": null,
308 | "default_fullrom": true,
309 | "default_windows": "Supported",
310 | "default_mac": "No MacOS support.",
311 | "default_linux": "Supported",
312 | "devices": [
313 | {
314 | "device": [
315 | "Acer Chromebook 15 (CB3-532)"
316 | ],
317 | "boardname": "BANON"
318 | },
319 | {
320 | "device": [
321 | "Samsung Chromebook 3"
322 | ],
323 | "boardname": "CELES",
324 | "wpMethod": "screw",
325 | "windows": "Requires platform clock workaround. (See post install)"
326 | },
327 | {
328 | "device": [
329 | "Acer Chromebook R11 (C738T, CB5-132T)"
330 | ],
331 | "windows": "No microphone support",
332 | "boardname": "CYAN",
333 | "wpMethod": "screw"
334 | },
335 | {
336 | "device": [
337 | "Acer Chromebook 14 (CB3-431)"
338 | ],
339 | "boardname": "EDGAR",
340 | "wpMethod": "screw"
341 | },
342 | {
343 | "device": [
344 | "Dell Chromebook 11 3180/3189"
345 | ],
346 | "boardname": "KEFKA",
347 | "wpMethod": "screw"
348 | },
349 | {
350 | "device": [
351 | "Lenovo N22/N42 Chromebook"
352 | ],
353 | "boardname": "REKS",
354 | "wpMethod": "screw"
355 | },
356 | {
357 | "device": [
358 | "Acer Chromebook 11 N7 (C731)",
359 | "CTL NL61 Chromebook",
360 | "Edxis Education Chromebook (NL6D)",
361 | "HP Chromebook 11 G5 EE",
362 | "Mecer V2 Chromebook",
363 | "Positivo Chromebook C216B"
364 | ],
365 | "boardname": "RELM",
366 | "wpMethod": "screw"
367 | },
368 | {
369 | "device": [
370 | "HP Chromebook 11 G5"
371 | ],
372 | "boardname": "SETZER",
373 | "wpMethod": "screw"
374 | },
375 | {
376 | "device": [
377 | "Asus Chromebook C202S/C202SA"
378 | ],
379 | "boardname": "TERRA",
380 | "wpMethod": "screw"
381 | },
382 | {
383 | "device": [
384 | "Asus Chromebook C300SA/C301SA"
385 | ],
386 | "boardname": "TERRA13",
387 | "wpMethod": "screw"
388 | },
389 | {
390 | "device": [
391 | "Lenovo ThinkPad 11e/Yoga Chromebook (G3)"
392 | ],
393 | "boardname": "ULTIMA",
394 | "wpMethod": "screw"
395 | },
396 | {
397 | "device": [
398 | "CTL J5 Chromebook",
399 | "Edugear CMT Chromebook",
400 | "Haier Chromebook 11 C",
401 | "Multilaser Chromebook M11C",
402 | "PCMerge Chromebook PCM-116T-432B",
403 | "Prowise Chromebook Proline",
404 | "Viglen Chromebook 360"
405 | ],
406 | "boardname": "WIZPIG",
407 | "wpMethod": "screw"
408 | }
409 | ]
410 | },
411 | {
412 | "name": "Skylake",
413 | "default_wpmethod": "screw",
414 | "default_rwLegacy": null,
415 | "default_fullrom": true,
416 | "default_windows": "Audio driver is paid.",
417 | "default_mac": "Not tested. Celeron/Pentium devices unsupported.",
418 | "default_linux": "max98357a doesn't have a volume limiter so speakers could get fried.",
419 | "devices": [
420 | {
421 | "device": [
422 | "Dell Chromebook 13 3380"
423 | ],
424 | "boardname": "ASUKA"
425 | },
426 | {
427 | "device": [
428 | "Samsung Chromebook Pro"
429 | ],
430 | "boardname": "CAROLINE",
431 | "mac": "Tested, unsupported. HD 515 broken, artifacts in recovery. EmeraldSDHC kernel panics."
432 | },
433 | {
434 | "device": [
435 | "Asus Chromebook C302CA"
436 | ],
437 | "boardname": "CAVE"
438 | },
439 | {
440 | "device": [
441 | "HP Chromebook 13 G1"
442 | ],
443 | "boardname": "CHELL"
444 | },
445 | {
446 | "device": [
447 | "Acer Chromebook 14 for Work",
448 | "Acer Chromebook 11 (C771/C771T)"
449 | ],
450 | "boardname": "LARS",
451 | "mac": "Tested, supported. No touchscreen support."
452 | },
453 | {
454 | "device": [
455 | "Lenovo Thinkpad 13 Chromebook"
456 | ],
457 | "boardname": "SENTRY"
458 | }
459 | ]
460 | },
461 | {
462 | "name": "Apollolake",
463 | "default_wpmethod": "CR50 (battery)",
464 | "default_rwLegacy": true,
465 | "default_fullrom": true,
466 | "default_windows": "Audio driver is paid. Buggy SD card.",
467 | "default_mac": "No MacOS support.",
468 | "default_linux": "MicroSD detection issues
No headphone jack on SOF
max98357a on AVS doesn't have a volume limiter so speakers could get fried",
469 | "devices": [
470 | {
471 | "device": [
472 | "Acer Chromebook 11 (C732)"
473 | ],
474 | "boardname": "ASTRONAUT"
475 | },
476 | {
477 | "device": [
478 | "Asus Chromebook C223NA"
479 | ],
480 | "boardname": "BABYMEGA"
481 | },
482 | {
483 | "device": [
484 | "Asus Chromebook C523NA"
485 | ],
486 | "boardname": "BABYTIGER"
487 | },
488 | {
489 | "device": [
490 | "CTL Chromebook NL7/NL7T",
491 | "Edxis Chromebook 11/X11",
492 | "Positivo Chromebook N2110/N2112",
493 | "Viglen Chromebook 360C",
494 | ""
495 | ],
496 | "boardname": "BLACKTIP"
497 | },
498 | {
499 | "device": [
500 | "Acer Chromebook 15 (CB315)"
501 | ],
502 | "boardname": "BLUE"
503 | },
504 | {
505 | "device": [
506 | "Acer Chromebook Spin 15 (CP315)"
507 | ],
508 | "boardname": "BRUCE"
509 | },
510 | {
511 | "device": [
512 | "Acer Chromebook Spin 11 (R751T)"
513 | ],
514 | "boardname": "ELECTRO"
515 | },
516 | {
517 | "device": [
518 | "Acer Chromebook 514"
519 | ],
520 | "boardname": "EPAULETTE"
521 | },
522 | {
523 | "device": [
524 | "Acer Chromebook Spin 11 CP311"
525 | ],
526 | "boardname": "LAVA"
527 | },
528 | {
529 | "device": [
530 | "Dell Chromebook 11 5190"
531 | ],
532 | "boardname": "NASHER"
533 | },
534 | {
535 | "device": [
536 | "Dell Chromebook 11 5190 2-in-1"
537 | ],
538 | "boardname": "NASHER360"
539 | },
540 | {
541 | "device": [
542 | "Lenovo Thinkpad 11e/Yoga 11e (G4)"
543 | ],
544 | "boardname": "PYRO"
545 | },
546 | {
547 | "device": [
548 | "Asus Chromebook C423"
549 | ],
550 | "boardname": "RABBID"
551 | },
552 | {
553 | "device": [
554 | "Asus Chromebook Flip C213SA"
555 | ],
556 | "boardname": "REEF"
557 | },
558 | {
559 | "device": [
560 | "Lenovo 100e Chromebook"
561 | ],
562 | "boardname": "ROBO"
563 | },
564 | {
565 | "device": [
566 | "Lenovo 500e Chromebook"
567 | ],
568 | "boardname": "ROBO360"
569 | },
570 | {
571 | "device": [
572 | "Acer Chromebook 15 (CB515-1HT)"
573 | ],
574 | "boardname": "SAND"
575 | },
576 | {
577 | "device": [
578 | "Acer Chromebook 11 (CB311-8H)"
579 | ],
580 | "boardname": "SANTA"
581 | },
582 | {
583 | "device": [
584 | "HP Chromebook x360 11 G1 EE",
585 | "HP Chromebook 11 G6",
586 | "HP Chromebook 14 G5"
587 | ],
588 | "boardname": "SNAPPY"
589 | },
590 | {
591 | "device": [
592 | "CTL Chromebook J41/J41T",
593 | "PCmerge Chromebook AL116",
594 | "Prowise Chromebook Eduline",
595 | "Sector 5 E3 Chromebook",
596 | "Viglen Chromebook 11C"
597 | ],
598 | "boardname": "WHITETIP"
599 | }
600 | ]
601 | },
602 | {
603 | "name": "Kabylake / Amberlake",
604 | "default_wpmethod": "CR50 (battery)",
605 | "default_rwLegacy": true,
606 | "default_fullrom": true,
607 | "default_windows": "Audio driver is paid.",
608 | "default_mac": "Not tested. Celeron/Pentium devices unsupported.",
609 | "default_linux": "max98357a doesn't have a volume limiter so speakers could get fried.",
610 | "devices": [
611 | {
612 | "device": [
613 | "Acer Chromebook 13"
614 | ],
615 | "boardname": "AKALI"
616 | },
617 | {
618 | "device": [
619 | "Acer Chromebook Spin 13"
620 | ],
621 | "boardname": "AKALI360",
622 | "mac": "Tested, unsupported. EmeraldSDHC does not show eMMC drive. EmeraldSDHC + IRQ Conflict patch causes kernel panic"
623 | },
624 | {
625 | "device": [
626 | "Google Pixelbook Go (2019)"
627 | ],
628 | "boardname": "ATLAS",
629 | "windows": "Audio driver is paid. No webcam support.",
630 | "linux": "Cameras do not work.",
631 | "mac": "Tested, Supported."
632 | },
633 | {
634 | "device": [
635 | "Acer Chromebook 715 (CB715)"
636 | ],
637 | "boardname": "BARD"
638 | },
639 | {
640 | "device": [
641 | "Acer Chromebook 714 (CB714)"
642 | ],
643 | "boardname": "EKKO"
644 | },
645 | {
646 | "device": [
647 | "Google Pixelbook (2017)"
648 | ],
649 | "boardname": "EVE",
650 | "mac": "Tested, Supported."
651 | },
652 | {
653 | "device": [
654 | "Asus Google Meet kit (KBL)"
655 | ],
656 | "boardname": "EXCELSIOR",
657 | "wpMethod": "CR50, screw"
658 | },
659 | {
660 | "device": [
661 | "AOpen Chromebox Commercial 2",
662 | "Newline Chromebox A10"
663 | ],
664 | "boardname": "JAX",
665 | "wpMethod": "CR50, screw"
666 | },
667 | {
668 | "device": [
669 | "Acer Chromebase 24I2"
670 | ],
671 | "boardname": "KARMA",
672 | "wpMethod": "CR50, screw"
673 | },
674 | {
675 | "device": [
676 | "HP Chromebox G2"
677 | ],
678 | "boardname": "KENCH",
679 | "wpMethod": "CR50, screw"
680 | },
681 | {
682 | "device": [
683 | "Asus Chromebook C425"
684 | ],
685 | "boardname": "LEONA",
686 | "mac": "Tested, Supported."
687 | },
688 | {
689 | "device": [
690 | "Samsung Chromebook Plus V2"
691 | ],
692 | "boardname": "NAUTILUS",
693 | "linux": "Camera on the keyboard doesn't work.",
694 | "mac": "Tested, unsupported. HD 615 broken, will not boot without Ivy Bridge CPUID spoof and -igfxvesa. No acceleration."
695 | },
696 | {
697 | "device": [
698 | "Google Pixel Slate"
699 | ],
700 | "boardname": "NOCTURNE",
701 | "windows": "Audio driver is paid. No webcam support.",
702 | "linux": "Cameras do not work.",
703 | "mac": "Tested, Supported."
704 | },
705 | {
706 | "device": [
707 | "Lenovo Yoga Chromebook C630"
708 | ],
709 | "boardname": "PANTHEON"
710 | },
711 | {
712 | "device": [
713 | "Asus Chromebook Flip C433/C434"
714 | ],
715 | "boardname": "SHYVANA",
716 | "mac": "Tested, Supported."
717 | },
718 | {
719 | "device": [
720 | "Acer Chromebox CXI3"
721 | ],
722 | "boardname": "SION",
723 | "wpMethod": "CR50, screw"
724 | },
725 | {
726 | "device": [
727 | "HP Chromebook x360 14"
728 | ],
729 | "boardname": "SONA"
730 | },
731 | {
732 | "device": [
733 | "HP Chromebook X2"
734 | ],
735 | "boardname": "SORAKA"
736 | },
737 | {
738 | "device": [
739 | "HP Chromebook 15 G1"
740 | ],
741 | "boardname": "SYNDRA"
742 | },
743 | {
744 | "device": [
745 | "Asus Chromebox 3 (CN65)"
746 | ],
747 | "boardname": "TEEMO",
748 | "wpMethod": "CR50, screw"
749 | },
750 | {
751 | "device": [
752 | "Dell Inspiron Chromebook 14 (7460)"
753 | ],
754 | "boardname": "VAYNE"
755 | },
756 | {
757 | "device": [
758 | "CTL Chromebox CBx1",
759 | "Promethean Chromebox",
760 | "SMART Chromebox G3",
761 | "ViewSonic NMP660 Chromebox"
762 | ],
763 | "boardname": "WUKONG",
764 | "wpMethod": "CR50, screw"
765 | }
766 | ]
767 | },
768 | {
769 | "name": "Geminilake",
770 | "default_wpmethod": "CR50 (battery)",
771 | "default_rwLegacy": true,
772 | "default_fullrom": true,
773 | "default_windows": "Audio driver is paid.",
774 | "default_mac": "No MacOS support.",
775 | "default_linux": "Supported",
776 | "devices": [
777 | {
778 | "device": [
779 | "Asus Chromebook Flip C214/C234"
780 | ],
781 | "boardname": "AMPTON"
782 | },
783 | {
784 | "device": [
785 | "Asus Chromebook Flip C204"
786 | ],
787 | "boardname": "APEL"
788 | },
789 | {
790 | "device": [
791 | "HP Chromebook x360 12b-ca0"
792 | ],
793 | "boardname": "BLOOG"
794 | },
795 | {
796 | "device": [
797 | "HP Chromebook 14a-na0"
798 | ],
799 | "boardname": "BLOOGLET"
800 | },
801 | {
802 | "device": [
803 | "HP Chromebook x360 14a-ca0/14b-ca0"
804 | ],
805 | "boardname": "BLOOGUARD"
806 | },
807 | {
808 | "device": [
809 | "Acer Chromebook 315"
810 | ],
811 | "boardname": "BLORB"
812 | },
813 | {
814 | "device": [
815 | "Samsung Chromebook 4"
816 | ],
817 | "boardname": "BLUEBIRD"
818 | },
819 | {
820 | "device": [
821 | "Acer Chromebook 311",
822 | "(CB311-9H, CB311-9HT, C733, C733U, C733T)"
823 | ],
824 | "boardname": "BOBBA"
825 | },
826 | {
827 | "device": [
828 | "Acer Chromebook Spin 311 (CP311-2H, CP311-2HN)",
829 | "Acer Chromebook Spin 511 (R752T, R752TN)"
830 | ],
831 | "boardname": "BOBBA360"
832 | },
833 | {
834 | "device": [
835 | "Samsung Chromebook 4+"
836 | ],
837 | "boardname": "CASTA"
838 | },
839 | {
840 | "device": [
841 | "NEC Chromebook Y2"
842 | ],
843 | "boardname": "DOOD"
844 | },
845 | {
846 | "device": [
847 | "HP Chromebook 14 G6"
848 | ],
849 | "boardname": "DORP"
850 | },
851 | {
852 | "device": [
853 | "Acer Chromebook 314 (CB314)",
854 | "Packard Bell Chromebook 314 (PCB314)"
855 | ],
856 | "boardname": "DROID"
857 | },
858 | {
859 | "device": [
860 | "Dell Chromebook 3100"
861 | ],
862 | "boardname": "FLEEX"
863 | },
864 | {
865 | "device": [
866 | "CTL Chromebook VX11/VX11T",
867 | "Poin2 Chromebook 11P"
868 | ],
869 | "boardname": "FOOB"
870 | },
871 | {
872 | "device": [
873 | "Poin2 Chromebook 11P"
874 | ],
875 | "boardname": "FOOB360"
876 | },
877 | {
878 | "device": [
879 | "ADVAN Chromebook 116",
880 | "Axioo Chromebook",
881 | "Baicells Chromebook BB01",
882 | "CTL Chromebook NL71/CT/LTE",
883 | "EVERCOSS Chromebook CB1",
884 | "Edxis Chromebook 11 (S20-C)",
885 | "JOI Chromebook C100",
886 | "Multilaser Chromebook M11C-PC914",
887 | "Pixart Rxart Chromebook",
888 | "Poin2 Chromebook 11A",
889 | "SPC Chromebook X1 Mini",
890 | "Sector 5 E4 LTE Chromebook",
891 | "WS Chromebook A101",
892 | "Zyrex Chromebook M432"
893 | ],
894 | "boardname": "GARG"
895 | },
896 | {
897 | "device": [
898 | "Ascon Chromebook 11A",
899 | "Axioo Chromebook 360",
900 | "Baicells Chromebook BB01",
901 | "CTL Chromebook NL71T/TW/TWB",
902 | "EVERCOSS Chromebook CB1A",
903 | "Edxis Chromebook 11 (S20-X)",
904 | "JOI Chromebook C100",
905 | "Multilaser Chromebook M11HC-PC915",
906 | "Pixart Rxart Chromebook",
907 | "Poin2 Chromebook 11A",
908 | "SPC Chromebook X1 Mini",
909 | "WS Chromebook A101",
910 | "Zyrex Chromebook 360"
911 | ],
912 | "boardname": "GARG360"
913 | },
914 | {
915 | "device": [
916 | "CTL Chromebook NL81/NL81T"
917 | ],
918 | "boardname": "GARFOUR"
919 | },
920 | {
921 | "device": [
922 | "Acer Chromebook 311"
923 | ],
924 | "boardname": "GLK"
925 | },
926 | {
927 | "device": [
928 | "Acer Chromebook Spin 311"
929 | ],
930 | "boardname": "GLK360"
931 | },
932 | {
933 | "device": [
934 | "Dell Chromebook 3100 2-in-1"
935 | ],
936 | "boardname": "GRABBITER"
937 | },
938 | {
939 | "device": [
940 | "Lenovo Chromebook C340"
941 | ],
942 | "boardname": "LASER"
943 | },
944 | {
945 | "device": [
946 | "Lenovo Chromebook S340/IdeaPad 3"
947 | ],
948 | "boardname": "LASER14"
949 | },
950 | {
951 | "device": [
952 | "Lenovo Ideapad 3 Chromebook"
953 | ],
954 | "boardname": "LICK"
955 | },
956 | {
957 | "device": [
958 | "HP Chromebook x360 11 G2 EE"
959 | ],
960 | "boardname": "MEEP"
961 | },
962 | {
963 | "device": [
964 | "HP Chromebook 11 G7 EE"
965 | ],
966 | "boardname": "MIMROCK"
967 | },
968 | {
969 | "device": [
970 | "Asus Chromebook C424"
971 | ],
972 | "boardname": "NOSPIKE"
973 | },
974 | {
975 | "device": [
976 | "Dell Chromebook 3400"
977 | ],
978 | "boardname": "ORBATRIX"
979 | },
980 | {
981 | "device": [
982 | "Lenovo 100e Chromebook Gen 2"
983 | ],
984 | "boardname": "PHASER"
985 | },
986 | {
987 | "device": [
988 | "Lenovo 300e Chromebook Gen 2/IdeaPad Flex 3",
989 | "NEC Chromebook Y1"
990 | ],
991 | "boardname": "PHASER360"
992 | },
993 | {
994 | "device": [
995 | "Lenovo 500e Chromebook Gen 2"
996 | ],
997 | "boardname": "PHASER360S"
998 | },
999 | {
1000 | "device": [
1001 | "Acer Chromebook 512 (C851/C851T)"
1002 | ],
1003 | "boardname": "SPARKY"
1004 | },
1005 | {
1006 | "device": [
1007 | "Acer Chromebook Spin 512 (R851TN)"
1008 | ],
1009 | "boardname": "SPARKY360"
1010 | },
1011 | {
1012 | "device": [
1013 | "HP Chromebook 11 G8 EE"
1014 | ],
1015 | "boardname": "VORTICON"
1016 | },
1017 | {
1018 | "device": [
1019 | "HP Chromebook x360 11 G3 EE"
1020 | ],
1021 | "boardname": "VORTININJA"
1022 | }
1023 | ]
1024 | },
1025 | {
1026 | "name": "Whiskeylake",
1027 | "default_wpmethod": "battery",
1028 | "default_rwLegacy": true,
1029 | "default_fullrom": false,
1030 | "default_windows": "?",
1031 | "default_mac": "Not tested. Celeron/Pentium devices unsupported.",
1032 | "default_linux": "?",
1033 | "devices": [
1034 | {
1035 | "device": [
1036 | "Dell Latitude 5300 2-in-1 Chromebook Enterprise"
1037 | ],
1038 | "boardname": "ARCADA"
1039 | },
1040 | {
1041 | "device": [
1042 | "Dell Latitude 5400 Chromebook Enterprise"
1043 | ],
1044 | "boardname": "SARIEN",
1045 | "linux": "Sim card slot was not tested. Everything else works under RW_LEGACY. This Chromebook has upgradable RAM and SSD."
1046 | }
1047 | ]
1048 | },
1049 | {
1050 | "name": "Cometlake",
1051 | "default_wpmethod": "CR50 (battery)",
1052 | "default_rwLegacy": false,
1053 | "default_fullrom": true,
1054 | "default_windows": "Audio driver is paid.",
1055 | "default_mac": "Not tested. Celeron/Pentium devices unsupported.",
1056 | "default_linux": "Supported",
1057 | "devices": [
1058 | {
1059 | "device": [
1060 | "Lenovo Ideapad Flex 5 Chromebook"
1061 | ],
1062 | "boardname": "AKEMI"
1063 | },
1064 | {
1065 | "device": [
1066 | "HP Chromebook x360 14c-ca0"
1067 | ],
1068 | "boardname": "DRAGONAIR",
1069 | "linux": "Fingerprint reader doesn't work",
1070 | "mac": "Tested, Supported.
Requires `DevirtualiseMmio` to be disabled."
1071 | },
1072 | {
1073 | "device": [
1074 | "Dell Latitude 7410 Chromebook Enterprise"
1075 | ],
1076 | "boardname": "DRALLION",
1077 | "rwLegacy": true,
1078 | "windows": "Supported",
1079 | "mac": "Tested, Supported.
Requires `DevirtualiseMmio` to be disabled."
1080 | },
1081 | {
1082 | "device": [
1083 | "HP Pro c640 Chromebook"
1084 | ],
1085 | "boardname": "DRATINI",
1086 | "linux": "Fingerprint reader doesn't work"
1087 | },
1088 | {
1089 | "device": [
1090 | "Asus Chromebox 4"
1091 | ],
1092 | "boardname": "DUFFY",
1093 | "rwLegacy": true,
1094 | "wpMethod": "CR50, jumper"
1095 | },
1096 | {
1097 | "device": [
1098 | "Asus Fanless Chromebox"
1099 | ],
1100 | "boardname": "FAFFY",
1101 | "rwLegacy": true,
1102 | "wpMethod": "CR50, jumper"
1103 | },
1104 | {
1105 | "device": [
1106 | "Asus Chromebook Flip C436FA"
1107 | ],
1108 | "boardname": "HELIOS"
1109 | },
1110 | {
1111 | "device": [
1112 | "HP Elite c1030 Chromebook",
1113 | "HP Chromebook x360 13c-ca0"
1114 | ],
1115 | "boardname": "JINLON",
1116 | "linux": "Fingerprint reader doesn't work"
1117 | },
1118 | {
1119 | "device": [
1120 | "Acer Chromebox CXI4"
1121 | ],
1122 | "boardname": "KAISA",
1123 | "rwLegacy": true,
1124 | "wpMethod": "CR50, jumper"
1125 | },
1126 | {
1127 | "device": [
1128 | "Acer Chromebook 712 (C871)"
1129 | ],
1130 | "boardname": "KINDRED"
1131 | },
1132 | {
1133 | "device": [
1134 | "Acer Chromebook Spin 713 (CP713-2W)"
1135 | ],
1136 | "boardname": "KLED",
1137 | "mac": "Tested, Supported.
Requires `DevirtualiseMmio` to be disabled."
1138 | },
1139 | {
1140 | "device": [
1141 | "Samsung Galaxy Chromebook"
1142 | ],
1143 | "boardname": "KOHAKU",
1144 | "linux": "Fingerprint reader doesn't work.
Sleep issues related to EC (wakes up with lid closed)"
1145 | },
1146 | {
1147 | "device": [
1148 | "Samsung Galaxy Chromebook 2"
1149 | ],
1150 | "boardname": "NIGHTFURY"
1151 | },
1152 | {
1153 | "device": [
1154 | "HP Chromebox G3"
1155 | ],
1156 | "boardname": "NOIBAT",
1157 | "rwLegacy": true,
1158 | "wpMethod": "CR50, jumper"
1159 | },
1160 | {
1161 | "device": [
1162 | "CTL Chromebox CBx2"
1163 | ],
1164 | "boardname": "WYVERN",
1165 | "rwLegacy": true,
1166 | "wpMethod": "CR50, jumper"
1167 | }
1168 | ]
1169 | },
1170 | {
1171 | "name": "TigerLake",
1172 | "default_wpmethod": "CR50 (battery)",
1173 | "default_rwLegacy": true,
1174 | "default_fullrom": true,
1175 | "default_windows": "Audio and Thunderbolt drivers are paid.",
1176 | "default_mac": "No MacOS support.",
1177 | "default_linux": "No fingerprint functionality on models that have it.
USB4 requires systemd service (See post install)",
1178 | "devices": [
1179 | {
1180 | "device": [
1181 | "FMV Chromebook 14F"
1182 | ],
1183 | "boardname": "CHRONICLER"
1184 | },
1185 | {
1186 | "device": [
1187 | "Asus Chromebook Flip CX3"
1188 | ],
1189 | "boardname": "COLLIS"
1190 | },
1191 | {
1192 | "device": [
1193 | "Asus Chromebook Flip CX5 (CX5400)"
1194 | ],
1195 | "boardname": "COPANO"
1196 | },
1197 | {
1198 | "device": [
1199 | "Asus Chromebook Flip CX55, CX5 (CX5500), C536"
1200 | ],
1201 | "boardname": "DELBIN"
1202 | },
1203 | {
1204 | "device": [
1205 | "Asus Chromebook CX9 (CX9400)"
1206 | ],
1207 | "boardname": "DROBIT"
1208 | },
1209 | {
1210 | "device": [
1211 | "HP Chromebook x360 14c-cc0"
1212 | ],
1213 | "boardname": "ELDRID"
1214 | },
1215 | {
1216 | "device": [
1217 | "HP Pro c640 G2 Chromebook",
1218 | "HP Chromebook 14b-nb0"
1219 | ],
1220 | "boardname": "ELEMI"
1221 | },
1222 | {
1223 | "device": [
1224 | "Lenovo IdeaPad Flex 5i Chromebook"
1225 | ],
1226 | "boardname": "LILLIPUP"
1227 | },
1228 | {
1229 | "device": [
1230 | "Lenovo 5i-14 Chromebook",
1231 | "Lenovo Slim 5 Chromebook"
1232 | ],
1233 | "boardname": "LINDAR"
1234 | },
1235 | {
1236 | "device": [
1237 | "Acer Chromebook Spin 514 (CB514-2H)"
1238 | ],
1239 | "boardname": "VOEMA"
1240 | },
1241 | {
1242 | "device": [
1243 | "Acer Chromebook 515 (CB515-1W, CB515-1WT)"
1244 | ],
1245 | "boardname": "VOLET"
1246 | },
1247 | {
1248 | "device": [
1249 | "Acer Chromebook 514 (CB514-1W, CB514-1WT)"
1250 | ],
1251 | "boardname": "VOLTA"
1252 | },
1253 | {
1254 | "device": [
1255 | "Acer Chromebook Spin 713 (CP713-3W)"
1256 | ],
1257 | "boardname": "VOXEL"
1258 | }
1259 | ]
1260 | },
1261 | {
1262 | "name": "JasperLake",
1263 | "default_wpmethod": "CR50, jumper",
1264 | "default_rwLegacy": true,
1265 | "default_fullrom": true,
1266 | "default_windows": "Audio driver is paid.",
1267 | "default_mac": "No MacOS support.",
1268 | "default_linux": "Cameras untested.",
1269 | "devices": [
1270 | {
1271 | "device": [
1272 | "Lenovo Flex 3i 15 / Ideapad Flex 3i Chromebook"
1273 | ],
1274 | "boardname": "BEETLEY"
1275 | },
1276 | {
1277 | "device": [
1278 | "Lenovo 3i-15 Chromebook"
1279 | ],
1280 | "boardname": "BLIPPER"
1281 | },
1282 | {
1283 | "device": [
1284 | "Lenovo 100e Chromebook Gen 3"
1285 | ],
1286 | "boardname": "BOOKEM",
1287 | "wpMethod": "CR50, jumper"
1288 | },
1289 | {
1290 | "device": [
1291 | "Lenovo 500e Chromebook Gen 3"
1292 | ],
1293 | "boardname": "BOTEN",
1294 | "wpMethod": "CR50, jumper"
1295 | },
1296 | {
1297 | "device": [
1298 | "Lenovo Flex 3i-11 / IdeaPad Flex 3i Chromebook"
1299 | ],
1300 | "boardname": "BOTENFLEX",
1301 | "wpMethod": "CR50, jumper"
1302 | },
1303 | {
1304 | "device": [
1305 | "Samsung Galaxy Chromebook 2 360"
1306 | ],
1307 | "boardname": "BUGZZY"
1308 | },
1309 | {
1310 | "device": [
1311 | "Dell Chromebook 3110"
1312 | ],
1313 | "boardname": "CRET"
1314 | },
1315 | {
1316 | "device": [
1317 | "Dell Chromebook 3110 2-in-1"
1318 | ],
1319 | "boardname": "CRET360"
1320 | },
1321 | {
1322 | "device": [
1323 | "HP Chromebook x360 11 G4 EE"
1324 | ],
1325 | "boardname": "DRAWCIA",
1326 | "wpMethod": "CR50, jumper"
1327 | },
1328 | {
1329 | "device": [
1330 | "HP Chromebook 11 G9 EE"
1331 | ],
1332 | "boardname": "DRAWLAT",
1333 | "wpMethod": "CR50, jumper"
1334 | },
1335 | {
1336 | "device": [
1337 | "HP Chromebook 14 G7"
1338 | ],
1339 | "boardname": "DRAWMAN",
1340 | "wpMethod": "CR50, jumper"
1341 | },
1342 | {
1343 | "device": [
1344 | "HP Fortis 14 G10 Chromebook"
1345 | ],
1346 | "boardname": "DRAWPER",
1347 | "wpMethod": "CR50, jumper"
1348 | },
1349 | {
1350 | "device": [
1351 | "Asus Chromebook CX1500CKA"
1352 | ],
1353 | "boardname": "GALITH"
1354 | },
1355 | {
1356 | "device": [
1357 | "Asus Chromebook CX1500FKA"
1358 | ],
1359 | "boardname": "GALITH360"
1360 | },
1361 | {
1362 | "device": [
1363 | "Asus Chromebook CX1700CKA"
1364 | ],
1365 | "boardname": "GALLOP"
1366 | },
1367 | {
1368 | "device": [
1369 | "Asus Chromebook CX1 CX1102"
1370 | ],
1371 | "boardname": "GALNAT"
1372 | },
1373 | {
1374 | "device": [
1375 | "Asus Chromebook Flip CX1 CX1102"
1376 | ],
1377 | "boardname": "GALNAT360"
1378 | },
1379 | {
1380 | "device": [
1381 | "Asus Chromebook CX1"
1382 | ],
1383 | "boardname": "GALTIC"
1384 | },
1385 | {
1386 | "device": [
1387 | "Asus Chromebook CX1400FKA"
1388 | ],
1389 | "boardname": "GALTIC360"
1390 | },
1391 | {
1392 | "device": [
1393 | "CTL Chromebook NL72"
1394 | ],
1395 | "boardname": "KRACKO"
1396 | },
1397 | {
1398 | "device": [
1399 | "CTL Chromebook NL72T",
1400 | "LG Chromebook 11TC50Q/11TQ50Q"
1401 | ],
1402 | "boardname": "KRACKO360"
1403 | },
1404 | {
1405 | "device": [
1406 | "HP Chromebook x360 14a-ca1"
1407 | ],
1408 | "boardname": "LANDIA"
1409 | },
1410 | {
1411 | "device": [
1412 | "HP Chromebook 15a-na0"
1413 | ],
1414 | "boardname": "LANDRID"
1415 | },
1416 | {
1417 | "device": [
1418 | "HP Chromebook 14a-na1"
1419 | ],
1420 | "boardname": "LANTIS"
1421 | },
1422 | {
1423 | "device": [
1424 | "HP Chromebook x360 14b-cb0"
1425 | ],
1426 | "boardname": "MADOO"
1427 | },
1428 | {
1429 | "device": [
1430 | "Acer Chromebook Spin 314"
1431 | ],
1432 | "boardname": "MAGISTER"
1433 | },
1434 | {
1435 | "device": [
1436 | "Acer Chromebook 512 [C852]"
1437 | ],
1438 | "boardname": "MAGLET"
1439 | },
1440 | {
1441 | "device": [
1442 | "Acer Chromebook Spin 512 [R853TA/R853TNA]"
1443 | ],
1444 | "boardname": "MAGLIA",
1445 | "wpMethod": "CR50, jumper"
1446 | },
1447 | {
1448 | "device": [
1449 | "Acer Chromebook 511 [C733/C734]"
1450 | ],
1451 | "boardname": "MAGLITH"
1452 | },
1453 | {
1454 | "device": [
1455 | "Acer Chromebook 315 [CB315-4H/4HT]"
1456 | ],
1457 | "boardname": "MAGMA"
1458 | },
1459 | {
1460 | "device": [
1461 | "Acer Chromebook 314 [CB314-3H/3HT, C934/C934T]"
1462 | ],
1463 | "boardname": "MAGNETO"
1464 | },
1465 | {
1466 | "device": [
1467 | "Acer Chromebook Spin 511 [R753T]"
1468 | ],
1469 | "boardname": "MAGOLOR"
1470 | },
1471 | {
1472 | "device": [
1473 | "Acer Chromebook 317 [CB317-1H]"
1474 | ],
1475 | "boardname": "MAGPIE",
1476 | "wpMethod": "CR50, jumper"
1477 | },
1478 | {
1479 | "device": [
1480 | "NEC Chromebook Y3"
1481 | ],
1482 | "boardname": "METAKNIGHT",
1483 | "wpMethod": "CR50, jumper"
1484 | },
1485 | {
1486 | "device": [
1487 | "Gateway Chromebook 15"
1488 | ],
1489 | "boardname": "PASARA"
1490 | },
1491 | {
1492 | "device": [
1493 | "Axioo Chromebook P11",
1494 | "CTL Chromebook PX11E",
1495 | "SPC Chromebook Z1 Mini",
1496 | "Zyrex Chromebook M432-2"
1497 | ],
1498 | "boardname": "PIRETTE"
1499 | },
1500 | {
1501 | "device": [
1502 | "Axioo Chromebook P14",
1503 | "Gateway Chromebook 14"
1504 | ],
1505 | "boardname": "PIRIKA"
1506 | },
1507 | {
1508 | "device": [
1509 | "Samsung Galaxy Chromebook Go"
1510 | ],
1511 | "boardname": "SASUKE"
1512 | },
1513 | {
1514 | "device": [
1515 | "Asus Chromebook CR1100CKA"
1516 | ],
1517 | "boardname": "STORO"
1518 | },
1519 | {
1520 | "device": [
1521 | "Asus Chromebook Flip CR1100FKA"
1522 | ],
1523 | "boardname": "STORO360"
1524 | }
1525 | ]
1526 | },
1527 | {
1528 | "name": "Alderlake",
1529 | "default_wpmethod": "CR50",
1530 | "default_rwLegacy": true,
1531 | "default_fullrom": true,
1532 | "default_windows": "Audio and Thunderbolt drivers are paid.",
1533 | "default_mac": "No MacOS support.",
1534 | "default_linux": "No fingerprint functionality on models that have it.
USB4 requires systemd service (See post install)",
1535 | "devices": [
1536 | {
1537 | "device": [
1538 | "HP Elite c640 14 inch G3 Chromebook"
1539 | ],
1540 | "boardname": "ANAHERA"
1541 | },
1542 | {
1543 | "device": [
1544 | "Framework Laptop Chromebook Edition"
1545 | ],
1546 | "boardname": "BANSHEE"
1547 | },
1548 | {
1549 | "device": [
1550 | "Dell Latitude 5430 Chromebook"
1551 | ],
1552 | "boardname": "CROTA"
1553 | },
1554 | {
1555 | "device": [
1556 | "Dell Latitude 5430 2-in-1 Chromebook"
1557 | ],
1558 | "boardname": "CROTA360"
1559 | },
1560 | {
1561 | "device": [
1562 | "Asus Chromebook Flip CX5 (CX5601)"
1563 | ],
1564 | "boardname": "FELWINTER"
1565 | },
1566 | {
1567 | "device": [
1568 | "HP Chromebook x360 14c-cd0"
1569 | ],
1570 | "boardname": "GIMBLE"
1571 | },
1572 | {
1573 | "device": [
1574 | "Acer Chromebook Spin 714 (CP714-1WN)"
1575 | ],
1576 | "boardname": "KANO",
1577 | "windows": "Audio and Thunderbolt drivers are paid. No webcam support."
1578 | },
1579 | {
1580 | "device": [
1581 | "ASUS Chromebook Plus CX34"
1582 | ],
1583 | "boardname": "MARASOV"
1584 | },
1585 | {
1586 | "device": [
1587 | "Asus Chromebook CX34 Flip",
1588 | "Asus Chromebook Vibe CX34 Flip"
1589 | ],
1590 | "boardname": "MITHRAX"
1591 | },
1592 | {
1593 | "device": [
1594 | "Acer Chromebook Plus 515 (CB515-2H, CB515-2HT)"
1595 | ],
1596 | "boardname": "OMNIGUL"
1597 | },
1598 | {
1599 | "device": [
1600 | "Acer Chromebook 516 GE (CBG516-1H)"
1601 | ],
1602 | "boardname": "OSIRIS"
1603 | },
1604 | {
1605 | "device": [
1606 | "Lenovo ThinkPad C14 Gen 1 Chromebook"
1607 | ],
1608 | "boardname": "PRIMUS"
1609 | },
1610 | {
1611 | "device": [
1612 | "HP Elite Dragonfly Chromebook"
1613 | ],
1614 | "boardname": "REDRIX",
1615 | "windows": "Audio and Thunderbolt drivers are paid. No webcam support.",
1616 | "linux": "Touchpad needs fix, no camera, see #72"
1617 | },
1618 | {
1619 | "device": [
1620 | "Lenovo IdeaPad Gaming Chromebook 16"
1621 | ],
1622 | "boardname": "TANIKS"
1623 | },
1624 | {
1625 | "device": [
1626 | "Lenovo Flex 5i Chromebook / IdeaPad Flex 5i Chromebook"
1627 | ],
1628 | "boardname": "TAEKO"
1629 | },
1630 | {
1631 | "device": [
1632 | "Acer Chromebook Vero 514"
1633 | ],
1634 | "boardname": "VOLMAR"
1635 | },
1636 | {
1637 | "device": [
1638 | "Acer Chromebook Vero 712 (CV872, CV872T)"
1639 | ],
1640 | "boardname": "ZAVALA"
1641 | }
1642 | ]
1643 | },
1644 | {
1645 | "name": "Intel Alderlake-N",
1646 | "default_wpmethod": "CR50",
1647 | "default_rwLegacy": true,
1648 | "default_fullrom": true,
1649 | "default_windows": "Audio and USB4 drivers are paid.",
1650 | "default_mac": "No MacOS support.",
1651 | "default_linux": "Audio may not work.",
1652 | "devices": [
1653 | {
1654 | "device": [
1655 | "Acer Chromebook Spin 512"
1656 | ],
1657 | "boardname": "CRAASK"
1658 | },
1659 | {
1660 | "device": [
1661 | "Acer Chromebook Spin 511"
1662 | ],
1663 | "boardname": "CRAASKBOWL"
1664 | },
1665 | {
1666 | "device": [
1667 | "Acer Chromebook 511"
1668 | ],
1669 | "boardname": "CRAASKVIN"
1670 | },
1671 | {
1672 | "device": [
1673 | "Acer Chromebook 314"
1674 | ],
1675 | "boardname": "CRAASNETO"
1676 | },
1677 | {
1678 | "device": [
1679 | "Lenovo 500e Yoga Chromebook Gen 4"
1680 | ],
1681 | "boardname": "PUJJO"
1682 | },
1683 | {
1684 | "device": [
1685 | "Lenovo IdeaPad Flex 3i Chromebook"
1686 | ],
1687 | "boardname": "PUJJOFLEX"
1688 | },
1689 | {
1690 | "device": [
1691 | "Lenovo 14e Chromebook Gen 3"
1692 | ],
1693 | "boardname": "PUJJOTEEN"
1694 | },
1695 | {
1696 | "device": [
1697 | "Lenovo Ideapad Slim 3i Chromebook"
1698 | ],
1699 | "boardname": "PUJJOTEEN15W"
1700 | },
1701 | {
1702 | "device": [
1703 | "Asus Chromebook CR11 [CR1102C]"
1704 | ],
1705 | "boardname": "XIVU"
1706 | },
1707 | {
1708 | "device": [
1709 | "Asus Chromebook CR11 [CR1102F]"
1710 | ],
1711 | "boardname": "XIVU360"
1712 | },
1713 | {
1714 | "device": [
1715 | "HP Chromebook 15a-nb0"
1716 | ],
1717 | "boardname": "YAVIKS"
1718 | }
1719 | ]
1720 | },
1721 | {
1722 | "name": "Stoneyridge",
1723 | "default_wpmethod": "CR50 (battery)",
1724 | "default_rwLegacy": true,
1725 | "default_fullrom": true,
1726 | "default_windows": "Experimental Windows support. Requires patched drivers with testsigning enabled.",
1727 | "default_mac": "No MacOS support.",
1728 | "default_linux": "Needs kernel compiled with AMDGPU=Y instead of =M and firmware built-in to get working audio",
1729 | "devices": [
1730 | {
1731 | "device": [
1732 | "Acer Chromebook 315 (CB315-2H)"
1733 | ],
1734 | "boardname": "ALEENA"
1735 | },
1736 | {
1737 | "device": [
1738 | "HP Chromebook 11A G6 EE",
1739 | "HP Chromebook 11A G8 EE"
1740 | ],
1741 | "boardname": "BARLA"
1742 | },
1743 | {
1744 | "device": [
1745 | "HP Chromebook 14A G5"
1746 | ],
1747 | "boardname": "CAREENA"
1748 | },
1749 | {
1750 | "device": [
1751 | "Acer Chromebook 311 (C721)"
1752 | ],
1753 | "boardname": "KASUMI"
1754 | },
1755 | {
1756 | "device": [
1757 | "Acer Chromebook Spin 311 (R721T)"
1758 | ],
1759 | "boardname": "KASUMI360"
1760 | },
1761 | {
1762 | "device": [
1763 | "Lenovo 14e Chromebook (S345)"
1764 | ],
1765 | "boardname": "LIARA"
1766 | },
1767 | {
1768 | "device": [
1769 | "Lenovo 100e Chromebook Gen 2 AMD"
1770 | ],
1771 | "boardname": "TREEYA"
1772 | },
1773 | {
1774 | "device": [
1775 | "Lenovo 300e Chromebook Gen 2 AMD"
1776 | ],
1777 | "boardname": "TREEYA360"
1778 | }
1779 | ]
1780 | },
1781 | {
1782 | "name": "Picasso/Dali",
1783 | "default_wpmethod": "CR50 (battery)",
1784 | "default_rwLegacy": true,
1785 | "default_fullrom": true,
1786 | "default_windows": "Supported",
1787 | "default_mac": "No MacOS support.",
1788 | "default_linux": "Needs to add \"iommu=pt\" to kernel parameters",
1789 | "devices": [
1790 | {
1791 | "device": [
1792 | "HP Pro c645 Chromebook Enterprise",
1793 | "HP Chromebook 14b-na0"
1794 | ],
1795 | "boardname": "BERKNIP"
1796 | },
1797 | {
1798 | "device": [
1799 | "HP Chromebook 14a-nd0"
1800 | ],
1801 | "boardname": "DIRINBOZ"
1802 | },
1803 | {
1804 | "device": [
1805 | "Acer Chromebook Spin 514"
1806 | ],
1807 | "boardname": "EZKINIL"
1808 | },
1809 | {
1810 | "device": [
1811 | "HP Chromebook x360 14a-cb0"
1812 | ],
1813 | "boardname": "GUMBOZ"
1814 | },
1815 | {
1816 | "device": [
1817 | "Asus Chromebook Flip CM1"
1818 | ],
1819 | "boardname": "JELBOZ360"
1820 | },
1821 | {
1822 | "device": [
1823 | "Lenovo ThinkPad C13 Yoga Chromebook"
1824 | ],
1825 | "boardname": "MORPHIUS"
1826 | },
1827 | {
1828 | "device": [
1829 | "Lenovo 100e Chromebook Gen 3"
1830 | ],
1831 | "boardname": "VILBOZ"
1832 | },
1833 | {
1834 | "device": [
1835 | "Lenovo 14e Chromebook Gen 2"
1836 | ],
1837 | "boardname": "VILBOZ14"
1838 | },
1839 | {
1840 | "device": [
1841 | "Lenovo 300e Chromebook Gen 3"
1842 | ],
1843 | "boardname": "VILBOZ360"
1844 | },
1845 | {
1846 | "device": [
1847 | "Asus Chromebook Flip CM5"
1848 | ],
1849 | "boardname": "WOOMAX"
1850 | }
1851 | ]
1852 | },
1853 | {
1854 | "name": "AMD Cezanne",
1855 | "default_wpmethod": "CR50, jumper",
1856 | "default_rwLegacy": true,
1857 | "default_fullrom": true,
1858 | "default_windows": "Audio driver is paid.",
1859 | "default_mac": "No MacOS support.",
1860 | "default_linux": "Speakers are not working currently.",
1861 | "devices": [
1862 | {
1863 | "device": [
1864 | "Acer Chromebook Spin 514 [CP514-3H, CP514-3HH, CP514-3WH]"
1865 | ],
1866 | "boardname": "DEWATT"
1867 | },
1868 | {
1869 | "device": [
1870 | "HP Elite c645 G2 Chromebook"
1871 | ],
1872 | "boardname": "NIPPERKIN"
1873 | }
1874 | ]
1875 | },
1876 | {
1877 | "name": "AMD Mendocino",
1878 | "default_wpmethod": "CR50, jumper",
1879 | "default_rwLegacy": true,
1880 | "default_fullrom": true,
1881 | "default_windows": "Audio driver is paid.",
1882 | "default_mac": "No MacOS support.",
1883 | "default_linux": "A recent kernel (6.8+) is needed for headphones to work.",
1884 | "devices": [
1885 | {
1886 | "device": [
1887 | "TBD"
1888 | ],
1889 | "boardname": "CRYSTALDRIFT"
1890 | },
1891 | {
1892 | "device": [
1893 | "Asus Chromebook CM34 Flip"
1894 | ],
1895 | "boardname": "FROSTFLOW"
1896 | },
1897 | {
1898 | "device": [
1899 | "Acer Chromebook Plus 514"
1900 | ],
1901 | "boardname": "MARKARTH"
1902 | },
1903 | {
1904 | "device": [
1905 | "Dell Latitude 3445 Chromebook"
1906 | ],
1907 | "boardname": "WHITERUN"
1908 | }
1909 | ]
1910 | }
1911 | ]
--------------------------------------------------------------------------------