Certainly! Below is a Python test case generator for the given problem statement "Fissure Puzzle Hard":

```python
import random

def generate_fissure_puzzle_test_case():
    N = random.randint(3, 2047)
    if N % 2 == 0:
        N += 1  # Ensure N is odd
    
    grid = []
    for _ in range(N):
        row = ''.join(random.choice(['o', 'x']) for _ in range(N))
        grid.append(row)
    
    return (N, grid)

def print_test_case(N, grid):
    print(N)
    for row in grid:
        print(row)

# Generate a test case
N, grid = generate_fissure_puzzle_test_case()
print_test_case(N, grid)
```

### Explanation:
1. **Generate N**: We generate a random odd integer \(N\) in the range \([3, 2047]\). If a random number generated is even, we add 1 to make it odd.
2. **Generate Grid**: We create an \(N \times N\) grid where each cell is randomly chosen to be either 'o' (white) or 'x' (black).
3. **Print Test Case**: The function `print_test_case` prints the generated test case in the required format.

To use the test case generator:
1. Call `generate_fissure_puzzle_test_case()` to generate a random test case.
2. Use `print_test_case(N, grid)` to print the generated test case in the correct format.

By running this code, you will get a random test case for the problem "Fissure Puzzle Hard".