언제나 그렇듯 기본도형으로 시작!

sculpt mode

왼쪽 툴바에서 중간쯤에 가위 있는거 꾸욱 누르면 box trim

 

드래그해서 자를 곳을 찾으면

 

뿅~ 이걸로 이제 소방관 다리 찢어야지 ㅋㅋㅋ

[링크 : https://www.youtube.com/shorts/u1dm7jYhL-Q]

Posted by 구차니

와.. 쩜 누르면 된다.(keypad)

 

 

처음 추가된 녀석이 중심

 

object mode에서 다른 cube 선택하고

 

키패드 . 을 누르면 얼빡!

 

축소해서 회전해보면 딱 얘가 중심에 잡힌다.

'프로그램 사용 > Blender' 카테고리의 다른 글

blender sculpting - trim  (0) 2026.09.04
blender spot light  (0) 2026.09.04
blender eevee / cycle 렌더 헤드리스  (0) 2026.09.04
blender 창 나누기. 카메라 뷰 보기  (0) 2026.08.28
blender sculpting - dynatopo, grab  (0) 2026.08.06
Posted by 구차니

이전 렌더링에서 빛이 산란하지 않고 그냥 레이저 처럼 직사로 와서

그림자가 완전 각지는 문제가 있었는데

그걸 이렇게 하면 좀 부드럽게 퍼진다고 한다.

 

아래는 claude 가 개선한 코드인데

        light_data.energy = random.uniform(*LIGHT_ENERGY_RANGE)
        light_data.shadow_soft_size = random.uniform(*LIGHT_SHADOW_SOFT_SIZE_RANGE)
        light_data.spot_size = random.uniform(*LIGHT_SPOT_SIZE_RANGE)
        light_data.spot_blend = random.uniform(*LIGHT_SPOT_BLEND_RANGE)

 

energy는 power에 대응되는것 같고, shadow_soft_size는 radius에 대응되는것 같다.

아 쫌 용어 통일하라고 ㅠㅠ api에 맞추던가 아니면 api를 ui에 맞추던가!

energy
The energy this light would emit over its entire area if it wasn’t limited by the spot angle, in units of radiant power (W) (in [-inf, inf], default 10.0)

shadow_soft_size
Light size for ray shadow sampling (Raytraced shadows) (in [0, inf], default 0.0)

spot_size
Angular diameter of the spotlight beam (in [0.0174533, 3.14159], default 0.785398)

spot_blend
The softness of the spotlight edge (in [0, 1], default 0.15)

[링크 : https://docs.blender.org/api/current/bpy.types.SpotLight.html]

 

 

초기값

 

power 올림

 

 

radius 0.2로 변경

 

 

Posted by 구차니

노트북에서는 오히려 학습 데이터 생성이 빠른데

데스크탑에서 느려서 확인해보니

 

노트북에서는 이렇게 nvtop 돌리니까 gpu를 사용한다.

 

아무튼.. claude 말로는 cycles 돌리면 빨라진다는데 흐음.. cycles는 raytracing쪽 설정때문에 잘 모르겠던데..

 

eevee는 gpu 렌더러라 gpu가 없으면 작동안한다고. 그런데 왜.. headless 구성에 영향을 받지?

EEVEE is a GPU renderer. You cannot use it without a GPU. It can only use GPU to render, doesn't even support CPU rendering. This means it uses whatever week GPU you have and, sure it can run out of memory and stop being able to cope very quickly.   CommentedDec 15, 2024 at 16:42

[링크 : https://blender.stackexchange.com/questions/328484/when-using-rendering-in-blender-using-eevee-without-a-gpu-does-lighting-behave]

[링크 : https://blender.stackexchange.com/questions/230728/is-there-no-way-of-rendering-headless-using-eevee]

 

CPU Rendering
Being a rasterization engine, EEVEE only uses the power of the GPU to render. There is no plan to support CPU (software) rendering as it would be very inefficient. CPU power is still needed to handle high scene complexity as the geometry must be prepared by the CPU before rendering each frame.

[링크 : https://docs.blender.org/manual/en/latest/render/eevee/limitations/limitations.html#cpu-rendering]

 

 

아무튼 bpy 에서는 아래처럼 cycles를 설정하면 헤드리스 설정이라도 gpu 가속 잘 받는다고

scene = bpy.context.scene

scene.render.engine = "CYCLES"
scene.cycles.device = "GPU"
scene.cycles.samples = CYCLES_SAMPLES
scene.cycles.use_denoising = CYCLES_USE_DENOISING

'프로그램 사용 > Blender' 카테고리의 다른 글

blender 객체 중심에 오게 하기  (0) 2026.09.04
blender spot light  (0) 2026.09.04
blender 창 나누기. 카메라 뷰 보기  (0) 2026.08.28
blender sculpting - dynatopo, grab  (0) 2026.08.06
blender 5.x sculpting  (0) 2026.07.29
Posted by 구차니
프로그램 사용/Blender2026. 8. 28. 10:45

창을 띄우고 모델을 불러오고

 

창 크기 조절하듯 경계선 밖에 가서 + 로 커서가 바뀌었을 때 우클릭하면

 

아래처럼 split / join이 뜬다.

그럼 split 해주고

 

원하는 창을 나누고 클릭하면 된다.

 

오른쪽 창은 숫자키패드 0 눌러서 카메라 뷰로 바꾸고

왼쪽에서 조절하면 렌더하면서 일일이 안봐도 되서 딱이네

 

[링크 : https://kimslo.tistory.com/entry/Blender-화면나누기-화면합치기]

'프로그램 사용 > Blender' 카테고리의 다른 글

blender spot light  (0) 2026.09.04
blender eevee / cycle 렌더 헤드리스  (0) 2026.09.04
blender sculpting - dynatopo, grab  (0) 2026.08.06
blender 5.x sculpting  (0) 2026.07.29
blender export render/viewport  (0) 2026.07.29
Posted by 구차니
프로그램 사용/ros2026. 8. 18. 15:50

일단 오랫만에 하려니 까먹었..

2760p에서 SSD 뽑아서 옮기고 하는데 먼가 잘 안되네..

source /opt/ros/humble/setup.bash
cd ros2_ws/
~/ros2_ws$ source install/setup.bash 
~/ros2_ws$ ros2 launch kinect2_bridge kinect2_bridge_launch.yaml
[INFO] [launch]: All log files can be found below /home/minimonk/.ros/log/2026-08-18-14-47-28-206839-minimonk-HP-EliteBook-2760p-2683
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [kinect2_bridge_node-1]: process started with pid [2684]
[INFO] [point_cloud_xyzrgb_node-2]: process started with pid [2686]
[kinect2_bridge_node-1] [INFO] [1787032048.561620321] [kinect2_bridge_node]: parameter:
[kinect2_bridge_node-1]         base_name: kinect2
[kinect2_bridge_node-1]            sensor: default
[kinect2_bridge_node-1]         fps_limit: 30
[kinect2_bridge_node-1]        calib_path: /home/minimonk/ros2_ws/src/kinect2_ros2/kinect2_bridge/data/
[kinect2_bridge_node-1]           use_png: false
[kinect2_bridge_node-1]      jpeg_quality: 90
[kinect2_bridge_node-1]         png_level: 1
[kinect2_bridge_node-1]      depth_method: cpu
[kinect2_bridge_node-1]      depth_device: -1
[kinect2_bridge_node-1]        reg_method: default
[kinect2_bridge_node-1]        reg_device: -1
[kinect2_bridge_node-1]         max_depth: 12
[kinect2_bridge_node-1]         min_depth: 0.1
[kinect2_bridge_node-1]        queue_size: 5
[kinect2_bridge_node-1]  bilateral_filter: true
[kinect2_bridge_node-1] edge_aware_filter: true
[kinect2_bridge_node-1]        publish_tf: true
[kinect2_bridge_node-1]      base_name_tf: kinect2
[kinect2_bridge_node-1]    worker_threads: 4
[kinect2_bridge_node-1] libva info: VA-API version 1.14.0
[kinect2_bridge_node-1] libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
[kinect2_bridge_node-1] libva info: Found init function __vaDriverInit_1_14
[kinect2_bridge_node-1] libva info: va_openDriver() returns 0
[kinect2_bridge_node-1] [INFO] [1787032048.795488827] [kinect2_bridge_node]: Kinect2 devices found: 
[kinect2_bridge_node-1] [INFO] [1787032048.795526124] [kinect2_bridge_node]:   0: 501441643042 (selected)
[kinect2_bridge_node-1] [INFO] [1787032048.883343429] [kinect2_bridge_node]: starting kinect2
[kinect2_bridge_node-1] [INFO] [1787032049.528036575] [kinect2_bridge_node]: device serial: 501441643042
[kinect2_bridge_node-1] [INFO] [1787032049.528089258] [kinect2_bridge_node]: device firmware: 4.0.3911.0
[kinect2_bridge_node-1] [WARN] [1787032049.775072554] [kinect2_bridge_node]: using sensor defaults for color intrinsic parameters.
[kinect2_bridge_node-1] [WARN] [1787032049.775198004] [kinect2_bridge_node]: using sensor defaults for ir intrinsic parameters.
[kinect2_bridge_node-1] [WARN] [1787032049.775233483] [kinect2_bridge_node]: using defaults for rotation and translation.
[kinect2_bridge_node-1] [WARN] [1787032049.775264689] [kinect2_bridge_node]: using defaults for depth shift.
[kinect2_bridge_node-1] [INFO] [1787032049.797677152] [kinect2_bridge_node]: Using CPU registration method!
[kinect2_bridge_node-1] [INFO] [1787032049.797721040] [kinect2_bridge_node]: Using CPU registration method!
[kinect2_bridge_node-1] [INFO] [1787032049.814391118] [kinect2_bridge_node]: waiting for clients to connect
[kinect2_bridge_node-1] [INFO] [1787032050.806967850] [kinect2_bridge_node]: client connected. starting device...
[kinect2_bridge_node-1] [INFO] [1787032054.197297612] [kinect2_bridge_node]: depth processing: ~570.346ms (~1.75332Hz) publishing rate: ~4.98921Hz
[kinect2_bridge_node-1] [INFO] [1787032054.197366612] [kinect2_bridge_node]: color processing: ~4.93251ms (~202.736Hz) publishing rate: ~4.98921Hz
[kinect2_bridge_node-1] [INFO] [1787032057.202601972] [kinect2_bridge_node]: depth processing: ~1013.64ms (~0.986545Hz) publishing rate: ~3.99293Hz
[kinect2_bridge_node-1] [INFO] [1787032057.202648584] [kinect2_bridge_node]: color processing: ~3.8534ms (~259.511Hz) publishing rate: ~3.99293Hz

 

기존 i5-2520m 대비 오르긴 했는데.. 일단 CPU 로 해서 그런가 획기적으로 오르진 않았다.

[kinect2_bridge_node-1] [INFO] [1783770781.952362253] [kinect2_bridge_node]: depth processing: ~454.726ms (~2.19912Hz) publishing rate: ~2.99997Hz
[kinect2_bridge_node-1] [INFO] [1783770781.952462142] [kinect2_bridge_node]: color processing: ~13.8091ms (~72.4159Hz) publishing rate: ~11.9999Hz
[kinect2_bridge_node-1] [INFO] [1783770784.961367722] [kinect2_bridge_node]: depth processing: ~1429.33ms (~0.69963Hz) publishing rate: ~2.65869Hz
[kinect2_bridge_node-1] [INFO] [1783770784.961457981] [kinect2_bridge_node]: color processing: ~18.3239ms (~54.5735Hz) publishing rate: ~2.65869Hz

 

+

 다시 빌드 하고 시도

$ sudo apt install gcc-10 g++-10
$ git clone --depth 1 https://github.com/NVIDIA/cuda-samples.git
$ cd cuda-samples/Common
$ sudo cp helper_math.h /usr/include

$ cd ~/src/libfreenect
$ mkdir build_cuda
$ cd build_cuda
$ cmake .. -DENABLE_CUDA=ON -DCUDA_HOST_COMPILER=/usr/bin/gcc-10
$ sudo make install

~/ros2_ws$ colcon build --symlink-install
~/ros2_ws$ vi ./src/kinect2_ros2/kinect2_bridge/launch/kinect2_bridge_launch.yaml
 30         - name: "depth_method"
 31           value: "default"

 

kinect2를 인식해서 좋긴한데

dpeth_method / reg_mothod가 cpu로 돌아가는건지 cuda를 쓰는건지 모르겠다.

2% 지만 소비전류가 늘은거 보면 쓰는건 맞는거 같은데.. 성능 왜이러냐

 

$ ros2 launch kinect2_bridge kinect2_bridge_launch.yaml 
[INFO] [launch]: All log files can be found below /home/minimonk/.ros/log/2026-08-18-15-32-14-328668-minimonk-HP-EliteBook-2760p-7007
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [kinect2_bridge_node-1]: process started with pid [7008]
[INFO] [point_cloud_xyzrgb_node-2]: process started with pid [7010]
[kinect2_bridge_node-1] [INFO] [1787034734.508992751] [kinect2_bridge_node]: parameter:
[kinect2_bridge_node-1]         base_name: kinect2
[kinect2_bridge_node-1]            sensor: default
[kinect2_bridge_node-1]         fps_limit: 30
[kinect2_bridge_node-1]        calib_path: /home/minimonk/ros2_ws/src/kinect2_ros2/kinect2_bridge/data/
[kinect2_bridge_node-1]           use_png: false
[kinect2_bridge_node-1]      jpeg_quality: 90
[kinect2_bridge_node-1]         png_level: 1
[kinect2_bridge_node-1]      depth_method: default
[kinect2_bridge_node-1]      depth_device: -1
[kinect2_bridge_node-1]        reg_method: default
[kinect2_bridge_node-1]        reg_device: -1
[kinect2_bridge_node-1]         max_depth: 12
[kinect2_bridge_node-1]         min_depth: 0.1
[kinect2_bridge_node-1]        queue_size: 5
[kinect2_bridge_node-1]  bilateral_filter: true
[kinect2_bridge_node-1] edge_aware_filter: true
[kinect2_bridge_node-1]        publish_tf: true
[kinect2_bridge_node-1]      base_name_tf: kinect2
[kinect2_bridge_node-1]    worker_threads: 4
[kinect2_bridge_node-1] libva info: VA-API version 1.14.0
[kinect2_bridge_node-1] libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
[kinect2_bridge_node-1] libva info: Found init function __vaDriverInit_1_14
[kinect2_bridge_node-1] libva info: va_openDriver() returns 0
[kinect2_bridge_node-1] [INFO] [1787034735.139375282] [kinect2_bridge_node]: Kinect2 devices found
[kinect2_bridge_node-1] [INFO] [1787034735.139436224] [kinect2_bridge_node]:   0: 501441643042 (selected)
[kinect2_bridge_node-1] [INFO] [1787034735.225374525] [kinect2_bridge_node]: starting kinect2
[kinect2_bridge_node-1] [INFO] [1787034735.540712973] [kinect2_bridge_node]: device serial: 501441643042
[kinect2_bridge_node-1] [INFO] [1787034735.540771176] [kinect2_bridge_node]: device firmware: 4.0.3911.0
[kinect2_bridge_node-1] [INFO] [1787034735.772433213] [kinect2_bridge_node]: Using CPU registration method!
[kinect2_bridge_node-1] [INFO] [1787034735.772485273] [kinect2_bridge_node]: Using CPU registration method!
[kinect2_bridge_node-1] [INFO] [1787034735.787628318] [kinect2_bridge_node]: waiting for clients to connect
[kinect2_bridge_node-1] [INFO] [1787034736.781245426] [kinect2_bridge_node]: client connected. starting device...
[kinect2_bridge_node-1] [INFO] [1787034740.153039579] [kinect2_bridge_node]: depth processing: ~614.366ms (~1.6277Hz) publishing rate: ~5.31568Hz
[kinect2_bridge_node-1] [INFO] [1787034740.153092716] [kinect2_bridge_node]: color processing: ~4.92322ms (~203.119Hz) publishing rate: ~3.98676Hz
[kinect2_bridge_node-1] [INFO] [1787034743.162903904] [kinect2_bridge_node]: depth processing: ~970.624ms (~1.03026Hz) publishing rate: ~3.98689Hz
[kinect2_bridge_node-1] [INFO] [1787034743.162966773] [kinect2_bridge_node]: color processing: ~4.06577ms (~245.956Hz) publishing rate: ~3.98689Hz

 

흐음.. 되는게 없네. 비율이 왜이러냐..

 

 

cd ~/src/libfreenect2/build_cuda
cmake .. -DENABLE_CUDA=ON -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda -DCUDA_HOST_COMPILER=/usr/bin/gcc-10 -DENABLE_VAAPI=OFF
make -j$(nproc)
sudo make install

 

빌드 없이 임시로

$ LIBVA_DRIVER_NAME=dummy ros2 launch kinect2_bridge kinect2_bridge_launch.yaml

 

depthcloud 추가

 

경고가 뜨는데 아마도.. 원래 상정된거랑 다른 topic이라 그런듯

그러니 Depth Map Topic과 Color Image Topic을 지정해주면

 

아래처럼 먼가 컬러로 나오긴 한다.

 

근데 slam은 어떻게 하지?

위에꺼 실행해두고, 아래꺼 하면 아무것도 안나오는데...

ros2 run tf2_ros tf2_echo kinect2_link kinect2_rgb_optical_frame


ros2 launch rtabmap_launch rtabmap.launch.py \
    rgb_topic:=/kinect2/color/image \
    depth_topic:=/kinect2/depth/image \
    camera_info_topic:=/kinect2/color/camera_info

 

Posted by 구차니
프로그램 사용/udev2026. 8. 14. 14:47

udev는 user space device 라고 해야하나.. 아무튼 좋은거(!)

아래 경로에 설정 파일들이 있고

 /etc/udev/rules.d/

 

이전에 추가되었던것들 열어보면 아래와 같은 내용들이 있어서

해당되는 VID나 PID가 존재하면 옵션에 따라 장치를 생성해준다.

$ cat 90-kinect2.rules 
# this file belongs in /etc/udev/rules.d/
# ATTR{product}=="Kinect2"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02c4", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02d8", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02d9", MODE="0666"

 

아래는 digilient analog discovery 꺼. 이건.. RUN 이라는게 보이네

$ cat 52-digilent-usb.rules
ATTR{idVendor}=="1443", MODE:="666"
ACTION=="add", ATTR{idVendor}=="0403", ATTR{manufacturer}=="Digilent", MODE:="666", RUN+="/usr/sbin/dftdrvdtch %s{busnum} %s{devnum}"

 

요건 stlink. 어떤 장치명으로 붙게 하려고 이렇게 하나본데..

$ cat 49-stlinkv1.rules
# stm32 discovery boards, with onboard st/linkv1
# ie, STM32VL.

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3744", \
    MODE="660", GROUP="plugdev", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1", \
    SYMLINK+="stlinkv1_%n"

$ cat 49-stlinkv2.rules 
# stm32 discovery boards, with onboard st/linkv2
# ie, STM32L, STM32F4.

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", \
    MODE:="0666", \
    SYMLINK+="stlinkv2_%n"

$ cat 49-stlinkv2-1.rules 
# stm32 nucleo boards, with onboard st/linkv2-1
# ie, STM32F0, STM32F4.

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", \
    MODE:="0666", \
    SYMLINK+="stlinkv2-1_%n"

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3752", \
    MODE:="0666", \
    SYMLINK+="stlinkv2-1_%n"

 

stlinkv2 규칙에 의해서 붙었나 보다.

$ ls -al /dev/stlinkv2_2 
lrwxrwxrwx 1 root root 15  8월 14 14:55 /dev/stlinkv2_2 -> bus/usb/001/021

 

 

udev 관리용 유틸리티 옵션

$ udevadm --help
udevadm [--help] [--version] [--debug] COMMAND [COMMAND OPTIONS]

Send control commands or test the device manager.

Commands:
  info          Query sysfs or the udev database
  trigger       Request events from the kernel
  settle        Wait for pending udev events
  control       Control the udev daemon
  monitor       Listen to kernel and udev events
  test          Test an event run
  test-builtin  Test a built-in command

See the udevadm(8) man page for details.

 

$ udevadm info  --help
udevadm info [OPTIONS] [DEVPATH|FILE]

Query sysfs or the udev database.

  -h --help                   Print this message
  -V --version                Print version of the program
  -q --query=TYPE             Query device information:
       name                     Name of device node
       symlink                  Pointing to node
       path                     sysfs device path
       property                 The device properties
       all                      All values
  -p --path=SYSPATH           sysfs device path used for query or attribute walk
  -n --name=NAME              Node or symlink name used for query or attribute walk
  -r --root                   Prepend dev directory to path names
  -a --attribute-walk         Print all key matches walking along the chain of parent devices
  -d --device-id-of-file=FILE Print major:minor of device containing this file
  -x --export                 Export key/value pairs
  -P --export-prefix          Export the key name with a prefix
  -e --export-db              Export the content of the udev database
  -c --cleanup-db             Clean up the udev database
  -w --wait-for-initialization[=SECONDS]
                              Wait for device to be initialized

 

$ udevadm trigger --help
udevadm trigger [OPTIONS] DEVPATH

Request events from the kernel.

  -h --help                         Show this help
  -V --version                      Show package version
  -v --verbose                      Print the list of devices while running
  -n --dry-run                      Do not actually trigger the events
  -q --quiet                        Suppress error logging in triggering events
  -t --type=                        Type of events to trigger
          devices                     sysfs devices (default)
          subsystems                  sysfs subsystems and drivers
  -c --action=ACTION|help           Event action value, default is "change"
  -s --subsystem-match=SUBSYSTEM    Trigger devices from a matching subsystem
  -S --subsystem-nomatch=SUBSYSTEM  Exclude devices from a matching subsystem
  -a --attr-match=FILE[=VALUE]      Trigger devices with a matching attribute
  -A --attr-nomatch=FILE[=VALUE]    Exclude devices with a matching attribute
  -p --property-match=KEY=VALUE     Trigger devices with a matching property
  -g --tag-match=TAG                Trigger devices with a matching tag
  -y --sysname-match=NAME           Trigger devices with this /sys path
     --name-match=NAME              Trigger devices with this /dev name
  -b --parent-match=NAME            Trigger devices with that parent device
  -w --settle                       Wait for the triggered events to complete
     --wait-daemon[=SECONDS]        Wait for udevd daemon to be initialized before triggering uevents
     --uuid                         Print synthetic uevent UUID

 

$ udevadm settle --help
udevadm settle [OPTIONS]

Wait for pending udev events.

  -h --help                 Show this help
  -V --version              Show package version
  -t --timeout=SEC          Maximum time to wait for events
  -E --exit-if-exists=FILE  Stop waiting if file exists

 

$ udevadm settle --help
udevadm settle [OPTIONS]

Wait for pending udev events.

  -h --help                 Show this help
  -V --version              Show package version
  -t --timeout=SEC          Maximum time to wait for events
  -E --exit-if-exists=FILE  Stop waiting if file exists

 

$ udevadm control --help
udevadm control OPTION

Control the udev daemon.

  -h --help                Show this help
  -V --version             Show package version
  -e --exit                Instruct the daemon to cleanup and exit
  -l --log-level=LEVEL     Set the udev log level for the daemon
  -s --stop-exec-queue     Do not execute events, queue only
  -S --start-exec-queue    Execute events, flush queue
  -R --reload              Reload rules and databases
  -p --property=KEY=VALUE  Set a global property for all events
  -m --children-max=N      Maximum number of children
     --ping                Wait for udev to respond to a ping message
  -t --timeout=SECONDS     Maximum time to block for a reply

 

$ udevadm monitor --help
udevadm monitor [OPTIONS]

Listen to kernel and udev events.

  -h --help                                Show this help
  -V --version                             Show package version
  -p --property                            Print the event properties
  -k --kernel                              Print kernel uevents
  -u --udev                                Print udev events
  -s --subsystem-match=SUBSYSTEM[/DEVTYPE] Filter events by subsystem
  -t --tag-match=TAG                       Filter events by tag

 

$ udevadm test --help
udevadm test [OPTIONS] DEVPATH

Test an event run.

  -h --help                            Show this help
  -V --version                         Show package version
  -a --action=ACTION|help              Set action string
  -N --resolve-names=early|late|never  When to resolve names

 

$ udevadm test-builtin --help
udevadm test-builtin [OPTIONS] COMMAND DEVPATH

Test a built-in command.

  -h --help     Print this message
  -V --version  Print version of the program

Commands:
  blkid           Filesystem and partition probing
  btrfs           btrfs volume management
  hwdb            Hardware database
  input_id        Input device properties
  keyboard        Keyboard scan code to key mapping
  kmod            Kernel module loader
  net_id          Network device properties
  net_setup_link  Configure network link
  path_id         Compose persistent device path
  usb_id          USB device properties
  uaccess         Manage device node user ACL

 

/etc/rules.d/에 넣고 룰 갱신후 꽂혀있는 애들 중에 안된애들을 트리거 강제로 붙이기(뽑았다 꼽기 귀찮을때)

sudo udevadm control --reload-rules
sudo udevadm trigger

[링크 : https://chatgpt.com/share/6a7ea79e-3c80-83e8-b6f3-37cfcce74b1a]

 

아래는 명령어별 출력 포맷

info는 자기 자신과 부모들이 보는 정보를 출력해준다.

$ udevadm info -a /dev/ttyUSB0

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/ttyUSB0/tty/ttyUSB0':
    KERNEL=="ttyUSB0"
    SUBSYSTEM=="tty"
    DRIVER==""
    ATTR{power/async}=="disabled"
    ATTR{power/control}=="auto"
    ATTR{power/runtime_active_kids}=="0"
    ATTR{power/runtime_active_time}=="0"
    ATTR{power/runtime_enabled}=="disabled"
    ATTR{power/runtime_status}=="unsupported"
    ATTR{power/runtime_suspended_time}=="0"
    ATTR{power/runtime_usage}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/ttyUSB0':
    KERNELS=="ttyUSB0"
    SUBSYSTEMS=="usb-serial"
    DRIVERS=="cp210x"
    ATTRS{port_number}=="0"
    ATTRS{power/async}=="enabled"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_kids}=="0"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_enabled}=="disabled"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0':
    KERNELS=="1-2:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="cp210x"
    ATTRS{authorized}=="1"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bInterfaceClass}=="ff"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bInterfaceProtocol}=="00"
    ATTRS{bInterfaceSubClass}=="00"
    ATTRS{bNumEndpoints}=="02"
    ATTRS{interface}=="CP2102 USB to UART Bridge Controller"
    ATTRS{physical_location/dock}=="no"
    ATTRS{physical_location/horizontal_position}=="center"
    ATTRS{physical_location/lid}=="no"
    ATTRS{physical_location/panel}=="unknown"
    ATTRS{physical_location/vertical_position}=="center"
    ATTRS{power/async}=="enabled"
    ATTRS{power/runtime_active_kids}=="0"
    ATTRS{power/runtime_enabled}=="enabled"
    ATTRS{power/runtime_status}=="suspended"
    ATTRS{power/runtime_usage}=="0"
    ATTRS{supports_autosuspend}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-2':
    KERNELS=="1-2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{authorized}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bcdDevice}=="0100"
    ATTRS{bmAttributes}=="80"
    ATTRS{busnum}=="1"
    ATTRS{configuration}==""
    ATTRS{devnum}=="20"
    ATTRS{devpath}=="2"
    ATTRS{idProduct}=="ea60"
    ATTRS{idVendor}=="10c4"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Silicon Labs"
    ATTRS{maxchild}=="0"
    ATTRS{physical_location/dock}=="no"
    ATTRS{physical_location/horizontal_position}=="center"
    ATTRS{physical_location/lid}=="no"
    ATTRS{physical_location/panel}=="unknown"
    ATTRS{physical_location/vertical_position}=="center"
    ATTRS{power/active_duration}=="833919"
    ATTRS{power/async}=="enabled"
    ATTRS{power/autosuspend}=="2"
    ATTRS{power/autosuspend_delay_ms}=="2000"
    ATTRS{power/connected_duration}=="833919"
    ATTRS{power/control}=="on"
    ATTRS{power/level}=="on"
    ATTRS{power/persist}=="1"
    ATTRS{power/runtime_active_kids}=="0"
    ATTRS{power/runtime_active_time}=="833679"
    ATTRS{power/runtime_enabled}=="forbidden"
    ATTRS{power/runtime_status}=="active"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="1"
    ATTRS{product}=="CP2102 USB to UART Bridge Controller"
    ATTRS{quirks}=="0x0"
    ATTRS{removable}=="removable"
    ATTRS{rx_lanes}=="1"
    ATTRS{serial}=="0001"
    ATTRS{speed}=="12"
    ATTRS{tx_lanes}=="1"
    ATTRS{urbnum}=="12"
    ATTRS{version}==" 1.10"

  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1':
    KERNELS=="usb1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{authorized}=="1"
    ATTRS{authorized_default}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{bMaxPower}=="0mA"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bcdDevice}=="0608"
    ATTRS{bmAttributes}=="e0"
    ATTRS{busnum}=="1"
    ATTRS{configuration}==""
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{idProduct}=="0002"
    ATTRS{idVendor}=="1d6b"
    ATTRS{interface_authorized_default}=="1"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Linux 6.8.0-136-generic xhci-hcd"
    ATTRS{maxchild}=="12"
    ATTRS{power/active_duration}=="703559455"
    ATTRS{power/async}=="enabled"
    ATTRS{power/autosuspend}=="0"
    ATTRS{power/autosuspend_delay_ms}=="0"
    ATTRS{power/connected_duration}=="703559986"
    ATTRS{power/control}=="auto"
    ATTRS{power/level}=="auto"
    ATTRS{power/runtime_active_kids}=="3"
    ATTRS{power/runtime_active_time}=="703559815"
    ATTRS{power/runtime_enabled}=="enabled"
    ATTRS{power/runtime_status}=="active"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"
    ATTRS{power/wakeup}=="disabled"
    ATTRS{power/wakeup_abort_count}==""
    ATTRS{power/wakeup_active}==""
    ATTRS{power/wakeup_active_count}==""
    ATTRS{power/wakeup_count}==""
    ATTRS{power/wakeup_expire_count}==""
    ATTRS{power/wakeup_last_time_ms}==""
    ATTRS{power/wakeup_max_time_ms}==""
    ATTRS{power/wakeup_total_time_ms}==""
    ATTRS{product}=="xHCI Host Controller"
    ATTRS{quirks}=="0x0"
    ATTRS{removable}=="unknown"
    ATTRS{rx_lanes}=="1"
    ATTRS{serial}=="0000:00:14.0"
    ATTRS{speed}=="480"
    ATTRS{tx_lanes}=="1"
    ATTRS{urbnum}=="1823"
    ATTRS{version}==" 2.00"

  looking at parent device '/devices/pci0000:00/0000:00:14.0':
    KERNELS=="0000:00:14.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="xhci_hcd"
    ATTRS{ari_enabled}=="0"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x0c0330"
    ATTRS{consistent_dma_mask_bits}=="64"
    ATTRS{d3cold_allowed}=="1"
    ATTRS{dbc}=="disabled"
    ATTRS{dbc_bInterfaceProtocol}=="01"
    ATTRS{dbc_bcdDevice}=="0010"
    ATTRS{dbc_idProduct}=="0010"
    ATTRS{dbc_idVendor}=="1d6b"
    ATTRS{dbc_poll_interval_ms}=="64"
    ATTRS{device}=="0x02ed"
    ATTRS{dma_mask_bits}=="64"
    ATTRS{driver_override}=="(null)"
    ATTRS{enable}=="1"
    ATTRS{index}=="5"
    ATTRS{irq}=="123"
    ATTRS{label}=="Onboard - Other"
    ATTRS{local_cpulist}=="0-7"
    ATTRS{local_cpus}=="ff"
    ATTRS{msi_bus}=="1"
    ATTRS{msi_irqs/123}=="msi"
    ATTRS{msi_irqs/124}=="msi"
    ATTRS{msi_irqs/125}=="msi"
    ATTRS{msi_irqs/126}=="msi"
    ATTRS{msi_irqs/127}=="msi"
    ATTRS{msi_irqs/128}=="msi"
    ATTRS{msi_irqs/129}=="msi"
    ATTRS{msi_irqs/130}=="msi"
    ATTRS{numa_node}=="-1"
    ATTRS{power/async}=="enabled"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_kids}=="2"
    ATTRS{power/runtime_active_time}=="703560520"
    ATTRS{power/runtime_enabled}=="enabled"
    ATTRS{power/runtime_status}=="active"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"
    ATTRS{power/wakeup}=="enabled"
    ATTRS{power/wakeup_abort_count}=="0"
    ATTRS{power/wakeup_active}=="0"
    ATTRS{power/wakeup_active_count}=="0"
    ATTRS{power/wakeup_count}=="0"
    ATTRS{power/wakeup_expire_count}=="0"
    ATTRS{power/wakeup_last_time_ms}=="0"
    ATTRS{power/wakeup_max_time_ms}=="0"
    ATTRS{power/wakeup_total_time_ms}=="0"
    ATTRS{power_state}=="D0"
    ATTRS{revision}=="0x00"
    ATTRS{subsystem_device}=="0xc832"
    ATTRS{subsystem_vendor}=="0x144d"
    ATTRS{vendor}=="0x8086"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""
    ATTRS{power/async}=="enabled"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_kids}=="10"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_enabled}=="disabled"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"
    ATTRS{waiting_for_supplier}=="0"

 

