Coder Social home page Coder Social logo

libwrt-op / openwrt-6.x Goto Github PK

View Code? Open in Web Editor NEW
23.0 5.0 36.0 228.68 MB

This repository is a mirror of https://git.openwrt.org/openwrt/openwrt.git It is for reference only and is not active for check-ins. We will continue to accept Pull Requests here. They will be merged via staging trees then into openwrt.git.

License: Other

Makefile 17.81% Shell 6.56% Roff 8.49% Awk 0.02% C 61.88% Assembly 1.34% UnrealScript 0.31% CMake 0.02% M4 0.24% Perl 2.39% Python 0.47% Lex 0.06% Yacc 0.10% C++ 0.31%

openwrt-6.x's Introduction

适用于 IPQ系列设备的 OpenWrt 源码仓库

注意

  1. 不要用 root 用户进行编译
  2. 国内用户编译前最好准备好梯子
  3. 默认登陆IP 192.168.1.1 密码 password

编译命令

  1. 首先装好 Linux 系统, Ubuntu 20.04 LTS

  2. 安装编译依赖

    sudo apt update -y
    sudo apt full-upgrade -y
    sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
    bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
    git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
    libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
    mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip libpython3-dev qemu-utils \
    rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev
  3. 下载源代码,更新 feeds 并选择配置

    git clone --depth 1 -b main --single-branch https://github.com/LiBwrt-op/openwrt-6.x.git
    cd openwrt-6.x
    ./scripts/feeds update -a && ./scripts/feeds install -a
    make menuconfig
  4. 下载 dl 库,编译固件 (-j 后面是线程数,为便于排除错误推荐用单线程)

    make download -j8
    make -j1 V=s
  5. 二次编译:

    cd openwrt-6.x
    git fetch && git reset --hard origin/main
    ./scripts/feeds update -a && ./scripts/feeds install -a
    make menuconfig
    make V=s -j$(nproc)
  6. 如果需要重新配置:

    rm -rf .config
    make menuconfig
    make V=s -j$(nproc)
  7. 编译完成后输出路径:bin/targets

openwrt-6.x's People

Contributors

juhosg avatar ffainelli avatar jow- avatar hauke avatar nbd168 avatar kaloz avatar dangowrt avatar kanjimonster avatar adschm avatar ansuel avatar lperkov avatar blocktrron avatar mkresin avatar neheb avatar qosmio avatar noltari avatar rmilecki avatar chunkeey avatar embeem avatar robimarko avatar dedeckeh avatar ynezz avatar polynomialdivision avatar blogic avatar graysky2 avatar wigyori avatar stintel avatar ldir-edb0 avatar acoul avatar aparcar avatar

Stargazers

 avatar  avatar Roc.Lai avatar  avatar PTPT52 avatar  avatar Hom avatar FunnyFly avatar Chris Glint avatar  avatar  avatar  avatar luomo avatar Mr.Zhou avatar ruabbit avatar  avatar  avatar  avatar  avatar BAWANGLONG avatar  avatar m0eak avatar  avatar

Watchers

Lucian avatar hzjnet avatar  avatar  avatar  avatar

openwrt-6.x's Issues

passwall有问题,开远程dns没网

不管是哪个版本的passwall,只要下面选远程dns,浏览器就没网了,微信qq这些软件还有网,这个bug目前来看只有ax5机型有
20240615195942

qca-nss-ecm comiplation error on ipq60xx-6.6

Describe the bug

./feeds/nss_packages/qca/qca-nss-ecm/patches/0001-treewide-componentize-the-module-even-more.patch needs to be ported to 6.6.
图片

OpenWrt version

compilation error on main branch

OpenWrt release

compilation error on main branch

OpenWrt target/subtarget

IPQ60xx

Device

Multiple devices

Image kind

Self-built image

Steps to reproduce

No response

Actual behaviour

No response

Expected behaviour

No response

Additional info

No response

Diffconfig

No response

Terms

  • I am reporting an issue for OpenWrt, not an unsupported fork.

