├── .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 | ] --------------------------------------------------------------------------------