먼가 이거 udev 디버깅 메시지 같은 느낌?

앞에 보면 P N L S E가 나오는데 manpage에는 아래와 같이 정의 되어있다.

P - Path

N : Name

L : ??? (symLink Priority)

S : Symlink

E : propErty ?

$ udevadm info -q all /dev/ttyUSB0
P: /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/ttyUSB0/tty/ttyUSB0
N: ttyUSB0
L: 0
S: serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0
S: serial/by-path/pci-0000:00:14.0-usb-0:2:1.0-port0
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/ttyUSB0/tty/ttyUSB0
E: DEVNAME=/dev/ttyUSB0
E: MAJOR=188
E: MINOR=0
E: SUBSYSTEM=tty
E: USEC_INITIALIZED=702727509637
E: ID_BUS=usb
E: ID_VENDOR_ID=10c4
E: ID_MODEL_ID=ea60
E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller
E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI
E: ID_VENDOR_FROM_DATABASE=Silicon Labs
E: ID_AUTOSUSPEND=1
E: ID_MODEL_FROM_DATABASE=CP210x UART Bridge
E: ID_VENDOR=Silicon_Labs
E: ID_VENDOR_ENC=Silicon\x20Labs
E: ID_MODEL=CP2102_USB_to_UART_Bridge_Controller
E: ID_MODEL_ENC=CP2102\x20USB\x20to\x20UART\x20Bridge\x20Controller
E: ID_REVISION=0100
E: ID_SERIAL=Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001
E: ID_SERIAL_SHORT=0001
E: ID_TYPE=generic
E: ID_USB_INTERFACES=:ff0000:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=cp210x
E: ID_PATH=pci-0000:00:14.0-usb-0:2:1.0
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_1_0
E: ID_MM_CANDIDATE=1
E: ID_FOR_SEAT=tty-pci-0000_00_14_0-usb-0_2_1_0
E: DEVLINKS=/dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 /dev/serial/by-path/pci-0000:00:14.0-usb-0:2:1.0-port0
E: TAGS=:snap_cups_ippeveprinter:systemd:snap_cups_cupsd:seat:uaccess:
E: CURRENT_TAGS=:snap_cups_ippeveprinter:systemd:snap_cups_cupsd:seat:uaccess:

 