Redmi AX6 大分区Uboot下刷入后无法启动。

情况如题,mtd情况如下:
dev: size erasesize name
mtd0: 00100000 00020000 "0:sbl1"
mtd1: 00100000 00020000 "0:mibib"
mtd2: 00300000 00020000 "0:qsee"
mtd3: 00080000 00020000 "0:devcfg"
mtd4: 00080000 00020000 "0:rpm"
mtd5: 00080000 00020000 "0:cdt"
mtd6: 00080000 00020000 "0:appsblenv"
mtd7: 00100000 00020000 "0:appsbl"
mtd8: 00080000 00020000 "0:art"
mtd9: 00080000 00020000 "bdata"
mtd10: 00080000 00020000 "crash"
mtd11: 00080000 00020000 "crash_syslog"
mtd12: 06640000 00020000 "rootfs"
mtd13: 00080000 00020000 "rsvd0"

opkg 上游是否不支持IPQ60xx ?

作者你好,用你的仓库编译固件(JDC AX1800 Pro, IPQ60xx系列)后,发现 opkg update 报错:

root@OpenWrt:/var/log/smartdns# opkg update
Downloading https://mirrors.vsean.net/openwrt/snapshots/targets/qualcommax/ipq60xx/packages/Packages.gz
*** Failed to download the package list from https://mirrors.vsean.net/openwrt/snapshots/targets/qualcommax/ipq60xx/packages/Packages.gz

Downloading https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/base/Packages.gz
Updated list of available packages in /var/opkg-lists/libwrt_base
Downloading https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/luci/Packages.gz
Updated list of available packages in /var/opkg-lists/libwrt_luci
Downloading https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/nss_packages/Packages.gz
*** Failed to download the package list from https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/nss_packages/Packages.gz

Downloading https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/libwrt_packages
Downloading https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/routing/Packages.gz
Updated list of available packages in /var/opkg-lists/libwrt_routing
Downloading https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/sqm_scripts_nss/Packages.gz
*** Failed to download the package list from https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/sqm_scripts_nss/Packages.gz

Downloading https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/telephony/Packages.gz
Updated list of available packages in /var/opkg-lists/libwrt_telephony
Collected errors:
 * opkg_download: Failed to download https://mirrors.vsean.net/openwrt/snapshots/targets/qualcommax/ipq60xx/packages/Packages.gz, wget returned 8.
 * opkg_download: Failed to download https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/nss_packages/Packages.gz, wget returned 8.
 * opkg_download: Failed to download https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/sqm_scripts_nss/Packages.gz, wget returned 8.

排查后发现,失败的这些 url 在 immortalwrt 中并不存在。

/etc/opkg/distfeeds.conf 如下:

#src/gz libwrt_core https://mirrors.vsean.net/openwrt/snapshots/targets/qualcommax/ipq60xx/packages
src/gz libwrt_base https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/base
src/gz libwrt_luci https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/luci
#src/gz libwrt_nss_packages https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/nss_packages
src/gz libwrt_packages https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/packages
src/gz libwrt_routing https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/routing
#src/gz libwrt_sqm_scripts_nss https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/sqm_scripts_nss
src/gz libwrt_telephony https://mirrors.vsean.net/openwrt/snapshots/packages/aarch64_cortex-a53/telephony

注释掉的三条即报错的项目,这三项是否非必须的包?如果是必须的包,那正确的url是什么呢?

谢谢回复。

本地编译feeds的依赖找不到

WARNING: Makefile 'package/feeds/telephony/freeswitch/Makefile' has a dependency on 'libpcre', which does not exist

多次尝试无果,直接进行编译报错

no wifi 的M2 安装 zerotier缺少依赖无法安装

Describe the bug

依赖的软件包 libstdcpp6 在所有仓库都未提供

OpenWrt version

6.6.2

OpenWrt release

R2024-05-06 03:44:22 for IPQ60XX

OpenWrt target/subtarget

R2024-05-06 03:44:22 for IPQ60XX

Device

M2

Image kind