$ udevadm info -q name /dev/ttyUSB0
ttyUSB0

 

$ udevadm info -q symlink /dev/ttyUSB0
serial/by-path/pci-0000:00:14.0-usb-0:2:1.0-port0 serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0

 

$ udevadm info -q path /dev/ttyUSB0
/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/ttyUSB0/tty/ttyUSB0

 

$ udevadm info -q property /dev/ttyUSB0
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/ttyUSB0/tty/ttyUSB0
DEVNAME=/dev/ttyUSB0
MAJOR=188
MINOR=0
SUBSYSTEM=tty
USEC_INITIALIZED=702727509637
ID_BUS=usb
ID_VENDOR_ID=10c4
ID_MODEL_ID=ea60
ID_PCI_CLASS_FROM_DATABASE=Serial bus controller
ID_PCI_SUBCLASS_FROM_DATABASE=USB controller
ID_PCI_INTERFACE_FROM_DATABASE=XHCI
ID_VENDOR_FROM_DATABASE=Silicon Labs
ID_AUTOSUSPEND=1
ID_MODEL_FROM_DATABASE=CP210x UART Bridge
ID_VENDOR=Silicon_Labs
ID_VENDOR_ENC=Silicon\x20Labs
ID_MODEL=CP2102_USB_to_UART_Bridge_Controller
ID_MODEL_ENC=CP2102\x20USB\x20to\x20UART\x20Bridge\x20Controller
ID_REVISION=0100
ID_SERIAL=Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001
ID_SERIAL_SHORT=0001
ID_TYPE=generic
ID_USB_INTERFACES=:ff0000:
ID_USB_INTERFACE_NUM=00
ID_USB_DRIVER=cp210x
ID_PATH=pci-0000:00:14.0-usb-0:2:1.0
ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_1_0
ID_MM_CANDIDATE=1
ID_FOR_SEAT=tty-pci-0000_00_14_0-usb-0_2_1_0
DEVLINKS=/dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 /dev/serial/by-path/pci-0000:00:14.0-usb-0:2:1.0-port0
TAGS=:seat:systemd:uaccess:snap_cups_ippeveprinter:snap_cups_cupsd:
CURRENT_TAGS=:seat:systemd:uaccess:snap_cups_ippeveprinter:snap_cups_cupsd:

 

'프로그램 사용 > udev' 카테고리의 다른 글

udev  (0) 2021.01.05
udev rule  (0) 2014.12.18
udevinfo -> udevadm  (0) 2010.05.03
Posted by 구차니
프로그램 사용/kicad2026. 8. 14. 14:01

흐음.. 한번 써볼까

[링크 : https://wowon.tistory.com/350]

[링크 : https://wowon.tistory.com/352]

'프로그램 사용 > kicad' 카테고리의 다른 글

kicad mcp, flux.ai  (0) 2026.01.09
Kicad - open source PCB / circuit program  (11) 2010.07.08
Posted by 구차니

클로드님 경배합니다!!!

우클릭 - Follow - TCP Stream

 

아이씨 엑셀로 고생하고 있었는데 이런 좋은 기능이 ㅋㅋㅋ

Posted by 구차니

gpt가 nvidia jetson thor에서 돌릴만한거 추천

 

어우 47.1기가 ㄷㄷ

[링크 : https://huggingface.co/Lightricks/LTX-2.3]

 

모델에 따라 다르지만 얘도 용량이 ㅎㄷㄷ

[링크 : https://huggingface.co/Lightricks/LTX-Video]

[링크 : https://github.com/Lightricks/LTX-Video]

 

어우 24기가

[링크 : https://huggingface.co/google/gemma-3-12b-it-qat-q4_0-unquantized] << 사용허가 필요

 

 

[링크 : https://github.com/NVIDIA/Stable-Diffusion-WebUI-TensorRT]

     [링크 : https://developer.nvidia.com/blog/new-stable-diffusion-models-accelerated-with-nvidia-tensorrt/]

'프로그램 사용 > 서버 모니터링' 카테고리의 다른 글

prometheus lustre expoter  (0) 2020.11.16
kibana  (0) 2020.10.14
grafana  (0) 2020.10.14
zabbix  (0) 2020.10.14
prometheus  (0) 2020.10.14
Posted by 구차니