Official downloaded image

Steps to reproduce

No response

Actual behaviour

No response

Expected behaviour

No response

Additional info

No response

Diffconfig

No response

Terms

  • I am reporting an issue for OpenWrt, not an unsupported fork.

IPQ60xx编译正常,但是编译R7800时出现找不到nss_arch.h错误

make -C "/openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-6.6.40" NSS_DRV_CLMAP_ENABLE=n NSS_DRV_DTLS_ENABLE=n NSS_DRV_GRE_REDIR_ENABLE=n NSS_DRV_GRE_TUNNEL_ENABLE=n NSS_DRV_IPV4_REASM_ENABLE=n NSS_DRV_IPV6_REASM_ENABLE=n NSS_DRV_LAG_ENABLE=n NSS_DRV_OAM_ENABLE=n NSS_DRV_PORTID_ENABLE=n NSS_DRV_QRFS_ENABLE=n NSS_DRV_QVPN_ENABLE=n NSS_DRV_OVPN_ENABLE=n NSS_DRV_SJACK_ENABLE=n NSS_DRV_TLS_ENABLE=n NSS_DRV_TRUSTSEC_ENABLE=n NSS_DRV_TRUSTSEC_RX_ENABLE=n NSS_DRV_TSTAMP_ENABLE=n NSS_DRV_VLAN_ENABLE=n NSS_DRV_WIFI_EXT_VDEV_ENABLE=n NSS_DRV_UDP_ST_ENABLE=n NSS_DRV_CAPWAP_ENABLE=n NSS_DRV_LSO_RX_ENABLE=n NSS_DRV_WIFI_LEGACY_ENABLE=n CROSS_COMPILE="arm-openwrt-linux-muslgnueabi-" ARCH="arm" M="/openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-12.5.2024.04.0653a0dc1" EXTRA_CFLAGS="-I/openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/usr/include/qca-nss-dp -I/openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/usr/include/qca-ssdk -Wno-unused-variable -Wno-enum-conversion -DNSS_MEM_PROFILE_MEDIUM" SoC= KCFLAGS="-fmacro-prefix-map=/openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi=target-arm_cortex-a15+neon-vfpv4_musl_eabi -fno-caller-saves " HOSTCFLAGS="-O2 -I/openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/staging_dir/host/include -I/openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/staging_dir/hostpkg/include -I/openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/host/include -Wall -Wmissing-prototypes -Wstrict-prototypes" CROSS_COMPILE="arm-openwrt-linux-muslgnueabi-" ARCH="arm" KBUILD_HAVE_NLS=no KBUILD_BUILD_USER="" KBUILD_BUILD_HOST="" KBUILD_BUILD_TIMESTAMP="Thu Jul 18 10:16:03 2024" KBUILD_BUILD_VERSION="0" KBUILD_HOSTLDFLAGS="-L/openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/staging_dir/host/lib" CONFIG_SHELL="bash" V='' cmd_syscalls= KBUILD_EXTRA_SYMBOLS="/openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/symvers/cryptodev-linux.symvers /openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/symvers/gpio-button-hotplug.symvers /openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/symvers/fullconenat-nft.symvers" CC="ccache arm-openwrt-linux-muslgnueabi-gcc" KERNELRELEASE=6.6.40 modules
make[4]: Entering directory '/openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-6.6.40'
CC [M] /openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-12.5.2024.04.06
53a0dc1/nss_cmn.o
In file included from /openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-12.5.2024.04.0653a0dc1/nss_core.h:40,
from /openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-12.5.2024.04.06
53a0dc1/nss_hal/include/nss_hal.h:29,
from /openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-12.5.2024.04.0653a0dc1/nss_tx_rx_common.h:25,
from /openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-12.5.2024.04.06
53a0dc1/nss_cmn.c:26:
/openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-12.5.2024.04.0653a0dc1/exports/nss_api_if.h:36:10: fatal error: nss_arch.h: No such file or directory
36 | #include "nss_arch.h"
| ^~~~~~~~~~~~
compilation terminated.
make[6]: *** [scripts/Makefile.build:243: /openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-12.5.2024.04.06
53a0dc1/nss_cmn.o] Error 1
make[5]: *** [/openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-6.6.40/Makefile:1921: /openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-12.5.2024.04.0653a0dc1] Error 2
make[4]: *** [Makefile:234: __sub-make] Error 2
make[4]: Leaving directory '/openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-6.6.40'
make[3]: *** [Makefile:360: /openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-12.5.2024.04.06
53a0dc1/.built] Error 2
make[3]: Leaving directory '/openwrt/openwrt-6.x-nss-git-breeze303-20240718-fLiBwrt-2-ipq806x/feeds/nss_packages/qca-nss-drv'
time: package/feeds/nss_packages/qca-nss-drv/compile#1.05#0.20#1.27
ERROR: package/feeds/nss_packages/qca-nss-drv failed to build.
make[2]: *** [package/Makefile:173: package/feeds/nss_packages/qca-nss-drv/compile] Error 1

编译报错

Building backport-include/backport/autoconf.h ... done.
CC [M] /home/zqinking/ax1800pro/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/mac80211-regular/backports-6.6.15/drivers/net/wireless/ath/ath11k/core.o
In file included from /home/zqinking/ax1800pro/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/mac80211-regular/backports-6.6.15/drivers/net/wireless/ath/ath11k/core.h:33,
from /home/zqinking/ax1800pro/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/mac80211-regular/backports-6.6.15/drivers/net/wireless/ath/ath11k/core.c:13:
/home/zqinking/ax1800pro/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/mac80211-regular/backports-6.6.15/drivers/net/wireless/ath/ath11k/nss.h:11:10: fatal error: nss_api_if.h: No such file or directory
11 | #include <nss_api_if.h>
| ^~~~~~~~~~~~~~
compilation terminated.
make[11]: *** [scripts/Makefile.build:243: /home/zqinking/ax1800pro/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/mac80211-regular/backports-6.6.15/drivers/net/wireless/ath/ath11k/core.o] Error 1
make[10]: *** [scripts/Makefile.build:480: /home/zqinking/ax1800pro/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/mac80211-regular/backports-6.6.15/drivers/net/wireless/ath/ath11k] Error 2
make[9]: *** [scripts/Makefile.build:480: /home/zqinking/ax1800pro/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/mac80211-regular/backports-6.6.15/drivers/net/wireless/ath] Error 2
make[8]: *** [scripts/Makefile.build:480: /home/zqinking/ax1800pro/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/mac80211-regular/backports-6.6.15/drivers/net/wireless] Error 2
make[7]: *** [Makefile:1913: /home/zqinking/ax1800pro/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/mac80211-regular/backports-6.6.15] Error 2
make[6]: *** [Makefile.build:13: modules] Error 2
make[5]: *** [Makefile.real:105: modules] Error 2
make[4]: *** [Makefile:121: modules] Error 2
make[4]: Leaving directory '/home/zqinking/ax1800pro/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/mac80211-regular/backports-6.6.15'
make[3]: *** [Makefile:448: /home/zqinking/ax1800pro/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/mac80211-regular/backports-6.6.15/.built] Error 2
make[3]: Leaving directory '/home/zqinking/ax1800pro/openwrt/package/kernel/mac80211'
time: package/kernel/mac80211/regular/compile#1.15#0.23#1.35
ERROR: package/kernel/mac80211 failed to build (build variant: regular).
make[2]: *** [package/Makefile:173: package/kernel/mac80211/compile] Error 1
make[2]: Leaving directory '/home/zqinking/ax1800pro/openwrt'
make[1]: *** [package/Makefile:167: /home/zqinking/ax1800pro/openwrt/staging_dir/target-aarch64_cortex-a53_musl/stamp/.package_compile] Error 2
make[1]: Leaving directory '/home/zqinking/ax1800pro/openwrt'
make: *** [/home/zqinking/ax1800pro/openwrt/include/toplevel.mk:233: world] Error 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.